Abstracte syntaxis: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
k Titel van Abstracte syntax gewijzigd in Abstracte syntaxis: Syntax is Engels. Syntaxis is Nederlands.
Geen bewerkingssamenvatting
Regel 1:
'''Abstracte syntaxsyntaxis''' is een representatie van data (vaak een bericht dat over een [[communicatie]]kanaal wordt verstuurd of een [[computerprogramma]] dat [[Compilatie (informatica)|gecompileerd]] wordt) die onafhankelijk is van machine-afhankelijke [[Datastructuur|datastructuren]] en coderingen en ook van de werkelijke representatie van de data (in het geval van compileren de ''concrete syntaxsyntaxis'' genoemd en bij communicatie de ''transfer syntaxtransfersyntaxis'').
 
In een [[Compilatie (informatica)|compiler]] wordt een computerprogramma gerepresenteerd met behulp van abstracte termen zoals ''identifier'' en ''variable''. Deze representatie is onafhankelijk van de syntaxsyntaxis van de [[broncode]] (de concrete syntaxsyntaxis) van het programma dat gecompileerd wordt, ook al zullen deze vaak vergelijkbaar zijn. Een [[syntaxisboom]] is vergelijkbaar met een [[abstracte syntax-boomabstractesyntaxisboom]] maar het kan ook zaken als [[haakje]]s bevatten die syntactisch gezien wel van belang zijn. Dit soort zaken worden in de abstracte syntax-boomabstractesyntaxisboom impliciet gelaten.
 
==Voorbeeld==
 
In [[Functionele programmeertaal|functionele programmeertalen]] kan de abstracte syntaxsyntaxis vaak rechtstreeks geconstrueerd worden aan de hand van de [[formele grammatica]]. Stel we hebben een formele grammatica met de volgende [[productieregel]]s:
 
:<math>S \rightarrow aS</math>
Regel 19:
:<code>CaseA (CaseB (CaseA CaseC) CaseC)</code>
 
Deze representatie kan ook gezien worden als een [[boomstructuur]] waarbij <code>CaseA</code> de wortel is met <code>CaseB</code> als kind (en idem voor de andere componenten). Dit wordt de [[abstracte syntax-boomabstractesyntaxisboom]] genoemd.
 
De conversie tussen de abstracte syntaxsyntaxis en de concrete syntaxsyntaxis is vrij eenvoudig:
 
<pre>
Regel 30:
</pre>
 
Voor het omzetten van de concrete syntaxsyntaxis naar abstracte syntaxsyntaxis wordt een [[parser]] gebruikt.
 
==Zie ook==