Reputation: 1
I am getting an error on running java -jar java-cup-11b.jar -parser Parser -symbols sym parser.cup
Error :
Error: Syntax error @ Symbol: SEMI (unknown:9/18(-1) - unknown:9/19(-1))
Error : Internal error: Unexpected exception
Exception in thread "main" java.lang.NullPointerException
at java_cup.runtime.lr_parser.symbl_name_from_id(lr_parser.java:456)
at java_cup.runtime.lr_parser.report_expected_token_ids(lr_parser.java:446)
at java_cup.runtime.lr_parser.syntax_error(lr_parser.java:433)
at java_cup.runtime.lr_parser.parse(lr_parser.java:725)
at java_cup.Main.parse_grammar_spec(Main.java:496)
at java_cup.Main.main(Main.java:196)
my parser.cup code :
// Import necessary packages
import java_cup.runtime.Symbol;
// Terminal tokens
terminal SEMICOLON, BINARY_TERMINATOR; // Ensure these match exactly with scanner.jflex
terminal Integer NUMBER;
// Non-terminals
non terminal start;
non terminal Integer expression;
// Start symbol
start ::= expression SEMICOLON
{: System.out.println("Output in decimal: " + $1); :}
| expression BINARY_TERMINATOR
{: System.out.println("Output in binary: " + Integer.toBinaryString($1)); :};
// Expression rules
expression ::= NUMBER
{: RESULT = $1; :};
my scannner.jflex code :
%%
// JFlex scanner specification
%{
import java_cup.runtime.Symbol; // Import necessary classes for CUP integration
%}
// Token definitions
SEMI = ";"
BINARY_TERM = "; b"
// Define tokens
%%
// Rules section
<YYINITIAL> {
{BINARY_TERM} { return new Symbol(sym.BINARY_TERMINATOR); }
{SEMI} { return new Symbol(sym.SEMICOLON); }
[0-9]+ { return new Symbol(sym.NUMBER, Integer.parseInt(yytext())); }
[ \t\n\r]+ { /* Skip whitespace */ }
. { System.out.println("Unexpected character: " + yytext()); }
}
I updates my parser.cup code multiple times using chatgpt but it didnt work, then i got to know that somtimes the cup dosent work with modern jdk versions , so I used jdk 8 version insteas of 21 , but the issue is still there
Upvotes: 0
Views: 14