Antlr4: Olá, exemplo que não funciona no Windows após ter sido dividido em lexer e analisador separados

Criado em 16 jul. 2013  ·  3Comentários  ·  Fonte: antlr/antlr4

Tive os mesmos problemas que neste problema: https://github.com/antlr/antlr4/issues/147 e a correção também funcionou para mim.

Em seguida, tentei separar o lexer do analisador e recebo uma exceção quando tento executar o TestRig.

arquivo HelloL.g4:

// Define a grammar called Hello
lexer grammar HelloL;

Hello : 'hello' ;
ID : [a-z]+ ;             // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

arquivo HelloP.g4:

// Define a grammar called Hello
parser grammar HelloP;

options { tokenVocab=HelloL; }

r  : Hello ID ;         // match keyword hello followed by an identifier

Em seguida, executo estes comandos:

java -cp .;antlr-4.1-complete.jar org.antlr.v4.Tool HelloL.g4
java -cp .;antlr-4.1-complete.jar org.antlr.v4.Tool HelloP.g4

javac -cp .;antlr-4.1-complete.jar Hello*.java

java -cp .;antlr-4.1-complete.jar org.antlr.v4.runtime.misc.TestRig HelloP r -tree sample.txt

Então, recebo esta exceção:

Exception in thread "main" java.lang.ClassCastException: class HelloP
        at java.lang.Class.asSubclass(Unknown Source)
        at org.antlr.v4.runtime.misc.TestRig.process(TestRig.java:159)
        at org.antlr.v4.runtime.misc.TestRig.main(TestRig.java:143)

Conteúdo de sample.txt

hello parrt

Este é o conteúdo da pasta em que trabalho (os arquivos em lote contêm basicamente os comandos acima - mas também testei diretamente no shell):
image

Todos 3 comentários

Experimente

java -cp.; antlr-4.1-complete.jar org.antlr.v4.runtime.misc.TestRig Hello r -tree sample.txt

sem o P.

Ter

Receio que não funcionou:

Can't load Hello as lexer or parser

Já que dividi o arquivo "Hello.g4" em "HelloL.g4" (lexer) "HelloP.g4" (analisador)
não há mais uma gramática combinada "Hello", apenas um lexer (HelloL) e um analisador (HelloP).

Oh, certo. torne-o HelloLexer e HelloParser como os nomes dos seus itens, incluindo os nomes dos arquivos. por favor, não poste perguntas aqui.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dzavodnikov picture dzavodnikov  ·  5Comentários

willfaught picture willfaught  ·  9Comentários

nielsbasjes picture nielsbasjes  ·  9Comentários

nevetS picture nevetS  ·  7Comentários

miromannino picture miromannino  ·  5Comentários