# Compiler **Repository Path**: clean_water_source/compiler ## Basic Information - **Project Name**: Compiler - **Description**: 编译原理课设:词法分析器(基于DFA)和语法分析器(基于LALR1分析) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-20 - **Last Updated**: 2025-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 效果展示 ## 词法分析过程 以一个简单的程序为例验证词法和语法分析的效果: ```c++ # include < iostream > int main () { int a123 ; int b = 4 ; int f = 2.2i ; float x123 = 1.32 ; float _w_12 = 3.0e+12 ; return 0 ; } ``` 词法分析结果: ![](https://foruda.gitee.com/images/1719317781939745256/f9d236f8_11316071.png "屏幕截图") 可以看出所有token都被正确识别。词法分析得到的化简后的token序列如下所示。 ``` 3vdw(){dy;dy=z;dy=z;cy=z;cy=z;tz;} ``` ## 语法分析过程 语法分析(Syntax Analysis)是编译过程中的一个关键阶段,它的主要任务是基于词法分析生成的记号序列,按照某种上下文无关文法的规则,构建出一个抽象语法树(AST,Abstract Syntax Tree)或语法树(Parse Tree),并检测程序的语法是否正确。 把这些化简后的token序列进行语法分析,下面是语法分析的结果,截图中展示了action和goto表、分析栈的情况: ![输入图片说明](https://foruda.gitee.com/images/1719317838021734924/8ca9e9ca_11316071.png "屏幕截图") ![输入图片说明](https://foruda.gitee.com/images/1719317864463902446/f2431ec9_11316071.png "屏幕截图") 至此,词法和语法分析任务均能正确完成。以上的分析结果都可以在输出文件中查看:完整的词法分析结果可以查看LexicalAnalysisProcess.txt文件,语法结果可以查看SyntaxAnalysisProcess.txt文件。