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.
@TimeHorse, les options de '{output = AST;}' doit être placé directement après votre 'grammaire TestRewrite; instruction'. –
+1 pour être Terence Parr. Merci pour ANTLR! :) –