Я использую Antlr4 с JavaScript и C#. У меня есть правило, которое должно соответствовать, только если оно находится в начале строки. Если выражение начинается с REM , оно должно быть распознано как комментарий и, следовательно, скрыто. В противном случае это не комментарий.
- REM 1 + 1 является комментарием
- 1 + 1 REM 2 не является комментарием
Ниже код в моем Lexer является лучшим I мог сделать до сих пор. Но проблема в том, что это работает, только если есть новая строка, перед которой на самом деле это не так хорошо.
START_COMMENT : ('\r\n' | '\n' | '\f') ([R][E][M] | [;] | [@][ ]) ~[\r\n]* -> channel(HIDDEN);
Мне интересно знать, есть ли какая-то хитрость, чтобы сказать Лексеру, что правило должно совпадать, только если оно находится в начале строки и больше нигде?