Question

J'aimerais analyser la source REXX afin de pouvoir analyser la structure du programme à partir de Java.

Je dois faire des choses comme normaliser les structures logiques équivalentes dans la source qui sont syntaxiquement différentes, trouver des déclarations de variables en double, etc.et j'ai déjà une expérience Java.

Existe-t-il des moyens plus simples de procéder que d'écrire une charge de code ?

Était-ce utile?

La solution

Si vous avez BNF Rexx grammaire, puis javacc peut vous aider à construire un AST (arbre de syntaxe abstraite) la représentation de ce code Rexx.

Plus précisément, javacc construira les classes Java qui:

  • analyser le code Rexx et
  • construit en fait l'AST.

Il y aurait encore « charge de code », mais vous ne pas être celui qui fait l'écriture des classes pour que l'analyseur de code Rexx. Seule sa génération.

Autres conseils

REXX n'est pas un langage facile à analyser avec les outils courants, notamment ceux qui attendent une grammaire BNF.Contrairement à la plupart des langages conçus par des personnes exposées au C, REXX n'a ​​pas de mots réservés, ce qui rend la tâche quelque peu compliquée.Chaque terme qui ressemble à un mot réservé n'est en réalité résolu que dans son contexte spécifique (par exemple., "PULL" n'est réservé que comme premier mot d'un PULL instruction ou le deuxième mot d'un PARSE PULL instruction - vous pouvez également avoir une variable appelée PULL ("PULL = 1 + 2")).De plus, les commentaires ont des effets très surprenants.Mais le Norme ANSI-REXX a la syntaxe complète et toutes les règles.

Jetez un oeil à ANTLR , il fait vraiment un beau travail de construction d'un AST, transformant etc. ... Il a un éditeur de Nice (de ANTLRWorks), est construit sur Java, et peut déboguer vos marcheurs analyseur / arbre pendant leur exécution dans votre application. Vraiment mérite d'être étudié pour tout type d'analyse syntaxique travail.

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