Je crée une spécification MGrammar pour analyser un pseudo-code à la recherche de bits d'information particuliers. J'ai la plupart de la spécification fonctionnant excepté 1 élément cruical.MGrammar pour analyser l'instruction IF
Le pseudo code supporte une syntaxe if-then-else et je n'ai pas réussi à trouver une manière satisfaisante de l'analyser. La construction exacte est ...
IF expression operator expression THEN
Statement1
Statement2
Statementn
ELSEIF expression operator expression THEN
Statement1
Statement2
Statementn
ELSE
Statement1
Statement2
Statementn
ENDIF
... Lorsque le Else et Elseif sont facultatifs. Ce que j'ai jusqu'ici est: `syntax Statement = r: ReturnClause => r |
i: IfClause => i |
ei: ElseifClause => ei |
e: ElseClause => e |
end: EndClause => fin |
v: Expression => v;
syntax IfClause = Si nom: Identifiant operator: Operator Then statement: Statement => If [nom, opérateur, Then [instruction]];
Syntaxe ElseifClause = Nom Elseif: Opérateur Identifiant: Operator Then statement: Statement => ElseIf [nom, opérateur, Then [instruction]];
syntax ElseClause = Instruction Else: Instruction => Else [instruction];
syntaxe EndClause = Endif; Cependant, la déclaration après le 'Then' et 'Else' n'est pas assez gourmande et ne capture que la première instruction de l'arbre d'analyse.
Est-ce que quelqu'un a essayé d'implémenter l'analyse d'une instruction If en utilisant MGrammar ou avez des suggestions?
est-ce encore en cours? –
J'ai dû m'éloigner de l'approche de MGrammer en raison des délais, mais si quelqu'un a une réponse, ce serait bien de la résoudre, car cela serait utile dans un futur travail. – Sam