答:词法分析器 的功能是输入源程序,输出单词符号。 单词符号是一个程序语言的基本语法符号。 程序语言的单词符号一般可分为下列五种。 (1)关键字是由程序语言定义的具有固定意义的标识符。
答:因此,源程序实际上是由满足程序语言规范发字符按照一定的规则组合起来构成的一个字符串。 词法分析的功能是,从左到右逐个地扫描源程序的字符串,按照词法规则,识别出单词符号作为输出,对识别过程中发现的词法错误,输出有关的错误信息。 由词法分析识别出的单词流是语法分析的输入,语法分析据此判断它们是否构成了合法的句子。 由词法分析识别出的常数和由用户定义的名字,分别在常数表和符号表中予以登记,在编译的各个阶段都要频繁的使用符号表。
答:语法分析器(Parser)通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。 语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。 实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。 自顶向下分析:根据形式语法规则,在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。 单词按从左到右的顺序依次使用。 自底向上分析:语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最终改写为语法的起始符号。
答:有一类词法错误可以在词法分析时发现,如出现字母表以外的非法字符、不合规则的常数、标识符的前缀为保留字等。 但还有一类词法错误,例如,把if写成fi,词法分析会将fi当作标识符处理,le ngth中间多了一个空格,词法分析会将le和ngth当作两个标识符处理。