«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Oporavak od grešaka (CUP)

by Vaso Putica
nedelja, 22. januar 2006 - 22:10.

Je l' ima neko ideju zašto dobijam grešku "Couldn't repair and continue parse Object" sa ovom gramatikom i test programom? Zar ne bi trebalo da "main_function ::= BEGIN error END" odradi oporavak pošto "error SEMI" ne može jer nedostaje ; iza x?


// CUP ----------------------------------
start with program;

program ::= prog_decl main_function;
prog_decl ::= PROGRAM ID SEMI;

main_function ::= BEGIN END;
main_function ::= BEGIN statements END;
main_function ::= BEGIN error END {: System.out.println("main_function_error");
:};


statements ::= statement statements;
statements ::= statement;


statement ::= ID EQ INTEGER_LITERAL SEMI;
statement ::= error SEMI {: System.out.println("statement error"); :};



// microJava ----------------------------------
program pp;
begin
z=4;
x
end.