贡献者: addis
apt install bison
bison xxx.y (-d 选项用于生成头文件)
gcc xxx.tab.c -l xxx -o xxx
--no-line 选项取消行号,然后在生成的 cpp 文件中 switch (yyn) 这句上中打断点。
YYACCEPT; 就直接返回,停止继续读 scanner。
.l 文件基础
.l 文件的注释用 // 或 /**/ 和 C 一样
%top{ ... } 会把一段代码放在 .hpp 和 .cpp 文件的开头
%class{ ... } 定义 lexer class (custom lexer implementation),如 class MyLexer : public reflex::AbstractLexer { ... };
%init{ ... } 定义 lexer 初始化的代码,如 printf("Lexer initialized!\n");
%s 和 %x 定义 lexer states,分别是 inclusive 和 exclusive。如 %s STATE_COMMENT STATE_CLASS,不同 state 可能有不同规则。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利