jflex / cup - error: cannot find symbol { return symbol(sym.EQEQ);

2k Views Asked by At

I'm trying to run the example on: http://jflex.de/manual.html#Example I've copied the example and only changed the file/class name.

Running jflex seems to work fine.

$ 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

As a next step I try to compile the output. No matter what I do, I get these errors.

$ 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

I'm I forgetting something?

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

1

There are 1 best solutions below

0
On

With jflex, you are generating the lexer.

You also need to generate the parser with cup and add it to your classpath.

Rather than trying to compile things by hand, I recommend you use

  • either Maven with the jflex-maven-plugin and cup-maven-plugin. See examples/simple/pom.xml
  • or bazel and the jflex() and cup() rules. See examples/simple/BUILD

PR 452 is a proposal to move this particular example (currently in the regression testsuite) into the examples directory.