Redigerer
Backus-Naur form
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Backus–Naur Form (BNF)''' er et formelt [[metaspråk]] for å uttrykke kontekstfrie grammatikker som for eksempel [[syntaks]]en til [[høynivåspråk]]. Formen er oppkalt etter [[John Backus]] og [[Peter Naur]], som utviklet BNF for å kunne bruke kontekstfrie grammatikker til å beskrive syntaksen til programmeringsspråk, den ble brukt for første gang i ''[[Algol 60|Algol 60 Report]]'' 1960.<ref name="repalgol60"/> == Oppbygning == Et program består vanligvis av synlige tegn som finnes på et tastatur, disse kalles ''terminalsymboler''. BNF anvender avledningsregler for å danne ''syntaktiske variable''. Her blir tegnfølgen ::= brukt for å notere en definisjon, | (pipe) for å notere alternativer og spisse parenteser < og > for å betegne en syntaktisk variabel. Terminalsymbolene utgjør grunnelementene i BNF, alle definisjonene baserer på disse. Eksempler på definisjoner: <siffer> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <tall> ::= <siffer> | <siffer> <tall> Her er den første linjen en enkel definisjon med terminalsymboler som alternativer, den andre en kjededefinisjon som bygger på den første og den tredje er en rekursiv definisjon. De første defisjonene i Algol 60:<ref name="repalgol60"/> <empty> ::= <letter> ::= a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z| A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z <digit> ::= 0|1|2|3|4|5|6|7|8|9 <logical value> ::= '''true'''|'''false''' I definisjonen av <logical value> er terminalsymbolene ikke tastaturtegn men hele ord, i BNF-notasjonen kjennetegnet med fet skrift. I praktiske implemetasjoner kunne slike symboler kjennetegnes for eksempel ved at de ble skrevet understreket som <u>true</u> og <u>false</u>. == Se også == [[SDF]] er en alternativ metasyntakser for samme formål, men som har sitt opphav i [[universell algebra]]. == Referanser == <references><ref name="repalgol60">[http://www.softwarepreservation.org/projects/ALGOL/report/Algol60_report_CACM_1960_June.pdf Report on the Algorithmic Language ALGOL 60. 1960.]</ref></references> {{stubb}} {{Autoritetsdata}} [[Kategori:Formelle språk]] [[Kategori:Kompilatorer]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Backus-Naur form
(
rediger
)
Mal:Autoritetsdata
(
rediger
)
Mal:Spire
(
rediger
)
Mal:Spire/stil.css
(
rediger
)
Mal:Stubb
(
rediger
)
Modul:Article
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Denne siden er medlem av 1 skjult kategori:
Kategori:Spirer 2024-04
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon