【问题标题】:ANTLR4: Symbols '*' and '+' in the expressionsANTLR4:表达式中的符号“*”和“+”
【发布时间】:2020-12-16 12:22:53
【问题描述】:

我正在学习如何通过 antlr 编写编译器。我环顾四周以了解它,所以我最终选择了this

我想问的是,每个符号在做什么? 表达式中的'?'、'+'和'*',它们是干什么的?

FLOAT
 : [0-9]+ '.' {_input.LA(1) != '.'}?
 | [0-9]* '.' [0-9]+
 ;

INT
 : [0-9]+
 ;

你们中有人知道从哪里开始学习这些表达吗?

【问题讨论】:

  • 这些被称为修饰符,是正则表达式的一部分。如果您还不知道,那么您肯定不应该编写解析器。
  • 这能回答你的问题吗? ANTLR4 '+' operation
  • 此问题应作为重复问题关闭。

标签: expression antlr antlr4 symbols


【解决方案1】:

这些符号是正则表达式的一部分,请参阅tutorial 关于 python 中的正则表达式(在所有语言中都非常相似)。
* 表示匹配前一个事物零次或多次,例如,a* 将匹配 , a, aa, ...
+ 表示匹配上一个事物一次或多次,例如,a+ 将匹配 a, aa, ...
? 表示匹配前一个事物零次或一次,例如,a? 将匹配 a

【讨论】:

  • 一件事,你会如何解释这个表达式:“[0-9]* '.' [0-9]+"?
  • [0-9] 部分的意思是“匹配 0 到 9 之间的任何字符”,也就是一个数字。所以[0-9]* '.' [0-9]+ 表示零个或多个数字后跟一个点,后跟一个或多个数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
相关资源
最近更新 更多