1 简介
解释程序就是一个字符串的解释器。
编程是一个很宽泛的概念,从某种意义上来说所有的软件都是一种特定的语言,但根据程序本身的灵活性可以分为“硬编码”、“可配置”、“可控制”和“可编程”四类。如果一个程序的灵活性达到了“可编程”,它的配置文件就可以被看作一种“编程语言”,而该程序本身也就是一个“解释器”。
2 概念
2.1 词法分析
- 直接扫描法,简单但是慢
- 正则表达(有限状态自动机FA),对应Flex
2.2 语法分析
- 自顶向下(展开),限制多
- 自底向上(折叠),复杂,对应Bison[上下文无关语法]
3 工具选用
- lex yacc
- flex bison(lex yacc升级版)
- flex++ bison++
- flexcpp bisoncpp
- reflex
4 步骤
4.1 安装flexc++、blexc++
apt install 时提示预装别的库工具,先安装,后安装flexc++、blexc++
https://gitlab.com/fbb-git/bisoncpp/-/tags 6.03.00版本
https://gitlab.com/fbb-git/flexcpp/-/tags 2.07.06版本
4.2 示例
参考
1、RE/flex
2、用C语言写解释器(一)——我们的目标
3、linux–Flex add Bison
4、Flex++ Bisonc++解析器?
5、linux–Flex add Bison
6、Writing a simple Compiler on my own - Bison basics
7、Writing Your Own Toy Compiler Using Flex, Bison and LLVM
8、使用FLEX BISON 和LLVM编写自己的编译器
9、梁肇新《编程高手箴言》
10、cfglp: A CFG (Control Flow Graph) Language Processor
11、Bisonc++介绍
12、Flexc++介绍
13、bisonc++仓库
14、flexc++仓库
15、卢涛、王哲、贺国睿、王祎,东南大学自动化学院 《新型工业机器人语言及解释器设计与实现》
16、加星 C++11标准Flex及Bison文件,请结合WinFlex&Bison编译调试
17、加星 Win flex-bison
18、加星 Win flex-bison开发环境配置
19、加星 如何在QT项目中集成Bison/Flex(Yacc/Lex)自动编译生成功能