2011-11-08 37 views
4

我在学习上下文无关语法,我不明白如何在C或C++等编程语言中识别表达式,因素和术语。身份表达,因素和术语?

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

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

我们可以有

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

非常感谢你。

+0

@AlexK这是正确的。但我想看看实际的一段代码中有什么表达,因素和术语。谢谢你。 – CppLearner

回答

12

“因素”,“术语”和“表达”概念来自数学,并不真正与编程语言有关。

因素事情你乘:

1*2*(3+4) 

条款是你加的东西:

1 + 2 + (3*4) 

和表达是整个结果

1 + 3 * 7 

在上下文语言解析您使用这些区别来组织运营商之间的优先级。所以一个表达式是由一个项的总和组成的,而一个项是由一个因子的乘积组成的,一个因子可以是一个数字或一个带括号的子表达式。

+0

您能否以这种方式定义“声明”(请注意添加示例) –

1

你的功课,大概也有沿的线编程语言如C或C(的子集)语法规范++,东西:

计划 - >表达|定义|声明
Expression->表达+比率
Expression->表达 - 期限
Expression->表达*因子
...
...
...
等等等等

然后,3 + j * 14是一个表达式,3是一个术语(根据上面的文法,通过a +连接的任何东西都是表达式或术语)j和14是因子 请注意,上面的语法是一个非常粗略的模仿真正的编程语言的语法可能看起来像什么。

1

好了,所以想我们有这样的语法:

计划 - >(定义|拉姆达)
Definitions->定义定义

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

Expression->期限 “+” 表达
Expression->表达式 “ - ” 期限
Expression->表达式 “*” 因子
期限 - > “3” | “14”
因子 - > “3” | “14”
表达 - > “3” | “14”

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

所以,在你的例子中:

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

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