第二阶段语法分析p3 任务 程序语言的语法单位 输入单词符号串 表达式、语句和程序等 根据语言的语法规 例X1=Y+10*Z; 则对单词符号串进 C语言赋值语句构成规则 行扫描和分解 <赋值语句><标识符>白K表达式>: 识别出各类语法单位 达 + <表达式> 米 <表达式> 语法单位内部表示 <表达式>→<标识符〉 X1,Y,Z 语法树 <表达式>→<常数> 10 可以构成语法单位的单词符号 语法单位表达式Y,10,Z,10*Z 赋值语句X1=Y+10*Z;
11 第二阶段 语法分析 p3 任务 输入单词符号串 根据语言的语法规 则对单词符号串进 行扫描和分解 识别出各类语法单位 程序语言的语法单位 表达式、语句和程序等 例 X1= Y + 10*Z; C语言赋值语句构成规则 <赋值语句>→<标识符> = <表达式>; 定义为 <表达式>→<表达式> + <表达式> <表达式>→<表达式> * <表达式> <表达式>→<标识符> X1,Y,Z <表达式>→<常数> 10 可以构成语法单位的单词符号 语法单位 表达式 Y,10,Z,10*Z 赋值语句 X1=Y+10*Z; 语法单位内部表示 语法树
语法单位的内部表示:语法树 例某C语言源程序 赋值语句的语法树 main() <赋值语句〉 {float sum,first,count; S=irsticount10:父标识符> <表达式〉 sum <赋值语句>→<标识符>=<表达式>: <表达式>→<表达式)+表达式〉 <表达式>+<表达式〉 <表达式>→<表达式>*<表达式〉 表达式>→<标识符〉 <标识符><表达式〉*〈表达式〉 <表达式>→<常数> first <标识符〉 <常数> count 10 2
12 语法单位的内部表示:语法树 例某C语言源程序 main( ) {float sum,first,count; .sum=first+count*10;. } <赋值语句>→<标识符>=<表达式>; <表达式>→<表达式>+<表达式> <表达式>→<表达式>*<表达式> <表达式>→<标识符> <表达式>→<常数> 赋值语句的语法树 <赋值语句> <标识符> = <表达式> ; sum <表达式> + <表达式> <标识符> first <表达式> * <表达式> <标识符> count <常数> 10