Advertisement

Regular Expression Engine: An Example of Combining LEX and YACC for Regular Expressions

阅读量:

首先介绍了LEXYACC的编写方式。随后,借助LEXYACC开发了一个简易的正则语言处理程序(当前尚未支持闭包和或运算),所生成的中间代码为C语言
正则表达式引擎应直接生成NFA或DFA模拟器所需的输入文件,但在SDT的设计过程中则是通过新增和调整状态节点来实现。而本文则借鉴了类似语言编译器的思路,将其转化为对应的C语言语句进行实现。

熟悉LEX和YACC工具

lex工具功能概述

lex格式是一种广泛应用于词法分析领域的工具,其核心功能在于将字符序列转换为标记序列,从而为后续的语法分析提供基础支持。

复制代码
    [第一部分:定义段]
    %%
    [第二部分:词法规则段]
    %%
    [第三部分:辅助函数段]
    

第一部分

Part1.1

  • 第一部分的内容使用符号%{和%}进行包裹,其中包含了以C语言语法编写的多种定义与声明
  • 比如,文件的包含操作、宏的定义、常量的设定、全局变量与外部变量的声明,以及函数的声明等内容。
  • 在经过Lex翻译器处理之后,这部分内容将被完整复制至文件lex.yy.c中。
  • 需特别注意的是,所有特殊符号%{和%}都应当紧贴行首进行书写。
复制代码
    %{
    #include <ctype.h>
    char

全部评论 (0)

还没有任何评论哟~