Puneet Chandna
Puneet Chandna

Reputation: 1

Error on running CUP parser.cup file "Exception in thread "main" java.lang.NullPointerException"

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

Answers (0)

Related Questions