Hol*_*Cat 10 c++ language-lawyer
考虑x声明中是否int x;有表达式。
我以前以为肯定不是,但是语法id-expression这里把变量名称为an。
那么有人可能会争辩说 onlyexpression是一个表达式,而不是??-expression。但在 中1 + 2,既不匹配1也不2匹配,因为它们分别是additive-expression和multiplicative-expression,而不是expressions。但常识告诉我们,这些也应该被称为表达式。
我们可以决定any ??-expression(包括expression)是一个表达式,但声明中的变量名也匹配。
我们可以将表达式定义为 any ??-expressionexcept id-expression,但这感觉相当随意。
表达式的正确语法定义是什么?其声明中的变量名是否是表达式?
在查看了 @LanguageLawyer ( 1 , 2 )提供的链接后,我确信共识是这是id-expression一个用词不当,并且并不总是一个表达式(例如,它不是声明中的表达式)。
那么,如果解析树中至少有一个源子字符串被调用,则源子字符串就是一个表达式:
expression,或者*-expression1但不是id-expression,并且该父级完全扩展到该子字符串,仅此而已。
这与 @nm 提出的定义相同,只是我也允许“*-expression而不是id-expression”节点。
1 *是任何字符串的通配符。
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |