作为词法分析器规则,我希望根据以下规则匹配字符串:
- 不能包含制表符(t)或换行符(r, n)
- 不能包含两个空格
- 可以包含所有其他字符,包括单个空格
我想出了:
STRING: ~[trn]*
但是我不知道如何防止连续空格
可以这样做:
STRING:
(
~[trn ] // non-whitespace
| ' ' ~[trn ] // or single space followed by non-whitespace
)+
' '? // may optionally end in a space (if desired, remote the line otherwise)
;