1 / 8

Föreläsning 4: Syntaxdefinition

Föreläsning 4: Syntaxdefinition. Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri syntax Syntaxgrafer. Formell syntaxdefinition. Syntaxen för ett språk definierar mängden av alla strängar som betraktas som program (där man bortser från betydelsen).

Download Presentation

Föreläsning 4: Syntaxdefinition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 4: Syntaxdefinition • Formell syntaxdefinition • Lexikalisk och kontextfri syntax • Flertydighet i kontextfri syntax • Syntaxgrafer F. Drewes, Inst. f. datavetenskap

  2. Formell syntaxdefinition Syntaxen för ett språk definierar mängden av alla strängar som betraktas som program (där man bortser från betydelsen). • Man skiljer alltså syntaxen (formen) från semantiken (betydelsen) • Syntaktisk korrekthet är nödvändig men inte tillräcklig för semantisk korrekthet • Att definiera syntax är betydligt enklare än att definiera semantik F. Drewes, Inst. f. datavetenskap

  3. Formell syntaxdefinition • Ett programspråk är ett formellt språk syntaxen kan definieras formellt (=otvetydigt), t.ex. med grammatiker • Fördelar med en formell syntaxdefinition • är exakt • ”standard” för datavetare, alla vet hur den ska läsas • kompatibla kompilatorer • automatisk generering av kompilatorer • inget tvivel om korrekthet/inkorrekthet av program • algoritmer och resultat från teorin för formella språk kan användas • gör det enklare att definiera semantiken F. Drewes, Inst. f. datavetenskap

  4. Lexikalisk och kontextfri syntax • Syntaxdefinitioner brukar delas upp i två nivåer: • lexikalisk syntax • kontextfri syntax • Den lexikaliska nivån består av enkla syntaktiska kategorier för identifierare, tal, nyckelord, …Centrala begrepp: • token = en av kategorierna (t.ex. integer) • lexem = en sträng i en av kategorierna (t.ex. 5317) • På den kontextfria nivån behandlas de syntaktiska kategorierna som har en högre komplexitet(satser, uttryck, …) F. Drewes, Inst. f. datavetenskap

  5. uttryck uttryck uttryck uttryck sats sats sats sats sats sats sats sats kontextfria språk lexem (token INTEGER) lexem (token INTEGER) lexem (token LESS_THAN) lexem (token LESS_THAN) reguljära språk lexem (token IDENTIFIER) lexem (token IDENTIFIER) lexem (token LEFT_PAR) lexem (token LEFT_PAR) lexem (token IF_TOKEN) lexem (token IF_TOKEN) Exempel if ( count < 3 * x ) { count++; x = x / 2; } F. Drewes, Inst. f. datavetenskap

  6. Flertydighet Den kontextfria syntaxen är flertydig om det finns ett program som har fler än ett deriveringsträd (= fler än en vänsterderivering) • Vänsterderivering = derivering där man i varje steg ersätter den första icketerminalen i strängen • En flertydig grammatik är inte felaktig i sig men ger upphov till problem när semantiken definieras • Exempel: <expr>  <expr> * <expr> | <expr> + <expr> | <identifier> | <integer> F. Drewes, Inst. f. datavetenskap

  7. Flertydighet(2) Några vanliga tekniker för att undvika flertydighet • Bindningsreglert.ex. ^ binder starkare än * som binder starkare än + • Höger- eller vänsterassocierande operatorert.ex. a + b + cbetyder (a+ b) + ceftersom +associerartill vänster • Parentesert.ex. (a + b) * (a + c) för att sätta bindningsreglerna ur kraft F. Drewes, Inst. f. datavetenskap

  8. if_stmt if ; end if then stmts else cond  stmts terminal cond  icketerminal stmts else_if  else_if Syntaxgrafer (ett exempel) Syntaxgrafer är ekvivalent med kontextfria grammatiker. Adas if-then-else: F. Drewes, Inst. f. datavetenskap

More Related