我正在学习无语境的语法,我不理解如何在C或C等编程语言中识别表达式,因子和术语 .
假设我们有一个赋值语句 id := E ,其中E是任何算术表达式 .
什么是术语?什么是表达?什么是实际代码中的一个因素?
我们可以有
int i = 3, j = 14 int i = 3 + j * 14;
非常感谢你 .
“因子”,“术语”和“表达”概念来自数学,与编程语言无关 .
因素是你繁衍的事物:
1*2*(3+4)
条款是您添加的内容:
1 + 2 + (3*4)
表达式是针对整个结果的
1 + 3 * 7
在无上下文的语言分析中,您可以使用这些区别来组织运算符之间的优先级 . 因此,表达式由术语的总和构成,术语由因子的乘积构成,并且因子是数字或带括号的子表达式 .
你的作业可能也有一个(C语言的一部分)编程语言的语法规范,如C或C,类似于:
程序 - >表达|定义|免责声明表达 - >表达术语表达 - >表达 - 术语Expression->表达*因子.........等等
然后,3 j * 14是一个表达式,3是一个术语(任何通过a连接的东西是表达式或根据上面的语法的术语)j和14是因素请注意上面的语法是一个非常粗略的模仿什么一种真正的编程语言的语法可能看起来像 .
好的,假设我们有这样的语法:
程序 - >(定义| lambda)定义 - >定义定义
定义 - > "int"定义";" | "int"定义,定义";"定义 - >名称"="表达式
表达式 - >术语"+"表达式表达式 - >表达式"-" Term表达式 - >表达式"*"因子Term-> "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是因子:)
3 回答
“因子”,“术语”和“表达”概念来自数学,与编程语言无关 .
因素是你繁衍的事物:
条款是您添加的内容:
表达式是针对整个结果的
在无上下文的语言分析中,您可以使用这些区别来组织运算符之间的优先级 . 因此,表达式由术语的总和构成,术语由因子的乘积构成,并且因子是数字或带括号的子表达式 .
你的作业可能也有一个(C语言的一部分)编程语言的语法规范,如C或C,类似于:
程序 - >表达|定义|免责声明
表达 - >表达术语
表达 - >表达 - 术语
Expression->表达*因子
...
...
...
等等
然后,3 j * 14是一个表达式,3是一个术语(任何通过a连接的东西是表达式或根据上面的语法的术语)j和14是因素请注意上面的语法是一个非常粗略的模仿什么一种真正的编程语言的语法可能看起来像 .
好的,假设我们有这样的语法:
程序 - >(定义| lambda)
定义 - >定义定义
定义 - > "int"定义";" | "int"定义,定义";"
定义 - >名称"="表达式
表达式 - >术语"+"表达式
表达式 - >表达式"-" Term
表达式 - >表达式"*"因子
Term-> "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是因子:)