2010-11-22 5 views
2

J'ai récemment commencé à apprendre Antlr et à télécharger AntlrWorks 1.4, qui inclut supposément Antlr 3.2. Maintenant, 3.2 est censé soutenir les règles de réécriture grammaires comme « -> » mais je n'ai pas été en mesure d'obtenir même le cas le plus simple que je pourrais construire travailler soit à partir de Lexer ou des règles de Parser:Antlr 3.2 Règles de réécriture

grammar TestRewrite; 

ab : a b -> a; 

a : A; 
b : B; 

A : 'a'; 
B : 'b'; 

Lorsque J'essaye de compiler ceci, j'obtiens l'erreur:

[11:26:29] error(100): TestRewrite.g:3:13: syntax error: antlr: TestRewrite.g:3:13: unexpected token: a 

Pourquoi est-ce. La construction semble assez simple: ab devrait générer un arbre où seul le nœud a est capturé. N'est-ce pas comme ça que tu le fais? Je ne peux pas le faire travailler avec rooting ('^') ou ignorer ('!') Non plus. J'ai très confus.

Répondre

8

options {output = AST;}

+0

@TimeHorse, les options de '{output = AST;}' doit être placé directement après votre 'grammaire TestRewrite; instruction'. –

+2

+1 pour être Terence Parr. Merci pour ANTLR! :) –

Questions connexes