识别出每一个单词。
源代码 -- 词法分析器 -- 记号流(token)
词法分析器:把构成源程序的字符流翻译成记号流,还完成与用户接口的一些任务。
正规式 状态转换图
通过分词操作,把句子以单词或者词组为单位进行划分,得到一个句型
(欢迎新老师生前往食堂就餐)
把原始的字符串流形式的程序文本转换为词法记号流的形式
词法单元:同种记号编程语言中的合法字符串
词法记号:满足某种规则的词法单元,采用同种记号
词法单元 -- 模式(规则) -- 词法记号
串与语言
字母表:符号的有限集合,例 {0,1}
串:符号的有穷序列, 例: 00110,e
语言:字母表的一个串集, 例:{}, {}, {}
语言的运算
和 LM = {s | sL 或 sM}
连接 LM = {sd | sL 且 dM}
指数 = {} ,
闭包
正闭包
优先级: * > 连接运算
正规式(正则表达式,regular expression):正规集
·最多有一个1 的01 串?最多有三个1 的01 串?
(00|11|((01|10)(00|11)*(01|10)))*
Pascal:
letter -> A|B|C|......|Z|a|b|c|......|z
digit = 0|1|2|3|.....|9
id -> letter(letter|digit)*
C:
letter_ -> A|B|C|......|Z|a|b|c|......|z| _
digit = 0|1|2|3|.....|9
id -> letter_ (letter_ | digit)*
词法记号的匹配:
分状态,走流程