• Nie Znaleziono Wyników

Wykład 2 (Analiza leksykalna)

N/A
N/A
Protected

Academic year: 2021

Share "Wykład 2 (Analiza leksykalna)"

Copied!
69
0
0

Pełen tekst

(1)Paradygmaty  i  języki   programowania   Analiza  leksykalna   Skaner,  RE,  DAS,  NAS,  ε-­‐NAS    .

(2) Etapy  pracy  kompilatora   •  Character  stream   • [Lexical  Analyzer]   • token  stream  . • [Syntax  Analyzer]   • syntax  tree  . • [SemanFc  Analyzer]   • syntax  tree  . • [Intermediate  Code  Generator]   • intermediate  representaFon  . • [Machine-­‐Independent  Code  OpFmizer]   • intermediate  representaFon  . • [Code  Generator]  . • target-­‐machine  code  . • [Machine-­‐Dependent  Code  OpFmizer]   • target-­‐machine  code  . 26.02.2014  . JIP-­‐2  . 2  .

(3) Analizator  leksykalny  (AL),  skaner   • Skaner  –  pierwsza  składowa  kompilatora,  która   sprawdza  czy  można  podzielić  ciąg  symboli   wejściowych  (program  źródłowy)  na  jednostki   leksykalne  danego  języka  programowania,  a  więc   na  tzw.  tokeny.     • Skaner  nie  zwraca  uwagi  na  ‘śmieci’,  typy,   kolejność  tokenów,  niezadeklarowane  nazwy,  itd.   Te  zadania  należą  do  analizatora  składni   • Skaner  nie  ma  pojęcia  o  grupowaniu  i  organizacji   tokenów  ...   26.02.2014  . JIP-­‐2  . 3  .

(4) AL   • Tokeny  są  to  klasy  leksemów,  a  więc   podstawowych  elementów  języka   programowania.  Np.   – stałe  (int,  double,  char,  string,  itd)   – operatory  (arytmetyczne,  logiczne,  relacyjne)   – znaki  przestankowe   – słowa  kluczowe  języka  .   26.02.2014  . JIP-­‐2  . 4  .

(5) Schemat  skanera   while (i > 0)! i = i – 1;! wejście:  program   źródłowy  . Analizator   leksykalny  . Błędy   Analizator  rozpoznaje  poszczególne  elementy  tokenów:     7  lub  2345  –  stałe  całkowite   „jan”  lub  „lubliN”    -­‐-­‐  łańcuchy   siedem  lub  abc  –  zmienne     Elementy  te  noszą  nazwę  leksemów  i  należą  do  różnych  klas   tokenów  (znaczników).   26.02.2014  . JIP-­‐2  . wyjście  . while   (   i   >   0   )   i   =   i   -­‐   1   ;  . 5  .

(6) Budowa  skanera   • Dwie  metody  realizacji  . – wprost  (skaner  ad  hoc)   – wykorzystanie  wyrażeń  regularnych  i  automatów   skończonych  . • Ad  hoc:  program  oparty  na  pętli  (loop)  i   przełącznikach  (switch)  –  loop&switch   – należy  podać  definicje  tokenów   – czytać  wejście  z  lewa  na  prawo   – analizować  i  jeśli  OK  wówczas   – wykonać  odpowiedni  skok  w  programie   – Metoda  uciążliwa!  . 26.02.2014  . JIP-­‐2  . 6  .

(7) Deterministyczny  Automat  Skończony   • • • • . Przykład:  przełącznik;  dwa  stany:     początkowy,  końcowy;  funkcja     przejścia.   Zastosowania  DAS:  . naciśnij   off. on. naciśnij  . – Analiza  obwodów  cyfrowych   – Analizator  leksykograficzny  (rozbija  tekst  na  jednostki   leksykograficzne)   – Skanowanie  tekstu  w  celu  wyszukiwania  konkretnych   słow  (wyszukiwarki  sieciowe)   – Weryfikacja  systemów  o  skończonej  liczbie  stanów   (transakcje  elektroniczne  w  internecie)  . 26.02.2014  . JIP-­‐2  . 7  .

(8) DAS   • Przykład:  Wyszukiwanie,  modelowanie  łańcucha   (słowa)  else   start   e  . l  . s  . e  . • Ważną  rolę  w  teorii  automatów  skończonych  grają   – Gramatyki  (parser,  przetwarzanie  wyrażeń,  E-­‐>E+E   stwierdza,  że  wyrażenie  można  otrzymać  z  dwu  wyrażeń   połączonych  znakiem  plus;  gramatyki  bezkontekstowe)   – Wyrażenia  regularne  (wzorce  danych  tekstowych,   reprezentujące  łańcuchy;  UNIX:  [A-­‐Z][a-­‐z]*[  ][A-­‐Z][a-­‐z]*)  . 26.02.2014  . JIP-­‐2  . 8  .

(9) Podstawowe  pojęcia   • Alfabet:  Σ    –  skończony,  niepusty  zbiór  symboli   • Σ  =  {0,  1}  –  alfabet  binarny;   • Σ  =  {a,  b,  …,  z}  –  zbiór  małych  liter  . • Łańcuch  ,  słowo  –  skończony  ciąg  symboli   wziętych  z  jakiegoś  alfabetu   • Łańcuch  pusty  –  ε  –  słowo  o  zerowej  długości   (można  wybrać  z  każdego  alfabetu)   • Długość  słowa  –  liczba  symboli  niepustych   • Potęgi  alfabetu  –  Σk    -­‐-­‐  zbiór    słów  o  długości  k  nad   alfabetem  Σ   • Σ0  =  {ε},  Σ1  =  {0,  1},  Σ2  =  {0,  1,  00,  01,  10,  11},  …   26.02.2014  . JIP-­‐2  . 9  .

(10) Podstawowe  pojęcia   • Konwencja   – Małe  litery  z  początku  alfabetu  łac.:  a,  b,  c  …  -­‐   symbole   – Małe  litery  z  końca  alfabetu:  w,  x,  y,  z  –  słowa,   łańcuchy  . • Zbiór  wszystkich  łańcuchów  nad  Σ  oznaczamy   przez  Σ*  (*  -­‐  operator  Kleene’go)   – Σ*  =  Σ0  𝗨  Σ1  𝗨  Σ2  𝗨  …     26.02.2014  . JIP-­‐2  . 10  .

(11) Język   • Językiem  nazywamy  zbiór  łańcuchów  (słów)  wybranych  z  pewnego   alfabetu  Σ  (inaczej:  jeśli  Σ  jest  alfabetem  i  L⊆Σ*  to  L  nazywamy   językiem  nad  Σ)   • Przykłady   –  język  polski,  angielski,  C,  C++,  …     – Języki  abstrakcyjne  . • Język  ze  słów  złożonych  z  n  zer  i  n  jedynek   {ε,  01,  0011,  000111,  …}   • Język  ze  słów  złożonych  z  0  i  1  zawierających  tyle  samo  zer  i  jedynek  {ε,  01,   0101,  1010,  0110,  …}   • Zbiór  liczb  pierwszych  zapisanych  w  postaci  binarnej   {ε,  10,  11,  101,  111,  1011,  …}   • Σ*     • ∅  -­‐  zbiór  pusty   • {ε};  zauważmy,  że  ε  ≠  ∅    . 26.02.2014  . JIP-­‐2  . 11  .

(12) Problem   • Dla  danego  w∈Σ*  rozstrzygnąć  czy  w∈L(Σ)     Przykład.  Rozstrzygnięcie  czy  napis  należy  do   języka  liczb  pierwszych  Lp  jest  w  ogólności   trudnym  problemem  obliczeniowym     Praca  parsera!   26.02.2014  . JIP-­‐2  . 12  .

(13) Definicja  DAS   • A  =  (Q,  Σ,  δ,  q0,  F)   – A  =  nazwa  DAS   – Q  =  skończony  zbiór  stanów   – Σ  =  zbiór  symboli  wejściowych   – δ  =  funkcja  przejścia  (ze  stanu  do  stanu)   – q0=  stan  początkowy   – F    =  zbiór  stanów  końcowych   26.02.2014  . JIP-­‐2  . 13  .

(14) Definicja  DAS   • Notacja  wygodniejsza   – Diagram  przejść   – Tablica  przejśc  . • Przykład:  DAS  akceptujący  łańcuchy   zawierające  podłańcuch  01   1   qq0     0. 26.02.2014  . qq2     0. 0  . JIP-­‐2  . 1  . q q110    . 0,1  . 14  .

(15) DAS,  funkcja  przejścia   • Funkcja  przejścia  dla  DAS  z  poprzedniego   przykładu;    δ(stan,  symbol_wejściowy)  →stan;   0  . 1  .    →  q0   q2  . q0  . q1  . q1  .            q2   q2  . q1  .                  *q   1. 1   qq00    . 0  . qq02    . 1  . qqq q0  11       0. 0,1  .   (gwiazdka  oznacza  stany  akceptujące)   26.02.2014  . JIP-­‐2  . 15  .

(16) DAS  i  δ(stan,symbol)    . 26.02.2014  . JIP-­‐2  . 16  .

(17) Prosty  automat   A,  B,  C,  ...,  Z  .   start. stan  . 26.02.2014  . ". ". przejście  . JIP-­‐2  . st.  końcowy  . 17  .

(18) Prosty  automat   A,  B,  C,  ...,  Z  .   start. ". ". ’’AUTOMAT’’  . 26.02.2014  . JIP-­‐2  . 18  .

(19) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. (Przykład  pożyczony  z  kursu  cs143,  Stanford)   26.02.2014  . JIP-­‐2  . 19  .

(20) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 20  .

(21) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 21  .

(22) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 22  .

(23) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 23  .

(24) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 24  .

(25) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 25  .

(26) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 26  .

(27) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 27  .

(28) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 28  .

(29) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 29  .

(30) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 30  .

(31) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 31  .

(32) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 32  .

(33) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 33  .

(34) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 34  .

(35) A.  złożony,  NAS      . 0 start. 1. 0. 0. 1. 0, 1 1. 0 1 1 1 0 1 26.02.2014  . JIP-­‐2  . 35  .

(36) A.  złożony,  NAS   0.    . start. 0. 0. 1. 0, 1 1. Ponieważ  automat  znalazł  się   w  jednym  ze  stanów   końcowych,  więc  słowo   zostało  zaakceptowane   26.02.2014  . 1. 0 1 1 1 0 1 JIP-­‐2  . 36  .

(37) Rozszerzenie  δ   • Podstawa.  δ(q,  ε)  =  q   • Krok  indukcyjny.  Jeśli  w=xa,  to  δ(q,w)  =   δ(δ(q,x),a)     Aby  obliczyć  δ(q,w)  obliczamy  najpierw    δ(q,x)  –   czyli  stan,  w  którym  znajdzie  się  automat  po   przetworzeniu  wszystkich  symboli  w  poza   ostatnim.  Przypuśćmy,  że  stanem  tym  jest    p.   Wtedy  dokonując  przejścia  ze  stanu  p  na  wejściu   a,  a  więc  ostatnim  symbolu  w,  otrzymamy  δ(q,w),   a  zatem  δ(q,w)  =δ(p,a)     26.02.2014  . JIP-­‐2  . 37  .

(38) Przykład  DAS  . 1. Start. • L={w  |  w  ma   parzystą  liczbę   zer  i  parzystą                                               liczbę  jedynek}   • Zadaniem  DAS   jest  więc   liczenie  zer   i  jedynek   modulo  2     26.02.2014  . JIP-­‐2  . q0. 1. q1. 0. 0. 0. 0. q2. q3. 1. 0  . 1  . →*q0  . q2  . q1  .            q1  . q3  . q0  .            q2  . q0  . q3  .            q3  . q1  . q2   38  .

(39) Język  DAS   • Język  DAS  A=(Q,  Σ,  δ,  q0,  F)  oznaczamy  przez  L(A)   i  definiujemy  następująco:                                                                L(A)  =  {w  |  δ(q0,w)  ∈F}     • Język  DAS  A,  L(A),    to  zbiór  słów  w   przeprowadzających  stan  początkowy  automatu   q0  w  jeden  ze  stanów  akceptujących  (końcowych)   F.   • Jeśli  L=L(A)  dla  pewnego  A  to  L  nazywamy   językiem  regularnym.   26.02.2014  . JIP-­‐2  . 39  .

(40) Wyrażenia  regularne  (RE)   • Definicja:  RE  =  wyrażenie  regularne  (regular   expression,  regex)  . – RE  są  to  reguły  definiujące    słowa  lub  zbiory  słów   (łańcuchów)  należących  do  języka  formalnego  Σ*.    . • Reguły  składania  dla  x  i  y    należących  do  reg:   • konkatenacja  (złożenie):  xy   • alternatywa:  x|y  lub  x+y;  czytaj    x  lub  y   • powtarzanie:  x*,  x  powtórzone  zero  lub  więcej  razy  . • RE  . – każdy  symbol  alfabetu  Σ   – ε,  pusty  łańcuch   – jeśli  r  i  p  są  RE  to  również  (r),  rp,  r|p,  r*  są  RE   – nic  poza  tym  nie  jest  RE  . 26.02.2014  . JIP-­‐2  . 40  .

(41) Priorytet  operatorów  RE   • Priorytet  =  kolejność            (R)          R*          R1R2          R1|R2      lub    R1  +  R2     •   Przykład:  ab*c|d  należy  interpretować  jako   ((a(b*))c)|d   26.02.2014  . JIP-­‐2  . 41  .

(42) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  00  jako  podłańcuch            (0  |  1)*00(0  |  1)*  . 26.02.2014  . JIP-­‐2  . 42  .

(43) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  00  jako  podłańcuch            (0  |  1)*00(0  |  1)*                110011                  0000          01111011100111   26.02.2014  . JIP-­‐2  . 43  .

(44) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  tylko  trzy  symbole            (0|1)(0|1)(0|1)                011              110              111               26.02.2014  . JIP-­‐2  . 44  .

(45) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  tylko  trzy  symbole                (0|1){3}                011              110              111               26.02.2014  . JIP-­‐2  . 45  .

(46) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  przynajmniej  jedno  0                          1*00*1*                0111              11011              111011               26.02.2014  . JIP-­‐2  . 46  .

(47) Przykłady  prostych  RE   • Σ={0,1}  –  alfabet   • Łańcuch,  który  zawiera  jedno  0                          1*0?1*                0111              11011              111011               26.02.2014  . JIP-­‐2  . 47  .

(48) Zastosowania  RE   • Σ={a,  @,  .},  gdzie  a=dowolna  litera   • Adresy  e-­‐mail            aa*  (.aa*)*  @  aa*.aa*  (.aa*)*  . 26.02.2014  . JIP-­‐2  . 48  .

(49) Zastosowania  RE   • Σ={a,  @,  .},  gdzie  a=dowolna  litera   • Adresy  e-­‐mail            aa*  (.aa*)*  @  aa*.aa*  (.aa*)*            piotr@gmail.com          piotr.kowalski@umcs.lublin.pl      . 26.02.2014  . JIP-­‐2  . 49  .

(50) Zastosowania  RE   • Σ={a,  @,  .},  gdzie  a=dowolna  litera   • Adresy  e-­‐mail            aa*  (.aa*)*  @  aa*.aa*  (.aa*)*            piotr@gmail.com          piotr.kowalski@umcs.lublin.pl      . 26.02.2014  . JIP-­‐2  . 50  .

(51) Zastosowania  RE   • Σ={a,  @,  .},  gdzie  a=dowolna  litera   • Adresy  e-­‐mail            a+  (.a+)*  @  a+.a+(.a+)*            piotr@gmail.com          piotr.kowalski@umcs.lublin.pl      . 26.02.2014  . JIP-­‐2  . 51  .

(52) Zastosowania  RE   • Σ={a,  @,  .},  gdzie  a=dowolna  litera   • Adresy  e-­‐mail            a+  (.a+)*  @  a+  (.a+)+            piotr@gmail.com          piotr.kowalski@umcs.lublin.pl      . 26.02.2014  . JIP-­‐2  . 52  .

(53) Zastosowania  RE   • Σ={+,  -­‐,  0,...,9}   • Liczby  nieparzyste  ze  znakiem      (+|-­‐)?(0|1|2|3|4|5|6|7|8|9)*(1|3|5|7|9)            -­‐121          1157          +111115       26.02.2014  . JIP-­‐2  . 53  .

(54) Zastosowania  RE   • Σ={+,  -­‐,  0,...,9}   • Liczby  nieparzyste  ze  znakiem        (+|-­‐)?[0123456789]*[13579]            -­‐121          1157          +111115       26.02.2014  . JIP-­‐2  . 54  .

(55) Zastosowania  RE   • Σ={+,  -­‐,  0,...,9}   • Liczby  nieparzyste  ze  znakiem          (+|-­‐)?[0-­‐9]*[13579]            -­‐121          1157          +111115       26.02.2014  . JIP-­‐2  . 55  .

(56) Zastosowania  RE   • Przykład.  Σ  ={a,b}  –  alfabet   • łańcuchy  zawierające  tylko  nieparzystą  liczbę  a:  a(aa)*   • łańcuchy  zawierające  aa:  b*(aa)*b*  . – RE  [0-­‐9]*  realizuje  następujący  DAS    skończony   pokazany  poniżej  . 26.02.2014  . JIP-­‐2  . 56  .

(57) Zastosowania  RE   • Zadanie:  Podać  RE,  które  realizuje  automat   skończony  pokazany  poniżej  . 26.02.2014  . JIP-­‐2  . 57  .

(58) Inne  automaty  skończone   • NAS  =  niedeterministyczny  automat  skończony;  może  znaleźć  się   jednocześnie  w  wielu  stanach  wyjściowych   • ε-­‐NAS  =  NAS  reagujący  na  słowa  puste   – Przykład.  ε-­‐NAS  akceptujący  liczby  dziesiętne  postaci:   • opcjonalny  znak  +  lub  -­‐   • ciąg  cyfr   0,  1,  ...,  9   • kropka   Start. • ciąg  cyfr   q0 ε,+,- q1   ..   Liczba=(ewZnakCyfryKropkaCyfry)  . 0,  1,  ...,  9  . q2. 0,1,...,9. ε. q5. .. q4. • NAS  ze  stosem   • inne  . 26.02.2014  . 0,1,...,9. q3. JIP-­‐2  . 58  .

(59) Równoważność  NAS  i  RE  . NAS  akceptujący  język  RE          (0|1)*(000|111)(01)*  . 26.02.2014  . JIP-­‐2  . 59  .

(60) Równoważność  automatów  i  RE   ε-NFA. NFA. RE. DFA. (Hopcro‡  i  in.)  . 26.02.2014  . JIP-­‐2  . 60  .

(61) Reguły  McNaughtona-­‐Yamady-­‐Thompsona   1.  Ten  NFA  akceptuje  jeden  wybrany  symbol  alfabetu  . 2.  Ten  NFA  akceptuje  tylko  ε   ε. R. ε. S. 3.  Ten  ε-­‐NFA  akceptuje  r|s  . 4.  Ten  ε-­‐NFA  akceptuje  rs  . ε. R. ε ε. S. ε. 5.  Ten  ε-­‐NFA  akceptuje  r*  . ε. R. ε. ε 26.02.2014  . JIP-­‐2  . 61  .

(62) Od  RE  do  DAS   • Używając  podanych  reguł  (McNaughton-­‐ Yamada-­‐Thompson;  patrz:  Aho+)  możemy   zbudować  NAS  z  danych  RE,  następnie   przekształcić  NFA  w  DAS.  Alfabet  jest  cały  czas   ten  sam.    Języki  RE  i  tak  zbudowanego  DAS  są   identyczne  (Jak  to  zrobić  dokładnie?  Patrz  np.   Aho+  lub  HopcroM+)    . 26.02.2014  . JIP-­‐2  . 62  .

(63) Zadanie   • Pokaż,  że  NAS  pokazany   obok  (ß)  można   zastąpić  przez  DAS   pokazany  obok,  poniżej.   • Zapisz  RE  dla   otrzymanego  DAS    . 26.02.2014  . JIP-­‐2  . 63  .

(64) Przykład   Zamiana  wyrażenia  regularnego   ( 0|1 ) *1 ( 0|1 )   na  DAS  z   wykorzystaniem  reguł   Thompsona.  .    . ε. ε. 0. 1. ε. ε. (a). ε. ε.  . ε. ε. 0. 1. ε ε. ε. ε. (b). Star t. ε. ε. ε. ε. 1. 0. 1. ε. ε ε. ε. ε. ε. ε. ε. 0. 1. ε. ε. (c). 26.02.2014  . JIP-­‐2  . 64  .

(65) Wyrażenia  regularne  UNIXa   • UNIX  . .  –  dowolny  znak   *  -­‐  dowolna    liczba  wystąpień   ^  -­‐  początek  wiersza   $  -­‐  koniec  wiersza   \  -­‐  znosi  znaczenie  specjalne;  zwykły  znak   [abc]  –  któryś  ze  znaków  wypisanych   \(...\)  –  zapamiętywanie  ciągu  w  buforze   \<,  \>  początek,  koniec  słowa  . •  Standard  POSIX  . – klasy  znaków  w  nawiasach  [:  :]  . [:alnum:],  [:alpha:],  [:blank:],  [:cntrl:],  [:digit:],  [:graph:]  –  drukowalne   [:lower:],  [:print:],  [:punct:],  [:space:],  [:upper:],  [:xdigit:]    . 26.02.2014  . JIP-­‐2  . 65  .

(66) lex, flex  –  generator  skanerów   • Proces  przejścia  od  RE  do  automatów  (pokazany   krótko  powyżej)  jest  wykorzystywany  przez   narzędzie  lex    lub  flex,  służące  do  budowania   skanerów  –  programów  do  analizy  leksykalnej   innych  programów,  napisanych  w  jakimś  języku,   np.  C++  lub  Java.   • flex  pobiera  ciąg  wyrażeń  regularnych,     opisujących  dany  język,  buduje  automat   skończony  oraz  program  w  języku  C  służący  jako   analizator  leksykalny  programów  ...   26.02.2014  . JIP-­‐2  . 66  .

(67) Przykład  języka  programowania   • . Fortran  (pierwszy,  prymitywny  język  wyższego  poziomu)  . – zmienne:  dł.  5  znaków,  pierwszy  znak  litera;  duże  litery.  Zmienne  o  nazwach  zaczynających  się   na  i, j, k, l, m, n mają  domyślnie  typ  całkowity,  inne  rzeczywisty;   – Nie  potrzeba  deklarować  zmiennych  z  wyjątkiem  tablic.  Tablice  mogą  być  co  najwyżej  3   wymiarowe.   – Instrukcja  podstawienia  z  lewej  strony  zawiera  zmienną,  z  prawej  wyrażenie   – Struktury  kontrolne  . • bezwzględny skok: GOTO  <numer  instrukcji>   • skok obliczany: GOTO (20,30,40,50) I -­‐-­‐    I może  mieć  wartość  1,  2,  3  ,4  –  skok  do   instrukcji  o  numerze  20,  30,  40  lub  50   • IF (A+B-C/2) 10, 12, 14 -­‐-­‐  skok  do  10,  12,  14  w  zależności  od  wartości  w=A+B+C/2:  w<0  -­‐>   10,  w=0  -­‐>  12,  w>0  -­‐>  14   • Instrukcja  DO:  DO 21 K=1, N, 2 wykonuje  się  do  instrukcji  z  numerem  21  łącznie;  K  zmienia  się   co  2  od  1  do  N.  . – Brak  podprogramów  definiowanych  przez  użytkownika   – Ignorowane  są  odstępy;  np.  DIMENSIONDANE(1234) lub D I M E N S I O N D A N E (1234) lub  ładniej  DIMENSION DANE(1234) -­‐-­‐  deklaracja  tablicy  o  długości  1234   – Słów  kluczowych  można  używać  jako  nazw  np.  IF = 10 lub  DIMENSION DO(2)! • . Zadanie.  NAPISZ  schemat  skaneraJ  Pierwsze  skanery  to  skanery  ad  hoc.  Tutaj  nawet  RE,  czy   automaty  skończone  mają  problem.  . 26.02.2014  . JIP-­‐2  . 67  .

(68) Literatura   • A.  Aho,  R.  Sethi,  J.  Ullman,  Compilers:  Principles,  Techniques,  and  Tools.   Reading,  MA:  Addison-­‐Wesley,  1986;  jest  wydanie  polskie.   • J.  Hopcro‡,  J.  Ullman,  IntroducFon  to  Automata  Theory,  Languages,  and   ComputaFon,  Reading  MA:  Addison-­‐Wesley,  1979;  jest  wydanie  polskie..  . 26.02.2014  . JIP-­‐2  . 68  .

(69) Co  dalej?   • Character  stream   • [Lexical  Analyzer]   • token  stream  . • [Syntax  Analyzer]   • syntax  tree  . • [SemanFc  Analyzer]   • syntax  tree  . • [Intermediate  Code  Generator]   • intermediate  representaFon  . • [Machine-­‐Independent  Code  OpFmizer]   • intermediate  representaFon  . • [Code  Generator]  . • target-­‐machine  code  . • [Machine-­‐Dependent  Code  OpFmizer]   • target-­‐machine  code  . 26.02.2014  . JIP-­‐2  . 69  .

(70)

Cytaty

Powiązane dokumenty

Ciągnie się od morenowego jeziora Mamry na północy do rynnowego jeziora Nidzkiego i jeziora Roś na południu.. Oprócz głównych jezior do szlaku żeglownego należą też

W obrębie budowli oraz w jej bezpośrednim sąsiedztwie odkryto 11 dołków posłupowych, których przeznacze- nia nie udało się jednoznacznie zinterpretować — część z nich

Wyszukiwanie za pomocą formularza wyszukiwania zaawansowanego Panel podstawowy Możliwość przeszukania danej kategorii dokumentu.... Wyszukiwanie za pomocą formularza

Thus, neither the divergent fiscal treatment nor the price levels over the past decades can explain the fact that, since 2010, the development of house prices in the Netherlands

By using prototypes as a physical interface for the digital model, the different sub-problems become an integrated part of the digital design process.. By a reflective process

W drugim etapie dialogu skoncentrowano się na tematyce rozumienia relacji wiary do sakramentów i jedności Kościoła.. W trze­ ciej fazie dialogu zajęto się psychologią

kant van dierenvoeders. Helaas is het dossier van dit pro- ject zoekgeraakt en resteren slechts de hier afgebeelde presentatietekeningen en maquettefoto. Hier vindt de

Portal frame, two degrees offreedom (fig.. For the framed structure shown in fig. 8 determine the upper and the lower bound for the critical load factor. The