CUP$MDLParser$actions.errors = true;
Symbol symbol = (Symbol) current;
- report_error(filename+": Syntax error at line " +
-(symbol.line + 1) + ", column " + LineCount.getColumn(symbol.left) +
-": " + current.value, current);
+
+ //System.out.println("current.value = "+current.value + " " + current.value.equals("true"));
+ //System.out.println("current = " + current);
+
+ boolean isInteger = true;
+ try{
+ Integer.parseInt(current.value.toString());
+ } catch(NumberFormatException e) { isInteger = false;}
+
+ report_error(filename+":"+(symbol.line+1)+": Syntax error at column "
+ + (LineCount.getColumn(symbol.left)+1) +": " + current.value, current);
+
+ /*
+ if (current.value.equals("true") || isInteger)
+ System.out.println("Did you mean literal("+current.value+")?");
+ */
+
+ if (LineCount.getColumn(symbol.left) == 0)
+ System.out.println("Did you forget a semicolon on the previous line?");
+
+
+ System.out.println();
+ System.exit(0);
}
public void report_fatal_error (String message, Object info) {
RESULT = expr;
:}
- | LITERAL OPENPAREN literal:literal CLOSEPAREN
+ | literal:literal
{:
debugMessage(PRODSTRING);
ParseNode expr = new ParseNode("expr", parser.curLine(4));
expr.addChild(literal);
RESULT = expr;
:}
+
| expr:leftexpr LT expr:rightexpr
{:
debugMessage(PRODSTRING);
RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("boolean").addChild("false").getRoot();
:}
+
+ | NULL
+ {:
+ debugMessage(PRODSTRING);
+ RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("decimal").addChild("0").getRoot();
+ :}
| DECIMAL:dec
{:
RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("char").addChild(chr).getRoot();
:}
- | ID:literal
+ | LITERAL OPENPAREN ID:literal CLOSEPAREN
{:
debugMessage(PRODSTRING);
RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("token").addChild(literal).getRoot();