- 1
- 0
- 约小于1千字
- 约 9页
- 2017-01-01 发布于重庆
- 举报
第4章 词法分析 词法分析的主要任务 读源程序,产生token 次要任务 滤掉空格,跳过注释、换行符 宏展开 记录行号 词法分析的结果 如果你来编写一个词法分析程序,你要怎样表达分析结果? 例如这样一个表达式: 33 + 22 * 10 Token的类和值 词法分析与语法分析 词法可以独立运行 也可以完全归并到语法描述 但一般作为语法分析的子程序 词法分析的难度因素 例:很多语言中,关键字是被保留的。而在诸如PL/I语言中,关键字是不保留的,这样词法分析的复杂程度大大增加。试着想象一下下面的语句: IF THEN THEN THEN = ELSE; ELSE ELSE = THEN; 正规表达式regular expression “空”是字母表Σ的RE Σ里的任一字母是Σ的RE 假定e1和e2都是?上的RE,那么(e1), e1? e2, e1?e2, e1?也都是RE 有限次使用上述三步骤而定义的表达式才是?上的RE,当且仅当 几个缩写 +: r+=rr* ?: r?=r|ε 字符集合: [A-Za-z] [A-Za-z_] 课后作业 写出如下RE: 字母表{0,1}的串,其中含有偶数个0 字母表{0,1}的串,其中1与1之间是不相邻的 * * punctuation 标点符号 literal string 被引用符号串 constant 常数 identifier 标识符 operator 操作符 keyword 关键字 【首先回忆一下词法分析的作用】 【Lexical analysis:从左到右读入字符,识别出token】 【Token:是语言中具有独立意义的最小单位。包括保留字、标识符、运算符等】 【考虑这个算式】 显然有5个单词,而且这5个单词各不同 下面考虑这个问题:不同有没有不同。 【例如,33与22不同,33与+不同,这两个不同有没有不同】 【这个意思就是说,“33”这个单词,你不能只开一个int变量,至少得两个变量。】 【“+”也不能用一个字符变量,也得两个变量】 【实际用两个整型即可对应一个单词】 【问题:如果是上述单词,怎么保存?】 【简要介绍一些编程技巧】 P50 【为什么词法是语法的一部分】 都是以文法为准 P51 And and and
原创力文档

文档评论(0)