littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于C语言的语法分析器

项目简介

本项目是基于C语言编写的编译器前端,主要用于解析和计算C语言表达式。实现了词法分析器、语法分析器(支持LL(1)和LR(1)算法),并集成YACC和LEX工具以自动生成分析器。用户输入算术表达式后,解析器会进行语法分析并输出解析过程和结果。

项目的主要特性和功能

  1. 词法分析器(Lexer):读取源代码并分解为词法单元(tokens)。
  2. 语法分析器(Parser):支持LL(1)和LR(1)算法,可输出解析过程。
  3. YACC和LEX工具:用YACC生成语法分析器,LEX生成词法分析器。
  4. 错误处理:能识别和报告语法错误。
  5. 支持多种表达式:可解析和计算整数、浮点数、括号表达式、多进制数等。

安装使用步骤

前提

假设用户已经下载了本项目的源码文件。

编译

使用make命令编译项目,可按需选择编译LL(1)或LR(1)解析器: - 编译LL(1)解析器: bash $ make LL1 - 编译LR(1)解析器: bash $ make LR1

运行

运行编译后的程序,按提示输入表达式测试: - 运行LL(1)解析器: bash $ ./LL1 - 运行LR(1)解析器: bash $ ./LR1

示例输入

bash 2+3*4 (8 - 2) / 2 3 * ((66 - 99) / 3 + 1) 208341/66317

示例输出

bash 14 3 -30 3

错误处理示例

输入错误表达式时,解析器会报告错误并提示可能原因,例如: bash (3.14 - 2.72 / 2 // 括号不匹配(语法错误) 0x2 -* 1 // (语法错误) 4/(1-1) // 除0错误(语义错误)

参考文档

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】