2015-12-06 2 views
0

Je travaille sur une grammaire pour un langage de programmation très simple et j'ai besoin de l'écrire sous la forme (E) BNF. J'ai vu de nombreux exemples de langages simples où, par exemple, seules les opérations sont autorisées sur des nombres/identifiants ou des exemples d'une plus grande complexité tels que The Syntax of C in Backus-Naur Form. Ce dont j'ai besoin (et oui j'ai cherché avec Googled un peu) est un exemple plus simple que je peux jeter un coup d'oeil pour que je puisse comprendre la hiérarchie générale. Quelque chose avec des déclarations variables, des déclarations de fonctions, des boucles, des affectations, des opérations, etc., mais sur une échelle beaucoup plus petite et plus simple que tout C écrit en BNF.Langage de programmation simple sous forme EBNF

Je ne demande pas à quelqu'un d'en écrire un ici car ce serait un gros travail, mais si quelqu'un pouvait me diriger vers une ressource, je serais très reconnaissant. Je comprends les règles d'écriture d'une langue dans BNF; Je n'ai tout simplement pas l'impression de savoir par où commencer et comment commander la langue.

+0

Ce que vous semblez demander est une recommandation pour une ressource hors site, ce qui rend la question hors sujet. Pour certaines langues plus simples, considérons ['bc'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html) et [' awk'] (http://pubs.opengroup.org/ onlinepubs/9699919799/utilities/awk.html). Chacun a ses propres idiosyncrasies, mais ils sont nettement plus simples que C linguistiquement. Vous pourriez également envisager de rechercher une grammaire BNF de Pascal - ou peut-être les langues apparentées telles que Modula-N (pour N dans {1, 2, 3}) ou Oberon, mais pas Ada. –

+0

Merci. La définition grammaticale de bc était réellement utile! – user3255596

+0

Oberon est "Pascal évolué", et est célèbre pour sa brièveté de syntaxe. Vous pouvez voir une grammaire Oberon complète et fonctionnelle ici: http://www.semanticdesigns.com/Products/DMS/DMSParsers.html –

Répondre

0

(Il semble que vous avez trouvé ce que vous cherchez, mais vous - ainsi que les futurs lecteurs -. Peut trouver le suivant utile)

Le livre Basics of Compiler Design par Torben Mogensen Ægidius de l'Université de Copenhague contient un langage très simple à utiliser pour implémenter un compilateur et un interpréteur. Il est BNF est la suivante:

Program --> Funs 

Funs --> Fun 
Funs --> Fun Funs 

Fun --> TypeId (TypeIds) = Exp 

TypeId --> *int* **id** 
TypeId --> *bool* **id** 

TypeIds --> TypeId 
TypeIds --> TypeId , TypeIds 

Exp --> num 
Exp --> id 
Exp --> Exp + Exp 
Exp --> Exp = Exp 
Exp --> if Exp then Exp else Exp 
Exp --> id (Exps) 
Exp --> let id = Exp in Exp 

Exps --> Exp 
Exps --> Exp , Exps 

Il est très petit et un langage très facile d'écrire un interprète contre - vous ne pouvez pas aller plus petit et plus pragmatique en ce qui concerne ce que vous voulez faire. Je recommande à la fois le livre et les exercices qu'il contient.