Regular Expression Engine: An Example of Combining LEX and YACC for Regular Expressions
发布时间
阅读量:
阅读量
首先介绍了LEX与YACC的编写方式。随后,借助LEX与YACC开发了一个简易的正则语言处理程序(当前尚未支持闭包和或运算),所生成的中间代码为C语言。
正则表达式引擎应直接生成NFA或DFA模拟器所需的输入文件,但在SDT的设计过程中则是通过新增和调整状态节点来实现。而本文则借鉴了类似语言编译器的思路,将其转化为对应的C语言语句进行实现。
熟悉LEX和YACC工具
lex工具功能概述
lex格式是一种广泛应用于词法分析领域的工具,其核心功能在于将字符序列转换为标记序列,从而为后续的语法分析提供基础支持。
[第一部分:定义段]
%%
[第二部分:词法规则段]
%%
[第三部分:辅助函数段]
第一部分
Part1.1
- 第一部分的内容使用符号%{和%}进行包裹,其中包含了以C语言语法编写的多种定义与声明
- 比如,文件的包含操作、宏的定义、常量的设定、全局变量与外部变量的声明,以及函数的声明等内容。
- 在经过Lex翻译器处理之后,这部分内容将被完整复制至文件lex.yy.c中。
- 需特别注意的是,所有特殊符号%{和%}都应当紧贴行首进行书写。
%{
#include <ctype.h>
char
全部评论 (0)
还没有任何评论哟~
