程序语言语义 n语义用以定义程序意义的规则集 在不同语言中完全相同的语法单位 含义却可能完全不同 u例如:x=y C语言—赋值表达式 Pascal语言一关系表达式C中x=y 章节目录 ☒ 6/38
程序语言语义 n 语义 用以定义程序意义的规则集 u 在不同语言中完全相同的语法单位 含义却可能完全不同 u 例如:x=y C语言——赋值表达式 Pascal语言——关系表达式 C中x==y 章节目录 6/38
2.1文法的直观概念p19 n定义描述英语句子的文法 u例如He gave me a book n文法的规则如下: (1)<句子>→<主语><谓语><间接宾语><直接宾语> (2)<主语>+<代词〉 (3)<谓语〉→<动词〉 (4)<间接宾语〉→<代词> (⑤)<直接宾语>→<冠词〉<名词> (6)<代词>→Heme (7)<冠词〉→a 请给出句子的 (8)<动词>→gave 推导和语法树 (9)<名词>→book peach ☒位
7 2.1 文法的直观概念 p19 n 定义描述英语句子的文法 u 例如 He gave me a book n 文法的规则如下: (1)<句子>→<主语><谓语><间接宾语><直接宾语> (2)<主语>→<代词> (3)<谓语>→<动词> (4)<间接宾语>→<代词> (5)<直接宾语>→<冠词> <名词> (6)<代词>→He|me (7)<冠词>→a (8)<动词>→gave (9)<名词>→book|peach 请给出句子的 推导和语法树
例 He gave me a book 应用上述语法规则进行推导: 上下文无关文法 句子) 实例 =〉主语 谓语间接宾语直接宾语 =〉代词谓语间接宾语直接宾语 n 终结符号 He,me,book,gave,a等 =>He谓语间接宾语直接宾语 n 非终结符号 =>He动词 间接宾语 直接宾语 句子,主语,谓语,动词等 n 开始符号句子 =>He gave 间接宾语直接宾语 n 产生式语法规则 =>He gave代词直接宾语 =>He gave me直接宾语 9条规则 (1)<句子〉→<主语><谓语><间接宾语><直接宾语〉 =〉He gave me冠词名词 (2)<主语〉+<代词> =〉He gave me a名词 (3)<谓语〉>→<动词〉 (④)<间接宾语〉→<代词〉 =〉He gave me a book (⑤)<直接宾语〉→<冠词>〈名词〉 (6)<代词〉→Heme (7)<冠词>+a (8)<动词>→gave 注:省略非终结符的尖括号<◇> (9)<名词>→book|peach ☒>
8 上下文无关文法 实例 例 He gave me a book 应用上述语法规则进行推导: <句子> =>主语 谓语 间接宾语 直接宾语 =>代词 谓语 间接宾语 直接宾语 =>He 谓语 间接宾语 直接宾语 =>He 动词 间接宾语 直接宾语 =>He gave 间接宾语 直接宾语 =>He gave 代词 直接宾语 =>He gave me 直接宾语 => He gave me 冠词 名词 => He gave me a 名词 => He gave me a book 注:省略非终结符的尖括号<> n 终结符号 He,me,book,gave,a等 n 非终结符号 句子,主语,谓语,动词等 n 开始符号 句子 n 产生式 语法规则 9条规则 (1)<句子>→<主语><谓语><间接宾语><直接宾语> (2)<主语>→<代词> (3)<谓语>→<动词> (4)<间接宾语>→<代词> (5)<直接宾语>→<冠词> <名词> (6)<代词>→He|me (7)<冠词>→a (8)<动词>→gave (9)<名词>→book|peach
9条规用 (1)(句→(主)<谓语×间接宾语直接宾语) 2)生语》<代词 上下文无关文法 实例语法树 )语,动词 《代词 活词《名词 -He 'mo 例He gave me a book 开始符→〈句子〉 非终结符 <主语> 〈谓语〉<间接宾语〉〈直接宾语〉 <代词> 《动词〉 <代词〉 <冠词〉 <名词〉 He gave me a book 终结符 由文法所定义的终结符串 句子
9 上下文无关文法 实例语法树 例 He gave me a book <句子> <主语> < 谓语> < 间接宾语> < 直接宾语> <代词> He <动词> gave <代词> me <冠词> <名词> a book 非终结符 开始符 → 终结符 由文法所定义的终结符串——句子
2.1文法概念理解(课堂练习)p19 6.<语句》·(1f语句》|《hi1e语句》|《for透句》 个小C语言及其文法 1<复合语句>川<赋值语句> 7.<1f语句>→<1f关键字(《表达式>)<复合语句>: 小C语言源程序 |Kif关键字)(《表达式>)<复合语句以1se关键字X复合语句>: &.《hi1e语句>→<hi1关键字)(《表达式>)<复合语句>: mainO n 9.<for语句>→<for关簧字>(《表达式>:<表达式):<表达式>) n { <复合语句》: 10.<复合语句>→{《语句序列>】 n int a,b; n 1山.赋值语句>→<表达式>: a=1;/赋值语句 12.表达式>→<标识符><算数表达式>布尔表达式> n 13.布尔表达式>◆<算数表达式> b=a+1; |算澉表达式>关系运算符><算数表达式> 14. 关系运算符>→>K==|= 15.<算数表达式>→<算数表达式>+K项 <算数表站式>-<项<项 16. 《项+<项<因子>K项水因于>川<因子〉 小C语言文法 17.<因子>+<标识符无符号整激>川(《算数表达式>) 1. 程序)·<@i关键字)0声明序列><语句序列】 n 18. 标识符>◆(字母>K标识符><字母标识符><数字> 2、声明序列心>→<声明序列><声明语句> n 19.无符号整数>+<数字无符号整数<数字> 声明语句>川空> n 20. <字母>→ab小.zaB.Z 3.声明语句>→<int关键字X标识符表>: 21、 <数字>+011123145617819 4标识符表>→<标识符>,<标识符表>标识符> n 22。《ain关键字)◆ain 5.《语句序列>+<语句序列><语句>川语句> 28.<if关键字)→if n 24.<e1s8关键字)→eo1s6 n 25.《hi1e关键字>→hi1e BEGIN语法树推导 26.<for关键字)→for 27.int关键字)→int 文法的特点:以有穷的集合刻画无穷集合的一个工具。 章节目录 1U158
2.1 文法概念理解(课堂练习) p19 一个小C语言及其文法 n 小C语言文法 n 1. <程序>→<main关键字>(){<声明序列><语句序列>} n 2. <声明序列>→<声明序列><声明语句> |<声明语句>|<空> n 3. <声明语句>→<int关键字><标识符表>; n 4. <标识符表>→<标识符>,<标识符表>|<标识符> n 5. <语句序列>→<语句序列><语句>|<语句> n 6. <语句>→<if语句>|<while语句>|<for语句> |<复合语句>|<赋值语句> n 7. <if语句>→<if关键字>(<表达式>)<复合语句>; |<if关键字> (<表达式>)<复合语句><else关键字><复合语句>; n 8. <while语句>→<while关键字> (<表达式>)<复合语句>; n 9. <for语句>→<for关键字>(<表达式>;<表达式>;<表达式>) <复合语句>; n 10. <复合语句>→{<语句序列>} n 11. <赋值语句>→<表达式>; n 12. <表达式>→<标识符>=<算数表达式>|<布尔表达式> n 13. <布尔表达式>→<算数表达式> |<算数表达式><关系运算符><算数表达式> n 14. <关系运算符>→>|<|>=|<=|==|!= n 15. <算数表达式>→<算数表达式>+<项> |<算数表达式>-<项>|<项> n 16. <项>→<项>*<因子>|<项>/<因子>|<因子> n 17. <因子>→<标识符>|<无符号整数>|(<算数表达式>) n 18. <标识符>→<字母>|<标识符><字母>|<标识符><数字> n 19. <无符号整数>→<数字>|<无符号整数><数字> n 20. <字母>→a|b|.|z|A|B|.|Z n 21. <数字>→0|1|2|3|4|5|6|7|8|9 n 22. <main关键字> →main n 23. <if关键字> →if n 24. <else关键字> →else n 25. <while关键字> →while n 26. <for关键字> →for n 27. <int关键字> →int n 小C语言源程序 n main() n { n int a, b; n a=1; //赋值语句 n b = a + 1; n } 文法的特点:以有穷的集合刻画无穷集合的一个工具。 10/38 BEGIN 语法树推导 章节目录