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.

Était-ce utile?

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.

est un analyseur EBNF en php.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top