2009-09-17 7 views
0

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?

+0

est-ce encore en cours? –

+0

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

Répondre

0

Vous pouvez trouver une grammaire (presque) complète 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é "Archetype".

Peut-être qui aide: http://archetype.codeplex.com/