Presentation laddar. Vänta.

Presentation laddar. Vänta.

2002-11-12F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.

Liknande presentationer


En presentation över ämnet: "2002-11-12F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri."— Presentationens avskrift:

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

2 F. Drewes, Inst. f. datavetenskap2 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

3 F. Drewes, Inst. f. datavetenskap3 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

4 F. Drewes, Inst. f. datavetenskap4 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, …)

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

6 F. Drewes, Inst. f. datavetenskap6 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:  * | + | |

7 F. Drewes, Inst. f. datavetenskap7 Flertydighet (2) Några vanliga tekniker för att undvika flertydighet Bindningsregler t.ex. ^ binder starkare än * som binder starkare än + Höger- eller vänsterassocierande operatorer t.ex. a + b + c betyder (a + b) + c eftersom + associerar till vänster Parenteser t.ex. (a + b) * (a + c) för att sätta bindningsreglerna ur kraft

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


Ladda ner ppt "2002-11-12F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri."

Liknande presentationer


Google-annonser