2011-11-08 65 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是因子:)