# c_compiler **Repository Path**: fearless-void/c_compiler ## Basic Information - **Project Name**: c_compiler - **Description**: 自制C语言编译器,目前只达到AST树部分,且由于无法创建完备语义规则,目前示例代码只能够支持两不同优先级运算。 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-05 - **Last Updated**: 2023-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # c_compiler #### 介绍 自制C语言编译器,目前只达到AST树部分,且由于无法创建完备语义规则,目前示例代码只能够支持两不同优先级运算。 #### 软件架构 1.利用C语言编写的C语言编译器,目前只有词法分析和语法分析两部分。 2。词法分析部分使用NFA有穷自动机实现了"int","char","float","double","main","long", "short", "struct", "unsigned", "void", "for", "do", "while", "break", "continue", "if", "else", "switch", "case", "default", "return", "static", "typedef"等关键字的识别,以及整数、浮点数、指数、八进制数、十六进制数、十进制数等数字的识别,以及"+","-","*","/"等四则运算的运算符识别。 3.语法分析部分采用了LL(1)自顶向下算法,只需输入满足正规文法的产生式规则以及相应的语义规则即可针对输入串生成AST抽象语法树。 #### 使用说明 1.将文件夹打包下载到本地 2.打开相应文件夹中的cpp文件运行程序(本代码基于dev编译器开发,若使用Visual Studio编译器请将部分关键字替换为相应VS中的关键字) 3.词法分析文件夹中scanner_input记事本为词法分析输入端,scanner_output记事本为词法分析输出端,scanner_standard记事本为词法分析中所有可识别的字符。 4.语法分析文件夹中grammar_analyse记事本为语法分析"输入串"的输入端,prod_input为语法分析产生式规则输入端,prod_input_end为语法分析产生式终结符输入端,prod_input_notend为语法分析产生式非终结符输入端,grammar_action_regulation为语法分析产生式规则所对应的语义规则输入端(产生式规则与语义规则按自上至下的顺序一一对应) #### 参与贡献 1.魏浚哲 2.高子琪