# 词法分析器(C++实现) **Repository Path**: dominic-z/Lexical-analyzer ## Basic Information - **Project Name**: 词法分析器(C++实现) - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-04-28 - **Last Updated**: 2022-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##### 程序内容 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表。如果产生词法错误,则显示错误信息、位置,并试图从错误中恢复。简单的恢复方法是忽略该词法单元,重新开始扫描。 ###### 实现步骤 > 1.读到空格则略过,读下一个字符;若读到的是字母,就再接着读,直到读到的既不是字母也不是数字也不是下划线,并将读到的写入到token数组; > > 2.若读到的是数字,直到读到的不是数字或小数点,将读到的写入到token数组; > > 3.若读到的是<|>|=,则再读入下一位,若为=,则该运算符为<=|>=|==,若为其他字符,则返回<|>|=的种别码;若读到的是/,则读下一位,若为*,则说明之后为注释内容,一直读入直到读入*,并判断下一位是否为/,若是则注释结束,不是继续往下一位读入;若读入\n,则行数加一,若读入的字符与以上都不匹配,则报错,并输出出错行数。 ###### 词法单元对照表 | 词法单元 | 类型码 | 词法单元 | 类型码 | | :------: | :----: | :------: | :----: | | # | 0 | + | 18 | | Num | 1 | - | 19 | | Letter | 2 | * | 20 | | main | 3 | / | 21 | | if | 4 | = | 22 | | else | 5 | > | 23 | | do | 6 | >= | 24 | | while | 7 | < | 25 | | for | 8 | <= | 26 | | switch | 9 | ; | 27 | | case | 10 | " | 28 | | int | 11 | ++ | 29 | | double | 12 | -- | 30 | | float | 13 | /* | 31 | | long | 14 | */ | 32 | | void | 15 | { | 33 | | ( | 16 | } | 34 | | ) | 17 | | |