Lexer Rule 避免一个字符多次出现

Lexer Rule To avoid more than one occurrence of a character

我想为 antlr4 编写词法分析器规则来检查几个用户 ID。我需要检查字符串的开头是否不包含任何点,它们可能在中间有点但点不能连续出现。谁能帮我出点主意?

如果点也不能出现在末尾,那么你可以使用这样的东西(可能 VALID 的不同定义:

VALID:  [A-Za-z0-9]
USERID: VALID ('.'? VALID)*

如果你想在末尾添加一个点,你可以添加:

USERID: VALID ('.'? VALID)* '.'?