词法&语法解析
Lex (Flex)& Yacc (BISON) 介绍。 目录 Lex (Flex)& Yacc (BISON) 介绍。 Lex语法规则 Yacc语法规则 www.founderdpt.com
Lex 代表 Lexical Analyzar。 Yacc 代表 Yet Another Compiler Compiler。 Lex&Yacc介绍 Lex 代表 Lexical Analyzar。 Yacc 代表 Yet Another Compiler Compiler。 Lex 和 Yacc 是 UNIX 两个非常重要的、功能 强大的工具。 事实上,可以使用 Lex 和 Yacc 创建 FORTRAN 和 C 的编译器很简单。 www.founderdpt.com
Lex介绍 一种匹配的常规表达式可能会包含相关的动作。通常是返回一个标记。 www.founderdpt.com
第三段是补充的 C 函数。 第三段中一般都有 main() 函数。 Lex语法格式 说明部分 %% 翻译规则 辅助过程 一个 Lex 程序分为三个段: 第一段是 C 和 Lex 的全局声明, 第二段包括模式(C 代码), 第三段是补充的 C 函数。 第三段中一般都有 main() 函数。 这些段以%%来分界。 www.founderdpt.com
Lex 文件介绍 -XQLexer.l 为例 www.founderdpt.com %{ < 源代码, 类型信息, 注释等> %} [定义部分] %% [规则部分] < C auxiliary subroutines> 而规则部分可以形式如下 <pattern> { <action to take when matched> } … www.founderdpt.com
Yacc Yacc是什么? 它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。 Yacc 的 GNU 版叫做 Bison。 www.founderdpt.com
Yacc %{ < C global variables, prototypes, comments > %} [定义部分] %% [规则部分] < 其它额外代码部分> www.founderdpt.com
Yacc 规则产生 %% production : symbol1 symbol2 … { action } | … production: symbol1 symbol2 { action } www.founderdpt.com
Yacc Shit/reduce 冲突。 解决方式---precedence %prec 用例表明那个优先级高。 www.founderdpt.com
Yacc XQPaser.y 实例介绍。 www.founderdpt.com