jflex / cup - ошибка: не удается найти символ {символ возврата (sym.EQEQ); - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь запустить пример на: http://jflex.de/manual.html#Example Я скопировал пример и изменил только имя файла / класса.

Кажется, что работает jflex нормально.

$ jflex -v -d output/ grammer/scanner.flex 
Reading "grammer/scanner.flex"
Constructing NFA : 148 states in NFA
Converting NFA to DFA : 
.........................................
45 states before minimization, 26 states in minimized DFA

В качестве следующего шага я пытаюсь скомпилировать вывод.Что бы я ни делал, я получаю эти ошибки.

$ javac -cp .*:dependancies/java-cup-11b.jar output/scanner.java 
output/scanner.java:788: error: cannot find symbol
            { return symbol(sym.IDENTIFIER);
                               ^
  symbol:   variable IDENTIFIER
  location: interface sym
output/scanner.java:793: error: cannot find symbol
            { return symbol(sym.INTEGER_LITERAL);
                               ^
  symbol:   variable INTEGER_LITERAL
  location: interface sym
output/scanner.java:803: error: cannot find symbol
            { return symbol(sym.EQ);
                               ^
  symbol:   variable EQ
  location: interface sym
output/scanner.java:808: error: cannot find symbol
            { return symbol(sym.PLUS);
                               ^
  symbol:   variable PLUS
  location: interface sym
output/scanner.java:819: error: cannot find symbol
                                   return symbol(sym.STRING_LITERAL,
                                                    ^
  symbol:   variable STRING_LITERAL
  location: interface sym
output/scanner.java:830: error: cannot find symbol
            { return symbol(sym.EQEQ);
                               ^
  symbol:   variable EQEQ
  location: interface sym
6 errors

Я что-то забыл?

http://czt.sourceforge.net/dev/java-cup-runtime/apidocs/java_cup/runtime/Symbol.html

1 Ответ

0 голосов
/ 15 октября 2018

С jflex вы генерируете лексер .

Вам также необходимо сгенерировать синтаксический анализатор с cup и добавьте его в свой путь к классам.

Вместо того, чтобы пытаться скомпилировать вещи вручную, я рекомендую использовать

  • либо Maven с jflex-maven-plugin и cup-maven-plugin.См. examples/simple/pom.xml
  • или bazel и правила jflex() и cup().См. examples/simple/BUILD

PR 452 - предложение переместить этот конкретный пример (в настоящее время находится в наборе регрессионных тестов) в каталог примеров.

...