2.2词法记号的描述与识别 正规定义的例子 C语言的标识符是字母、数字和下划线组成的串 letter->A B...Z ab..._ digit- →0111.19 id -letter (letter digit)
2 2. 词法记号的描述与识别 • 正规定义的例子 – C语言的标 符是字 言的标识符是字母、数字 划线组成的串 数字和下划线组成的串 letter _ A | B | … | Z | a | b | … | z | _ digit 0|1|…|9 id letter _ (letter _ |digit)*
2.2词法记号的描述与识别 正规定义的例子 无符号数集合,例1946,11.28,63E8,1.99E-6 digit-→01l..|9 digits→digit digit* optional fraction -digits 8 optional_exponent ->(E(+)digits s number->digits optional fraction optional_exponent 简化表示 number-→digit"(.digit)?(E(+-)?digit)g
2 2. 词法记号的描述与识别 • 正规定义的例子 无符号数集合,例1946,11.28,63E8,1.99E6 digit 0 | 1 | … | 9 digits digit digit* optional_fraction .digits| optional exponent optional_exponent ( E ( + | | ) digits ) | numberdigits optional_fraction optional_exponent 简化表示 number digit+ ( digit+)? (E(+|)? digit+ number digit (.digit )? (E(+| )? digit )?
2.2词法记号的描述与识别 正规定义的例子(进行下一步讨论的例子) while→while do→do relop-<|<=|==|<>|>|>= letter ->A B...Z a b...z id -letter (letter digit ) number-→digit*(.digit)?(E(+|-)?digit)? delim -blank tab newline ws→delim+
2 2. 词法记号的描述与识别 • 正规定义的例子(进行下一步讨论的例子) while while do do relop < | < = | == | < > | > | > = letter A | B | … | Z | a | b | … | z id letter (letter | digit )* number digit+ (.digit+)? (E (+ | )? digit+)? delim blank | tab | newline d li ws + delim
2.2词法记号的描述与识别 2.2.4转换图 关系算符的转换图 2 return(relop,LE) 3 return(relop,NE) other return(relop,LT) 开始 return(relop,EQ) 8 return(relop,GE) other return(relop,GT)
2 2. 词法记号的描述与识别 2.2.4 转换图 • 关系算符的转换图 2 return(relop, LE) = 1 3 > return(relop, NE) 4 return(relop, LT) 开始 < * other 0 6 return(relop, EQ) 开始 = > 5 = 7 8 = return(relop, GE) other 9 return(relop, GT) *
2.2词法记号的描述与识别 标识符和保留字的转换图 letter:或digit 开始 letter 11 other return(installId())
2 2. 词法记号的描述与识别 • 标识符和保留字的转换图 letter或digit 开始 letter other * ette 或dgt 10 11 12 (i llId( )) 开始 letter other return(installId( ))