Où puis-je obtenir du matériel pour apprendre EBNF?
-
21-08-2019 - |
Question
Backus-Naur étendue: EBNF
Je suis très nouveau pour les concepts d'analyse syntaxique. Où puis-je obtenir suffisamment facile à lire et matériel suivre pour écrire une grammaire pour le boost :: bibliothèque d'esprit, qui utilise une grammaire similaire à EBNF?
Actuellement, je suis à la recherche dans EBNF de Wikipedia.
La solution
L'article de Wikipedia est exacte. Si vous avez accès, lisez certainement l'article original Wirth sur EBNF.
L'autre chose à savoir est que EBNF a été conçu pour rendre facile écrire à la main parseurs récursifs descente pour les langues dans lesquelles chaque construction syntaxique des mots-clés a identifier au début. Les accolades se traduisent par des boucles while
; crochets (STUFF en option) se traduit par if
et alternatives se traduisent par des déclarations ou if-then-else
case
. Si vous avez le luxe de la conception de votre langue de cette façon vous pouvez frapper un analyseur rapidement et donnent de bons messages d'erreur.
Le seul endroit où cela devient un peu fastidieux est quand vous avez une langue dans laquelle il y a des opérateurs infixes avec différents niveaux de priorité. Pour que vous voulez du papier de Dave Hanson . Peut-être la série de rapports tech Princeton a une version gratuite, et vous pouvez toujours regarder le code front de Hanson C fin .
Autres conseils
BNF elle-même est simple, mais vous devez vous habituer à la façon dont les auteurs du compilateur pensent. Ils ne sont pas nécessairement facile à lire, mais après des notes de cours de UC Berkeley et Stanford.
En outre, apprendre un peu sur la façon dont les moteurs d'expression régulière sont mises en œuvre pourraient aider. Essayez:. RE2
Eh bien, je pense que Wikipedia est la façon la plus simple pour deux raisons:
- Il énonce les points les plus pertinents sur l'article
- Il a des liens pour aller plus loin en bas de la page
Aussi je suggère la lecture de Standart BNF juste pour se familiariser avec l'idée sous-jacente.
Au moins, je commence toujours avec Wikipedia aussi, et il aide à presque toujours.