Я использую JavaCC для создания лексера и парсера, и у меня есть следующий код:
TOKEN:
{
< #DIGIT : [ "0"-"9" ] >
|< INTEGER_LITERAL : (<DIGIT>)+ >
}
SimpleNode IntegerLiteral() :
{
Token t;
}
{
(t=<INTEGER_LITERAL>)
{
Integer n = new Integer(t.image);
jjtThis.jjtSetValue( n );
return jjtThis;
}
}
Следовательно, он должен принимать только целые числа, но он также принимает 4. или 4 %%%%%% и т. Д.
IntegerLiteral
- начальный символ для вашего парсера, вам нужно добавить<EOF>
послеt=<INTEGER_LITERAL
. - person Theodore Norvell   schedule 01.05.2014(<DIGIT>)+
. Это не так уж и много. - person Theodore Norvell   schedule 05.05.2014