身份表达,因素和术语?

时间:2011-11-08 18:51:35

标签: context-free-grammar

我正在学习无上下文语法,而且我不懂如何在C或C ++等编程语言中识别表达式,因子和术语。

假设我们有一个赋值语句 id:= E ,其中E是任何算术表达式。

什么是术语?什么是表达?什么是实际代码中的一个因素?

我们可以

int i = 3, j = 14
int i = 3 + j * 14;

非常感谢。

3 个答案:

答案 0 :(得分:14)

“因素”,“术语”和“表达”概念来自数学,与编程语言无关。

因素是你繁衍的事物:

1*2*(3+4)

条款是您添加的内容:

1 + 2 + (3*4)

表达式适用于整个结果

1 + 3 * 7

在无上下文的语言分析中,您可以使用这些区别来组织运算符之间的优先级。因此,表达式由术语的总和构成,术语由因子的乘积构成,并且因子是数字或带括号的子表达式。

答案 1 :(得分:1)

你的作业可能还有一个(C语言的子集)编程语言的语法规范,如C或C ++,类似于:

计划 - >表达|定义|宣言
表达式 - >表达式+期限
表达式 - >表达式 - 期限
Expression->表达*因子
...
...
...
等等。

然后,3 + j * 14是一个表达式,3是一个术语(任何通过+连接的东西是表达式或根据上面的语法的术语)j和14是因子 请注意,上面的语法非常粗略地模仿了真实编程语言的语法。

答案 2 :(得分:1)

好的,假设我们有这样的语法:

程序 - >(定义| lambda)
定义 - >定义定义

Definitions-> “int”定义“;” |“int”定义,定义“;”
定义 - >名称“=”表达式

Expression->术语“+”表达
表达式 - >表达式“ - ”术语
表达 - >表达“*”因子
条款而─> “中3” | “14”
因子> “中3” | “14”
表达 - >“3”|“14”

请注意,我的终端符号在引号中,我省略了名称被定义为字母和数字组合的部分以及以字母或下划线开头的下划线:)

所以,在你的例子中:

第1行int i = 3,j = 14;
第2行int i = 3 + j * 14;

我和j是姓名。 3,14(第1行)和3 + j * 14(第2行)是表达式。然后,在第2行,3是Term,j * 14是表达式,j是因子,14是因子:)