MGrammar pour analyser l'instruction IF
-
08-07-2019 - |
Question
Je suis en train de créer une spécification MGrammar pour analyser un pseudo-code à la recherche d'informations particulières. La plupart des spécifications fonctionnent sauf un élément essentiel.
Le pseudo-code prend en charge une syntaxe if-then-else et je suis incapable de trouver un moyen satisfaisant de l’analyser. La construction exacte est ...
expression d'opérateur d'expression IF ALORS
Statement1
Statement2
Statementn
ELSEIF expression opérateur expression THEN
Statement1
Statement2
Statementn
ELSE
Statement1
Statement2
Statementn
ENDIF
... Où Else et Elseif sont facultatifs.
Ce que j'ai jusqu'ici, c'est:
`syntaxe Statement = r: ReturnClause = > r
i: IfClause = > i
ei: ElseifClause = > ei
e: ElseClause = > e |
end: EndClause = > fin
v: expression = > v;
syntaxe IfClause = Si nom: Opérateur d'identifiant: Opérateur Puis instruction: Instruction = > Si [nom, opérateur, alors [déclaration]];
syntax ElseifClause = Nom Elseif: Identifiant opérateur: Opérateur Puis instruction: Instruction = > ElseIf [nom, opérateur, Then [déclaration]];
syntax ElseClause = Else statement: Statement = > Else [déclaration];
syntaxe EndClause = Endif; `
Cependant, la déclaration après "Then" et "Else" n'est pas assez gourmande et ne capture que la première déclaration de l'arbre d'analyse.
Quelqu'un a-t-il essayé de mettre en œuvre l'analyse syntaxique d'une instruction If à l'aide de MGrammar ou avez-vous des suggestions ??
La solution
Vous pouvez trouver une grammaire (presque) complète en C # 4.0 dans le projet archétype sur codeplex. Dan Vanderboom l’a écrit en préparation de son nouveau code de langue appelé "Archétype".
Peut-être que cela aide: http://archetype.codeplex.com/