最近我被授予使用C语言的项目的访问权限。在文件lexer.l
中,我遇到了某些我不熟悉的运算符和分隔符,并希望对此进行解释。以下是所述结构的列表。
分隔符%{...%}
,...
是一堆#include
语句和函数定义
[%option
后跟一个字符串,其名称作为变量名
[%x
,后接一堆限定为变量名的标识符,用空格隔开:
wait
paraml
paraval
[%% ... %%
,...
替换为一串用换行符分隔的块,例如
"~" { macro_noarg("\\nbspc"); }
"\\%" { chk_indent(); emitc('%'); }
[ \t\r]*"%" { BEGIN(comment); }
[ \t\r]*"$$" { emit_el();
indent(); emit(".. math::\n");
ilevel +=2;
if(user_lbl) {
...
}
...
[<wait>[...]
,<wait>"..."
或<wait>s
,其中s
是符号
[<paraml>[...]
,<paraml>"..."
或<paraml>s
,其中s
是符号
[<paraval>[...]
,<paraval>"..."
或<paraval>s
,其中s
是符号
这些结构的一般含义是什么?
您提到的不是默认的C运算符也不是宏。
这是Lex / Flex语法。
例如:
The delimiters %{...%}
用于直接包含C代码%option
用于指定一些Flex选项%x
定义词法分析器的“开始条件”看看: