通常,我建议编写解析器的人使用解析器生成工具,例如bison和flex。但是对于小语言,建议编写自己的递归下降解析器。
为了说明如何编写递归下降解析器,我将向您展示我不久前为INI样式配置文件编写的解析器。有问题的解析器是 cfg 库的解析器:
Parser.h
解析器.cpp
解析器剖析
但在我们进入代码之前,先做一点理论。
解析器通常分为两位,词法分析器(词法分析器)和实际解析器。词法分析器从文件或任何其他源中获取字符流,并将其转换为标记流。然后,这些令牌由解析器使用,并转换为抽象语法树 (AST)。
如果要为编程语言编写编译器,则现在将 AST 传递给优化器和代码生成器。但是,在读取简单数据时,您省略了这些步骤,而只是生成数据。
cfg 格式
cfg 格式类似于 INI 格式,但语法不宽松。
例如:
# Default Configuration
[Graphic]
width = 800
height = 600
fullscreen = false
[Input]
forward = W
backward = S
left = A
right
2022-06-08 14:06:26
3KB
c++