Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.1 Syntaksbeskrivelse Syntaksdiagrammer og EBNF-notation
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.2 Emner Syntaks og semantik Syntaktiske entiteter og syntaktiske kategorier Syntaksdiagrammer EBNF-notation Rekursion i syntaksbeskrivelser
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.3 Syntaks og semantik (1) På dansk kombinerer vi bogstaver til ord, ord og skilletegn til sætninger, sætninger til afsnit,... For at resultatet skal blive acceptabelt, er det en forudsætning at vi benytter ord der er i sproget konstruerer meningsfyldte sætninger –grammatisk –indholdsmæssigt
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.4 Syntaks og semantik (2) Syntaks form / grammatik Semantik indhold / betydning Korrekthedsniveauer syntaktisk korrekthed semantisk korrekthed logisk korrekthed (sandt)
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.5 Korrekthedsniveauer (1) En mand stor hus sø Farveløse grønne ideer sover rasende Jordnødden åd elefanten Elefanten åd jordnødden Min bil er rød Det er torsdag i dag
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.6 Korrekthedsniveauer (2) Syntaktisk korrekt Semantisk korrekt Logisk korrekt NejJa Nej JaNej
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.7 Tvetydighed Han elskede pigen på banegården Korrekt at lade Arnesen skyde Hun var skidefuld og på rulleskøjter
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.8 Demonstration Hornorkester fanebærerdemonstrant Hornorkester trompetist basunist t t b t f f d t b t f t f t b d t t b t b f d d
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.9 Syntaksdiagrammer (1) Et syntaksdiagram er et navngivent diagram bestående af en række ‘pile’ afbrudt af symboler og af navne på syntaksdiagrammer. Et syntaksdiagram definerer alle de følger af symboler som opnås ved at gennemløbe det i pilenes retning. Symboler kaldes syntaktiske entiteter; diagrammer kaldes syntaktiske kategorier.
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.10 Syntaksdiagrammer (2) Syntaktiske entiteter (symboler) Syntaktiske kategorier (diagrammer) Pile
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.11 EBNF-notation for picodansk Sætning ::= Grundled Udsagnsled Genstandsled Grundled ::= “en” [ Adjektivliste ] Navneord Udsagnsled ::= spiser” | “kører” | “løber” | “skovler” Genstandsled ::= Grundled Adjektivliste ::= Adjektiv { “,” Adjektiv } Adjektiv ::= “stor” | “rød” | “tung” | “mager” | “udspekuleret” Navneord ::= “mand” | “bil” | “hest” | “skovl”
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.12 EBNF-notation Syntaktiske entiteter Syntaktisk kategori Sammenstilling (efter hinanden) Valg 0 eller 1 forekomst af... 0 eller mange forekomster af... “...” Navn | [... ] {... }
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.13 Præcedensregler 1. (sammenstilling) 2. | (valg) Som sædvanligt kan parenteser bruges til at ‘overrule’ præcedensreglerne. seq ::= “a” | “b” [ “c” ] seq ::= (“a” | “b”) [ “c” ]
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.14 EBNF og syntaksdiagrammer “...” Navn x y x | y [ x ] { y } xy x y x x
Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.15 E ::= E op E | “(“ E “)” | Tal op ::= “+” | “-” | “’” | “/” Tal ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9” Regneudtryk og parsetræ * 9 E EEop EE * +TT 37 9