Question

Je suis tombé sur la grammaire F77 yacc suivante: http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup .

Comment créer un analyseur Fortran 77 avec ce Happy ?

Pourquoi y a-t-il du C? / C ++? code dans ce fichier .y?

MISE À JOUR: Merci pour vos réponses!

Je joue avec deux nouvelles approches depuis un moment maintenant:

  1. extraire et modifier l’analyseur du paquet de code source fourni avec un article intitulé Fortran paramétrique ,
  2. écrire une grammaire de toutes pièces à l'aide de BNFC .

J'ai déjà les deux pour analyser des extraits de code simples. Je tiendrai les gens au courant si quelque chose d’utilisable devait exister au cours de ce siècle ^ __ ^ " héhé.

P / S: Je veux voir si je pourrais obtenir assez d’élan par moi-même pour lancer un projet de moteur de différenciation automatique qui remplacerait un moteur binaire dont nous dépendons pour le moment. Pour le divertissement dès les premières étapes: je regarde Love Shuffle ! C'est un J-Drama très agréable! Fortement recommandable ...

Était-ce utile?

La solution 4

Utilisez BNFC et écrivez votre propre grammaire à partir de rien! BNFC fonctionne à merveille et vous pouvez faire votre analyse exactement comme vous le souhaitez.

Autres conseils

C est l'action sémantique permettant de réduire la pile lorsque la syntaxe est lue. Ces actions sont en C car la définition est destinée à Bison / Yacc qui produit un fichier source en C.

Si vous souhaitez utiliser Happy, portez le fichier BNF à la syntaxe de définition Happy et écrivez votre sémantique en Haskell.

Toutefois, il ne reste que la pointe de l'iceberg pour obtenir quelque chose d'utile.

Si vous n'en avez pas déjà une copie, investissez dans le Livre du Dragon (Compilateurs: principes, techniques et outils de Aho, Lam, Sethi, Ullman - Pearson)

Pourquoi les autres réponses sont vraies au sens général, en ce sens que vous devez écrire vos propres actions pour faire quelque chose de significatif dans la définition de Yacc à laquelle vous avez lié ne comporte en réalité aucune action . associé aux règles de grammaire. Cela définit la fonction yyerror et du code permettant d’extraire les valeurs de yylval en fonction du type de jeton.

Si vous n’avez aucune idée de ce qu’est l’anomalie / yylval, vous devriez lire un tutoriel sur les bisons / flex. Le livre Dragon est également une bonne ressource si vous êtes plus sérieux à ce sujet. Un cours de Stanford sur les compilateurs flottant sur le Net, basé sur le livre, contient d'excellents documents.

Vous aurez besoin d’un compilateur AST qui puisse être construit de manière équivalente aux fragments C du fichier Yacc.

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