К сожалению JavaCC не поддерживает ^
для начала строки и $
для конца строки.
Вы можете использовать лексические состояния. Используйте состояние по умолчанию *
для начала строки. Например:
// If at the start of a line, skip a # and all other charaters on the line.
// Stay in the same state.
<*> SKIP : { <COMMENT : "#" (~["\n"])* ("\n") > : * }
// Skip any newlines and return to (or stay in) the start of line state.
<*, MIDLINE> SKIP : { <NEWLINE : "\n" > : * }
// Skip any other white space.
<*, MIDLINE> SKIP : { <WHITESPACE : " " | "\t" > : MIDLINE }
// If not at the start of line, a # is a token.
<MIDLINE> TOKEN : { <HASH : "#" > : MIDLINE }
// Numbers can be at the start of a line or the middle of a line.
// After a number, we are no longer at the start of line.
<*, MIDLINE> TOKEN : { <NUMBER : ["0"-"9"]+ > : MIDLINE }
и т. Д.