如何防止Antlr规则中的两个后续空格?

时间:2014-07-24 10:06:52

标签: antlr grammar antlr4

作为词法分析器规则,我想根据这些规则匹配字符串:

  • 不得包含制表符(\ t)或换行符(\ r,\ n)
  • 不得包含两个后续空格
  • 可以包含所有其他字符,包括单个空格

我想出了:

STRING: ~[\t\r\n]*

但我不知道如何阻止后续空间。

1 个答案:

答案 0 :(得分:1)

这样做:

STRING: 
     (
        ~[\t\r\n ] // non-whitespace
     | ' ' ~[\t\r\n ] // or single space followed by non-whitespace
     )+
     ' '?  // may optionally end in a space (if desired, remote the line otherwise)
     ;