22词法记号的描述与识别 正规定义的例子 C语言的标识符是字母、数字和下划线组成的串 letter→A|B|….|Z|a|b|….|z digit→>0|1|….|9 id→ letter( etter digit)
2.2 词法记号的描述与识别 • 正规定义的例子 – C语言的标识符是字母、数字和下划线组成的串 letter_ A | B | … | Z | a | b | … | z | _ digit 0 | 1 | … | 9 id letter_(letter_ |digit) *
22词法记号的描述与识别 正规定义的例子 无符号数集合,例1946,11,28,63E8,199E-6 digit→0|1|….|9 digits> digit digit” optional fraction > digits e optional exponent >(E(+-8 digits)8 number->digits optional fraction optional exponent 简化表示 number ->digit(digit*)?(E(+l-)? digit*)?
2.2 词法记号的描述与识别 • 正规定义的例子 无符号数集合,例1946,11.28,63E8,1.99E6 digit 0 | 1 | … | 9 digits digit digit * optional_fraction .digits| optional_exponent ( E ( + | | ) digits ) | numberdigits optional_fraction optional_exponent 简化表示 number digit+ (.digit+)? (E(+|)? digit+)?
22词法记号的描述与识别 正规定义的例子(进行下一步讨论的例子) while→〉 while do→>do relop→><|<=|=|<>|>|> letter→A|B|∴Z|a|b|…|z d→ letter (letter digit number>digit(digit+)?(E(+-? digit*)? delim blank tab newline ws→ delin+
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+
22词法记号的描述与识别 224转换图 关系算符的转换图 2) return(relop, LE return(relop, NE) other return(relop, LT) 开始 return(relop, EQ) 行 return(relop,GE) other 8)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
22词法记号的描述与识别 标识符和关键字的转换图 letter或 digit 开始 letter 9 10) other return(installldo
2.2 词法记号的描述与识别 • 标识符和关键字的转换图 9 10 11 开始 letter other * letter或digit return(installId( ))