Flex/Bison 示例项目教程

Flex/Bison 示例项目教程

flex-bison-examples flex-bison-examples 项目地址: https://gitcode.com/gh_mirrors/fl/flex-bison-examples

1. 项目的目录结构及介绍

flex-bison-examples/
├── simple-c/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── simple-cpp/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── reentrant-c/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── reentrant-variant-cpp/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── optional-semicolon/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── python-like-indentation/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── elite2/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── utf-8/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
├── error-recovery/
│   ├── calc.l
│   ├── calc.y
│   ├── Makefile
│   └── README.md
└── error-handling/
    ├── calc.l
    ├── calc.y
    ├── Makefile
    └── README.md

目录结构介绍

  • simple-c: 最简单的C代码版Flex/Bison示例,使用union和全局函数,初学推荐。
  • simple-cpp: 如果你想在C代码基础上使用一点C++,那么推荐你从该示例入手。
  • reentrant-c: 可重入版的C代码版,适合普通C工程使用,避免全局变量的使用,便于多线程安全调用。
  • reentrant-variant-cpp: C++工程版示例,避免全局变量的使用,并且使用variant替代union,可以在parser中方便地使用各种带构造函数的类型。
  • optional-semicolon: 目前效果最好的可选分号实现,目前是基于基础C代码版,只做思路上的实现,实际应用时请根据需要修改裁剪。
  • python-like-indentation: 一个类似python的语法,改自optional-semicolon,实现了缩进确定block和可选分号的效果,同时也展示了flex start condition的用法。
  • elite2: 一个较完整的语法示例,但没有具体的语义分析部分,设计取自我之前写的elite编程语言第二版。
  • utf-8: 使用flex支持utf-8和中文词语法的示例,代码中原生支持中文,或者做游戏引擎时制作脚本引擎,中文支持还是非常有用的。
  • error-recovery: 异常恢复的基本操作,使用error关键词来匹配到下一个合法的token,这里展示了其基本用法。
  • error-handling: 来自IBM的示例代码,展示如果打印漂亮的错误提示信息,打印错误代码行等等。

2. 项目的启动文件介绍

每个示例项目中都有一个 Makefile 文件,用于编译和构建项目。启动项目时,首先需要进入相应的目录,然后运行 make 命令来编译项目。

例如,在 simple-c 目录下,运行以下命令:

cd simple-c
make

编译完成后,会生成一个可执行文件,通常命名为 calc。你可以通过运行该可执行文件来启动项目。

3. 项目的配置文件介绍

每个示例项目中都有两个主要的配置文件:calc.lcalc.y

  • calc.l: 这是Flex的配置文件,定义了词法分析器的规则。它包含了词法规则和相应的动作代码。
  • calc.y: 这是Bison的配置文件,定义了语法分析器的规则。它包含了语法规则和相应的语义动作代码。

这些配置文件定义了项目的词法和语法规则,是项目运行的核心部分。通过修改这些文件,你可以自定义项目的词法和语法规则。

flex-bison-examples flex-bison-examples 项目地址: https://gitcode.com/gh_mirrors/fl/flex-bison-examples

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史奔一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值