lex and yacc tutorial
2018-8-6
IntroductionLex是一个lexical analyzer或者scanner。它把输入转换成tokens。Yacc是一个syntax analyzer或者parser。它分析tokens,生成syntax tree。LexLex使用正则表达式匹配字符串。lex文件的后缀通常为.l,lex输
calc2
2018-8-6
添加乘除以及括号支持calc2.l /* calculator #1 */%{ #include "y.tab.h" #include void yyerror(char *);%}%%[a-z] { yylva
Flex学习笔记1
2019-7-18
flex是一个产生scanners的工具,scanner是一个识别文本中lexical patterns的程序。flex从文件或者标准输入中读取要产生scanner的描述文件。描述文件是正则表达式和C代码的组合。flex产生一个C源码文件lex.yy.c。定义了一个yylex(),这个源文件可以编译
Flex学习笔记1 Patterns
2019-7-26
6 Patterns看下表.匹配除了新行之外的任何字符[xyz][^A-Z\n]r*匹配0次或多次rr+匹配一次或多次rr?匹配0次或1次rr{2,5}匹配2次到5次r{2,}匹配2次及以上r{4}匹配4次{name}扩展name的定义"[xyz]\"foo"匹配字符串字面量[xy]"foo\xx是
Flex学习笔记3:Actions
2019-7-31
Actionsrule中的每一个pattern有对一个对应的action。其可以是任何的C语句。pattern以第一个未转义的空白字符结束。行中剩下的部分是action。如果action是空,那么pattern被匹配,但是会被丢弃。如果action包含{,那么action一直包含到匹配的},可以跨多
Flex学习笔记3: Start condition
2019-8-1
Start Conditionsflex提供一个机制,条件的激活rule。任何以开头的rule,只有scanner在叫sc的start condition时,才激活。sc可以有多个,用逗号分开。start conditons是在definitions section中声明的,使用%s或者%x
Flex学习笔记5: Multiple input buffers
2019-8-2
Multiple input buffers一些scanner会都多个stream读取输入,由于flex使用大的buffer读取输入,因此你不能简单的写一个YY_IPUT(),因为你可能在buffer还没有处理完的时候(include语句后面还有很长的buffer)就需要切换输入文件。为了处理这些文
bison学习笔记1:concepts
2019-8-4
1 The Concepts of Bison所有的context-free language都可以用BNF表达,所有用BNF表达的语言都可以有bison解析。1.2 From Formal Rules to Bison Inputnonterminal symbol,在bison中是一个ident
bison学习2:bison grammar files
2019-8-11
3.1 Outline of a bison grammar如下:1234567891011%{ Prologue%} Bison declarations %%Grammar rules%% Epilogue/* */类型的注释可以出现任何sections。//产生直到行尾的注释。3.1.1
Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.