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