2.2词法记号的描述与识别 ·正规定义的例子 一C语言的标识符是字母、数字和下划线组成的串 letter>A B ...Zab... 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->0|1|..|9 digits→digit digit" optional fraction -digits s optional exponent -(E(+8)digits )s number->digits optional fraction optional exponent 简化表示 number-→digit"(.digit")?(E(+-)?digit")g
2.2 词法记号的描述与识别 • 正规定义的例子 − 无符号数集合,例1946,11.28,63E8,1.99E−6 digit → 0 | 1 | … | 9 digits → digit digit* optional_fraction → .digits| optional_exponent → ( E ( + | − | ) digits ) | number→digits optional_fraction optional_exponent − 简化表示 number → digit+ (.digit+ )? (E(+|−)? digit+ )?
2.2词法记号的描述与识别 正规定义的例子(进行下一步讨论的例子〉 while→while do→do relop→<|<=|=|<>|>|>= letter-→AB..lZ1alb|.…lz 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 ws → delim+
2.2词法记号的描述与识别 2.2.4转换图 ·关系算符的转换图 return(relop,LE) 3 returnt(relop,.NE〉 other return(relop,LT) 开始 return(relop,EQ) return(relop,GE) 6 other 光 Q return(relop,GT)
2.2 词法记号的描述与识别 2.2.4 转换图 • 关系算符的转换图 0 5 1 6 2 4 8 3 7 return(relop, LE) return(relop, NE) return(relop, LT) return(relop, GE) return(relop, GT) return(relop, EQ) 开始 < = > = > = * * other other
2.2词法记号的描述与识别 标识符和关键字的转换图 letter?或digit 开始 letter other 10 return(installld()
2.2 词法记号的描述与识别 • 标识符和关键字的转换图 9 10 11 开始 letter other * letter或digit return(installId( ))