某些C运算符,定界符和/或宏的含义

问题描述 投票:0回答:1

最近我被授予使用C语言的项目的访问权限。在文件lexer.l中,我遇到了某些我不熟悉的运算符和分隔符,并希望对此进行解释。以下是所述结构的列表。

  1. 分隔符%{...%}...是一堆#include语句和函数定义

  2. [%option后跟一个字符串,其名称作为变量名

  3. [%x,后接一堆限定为变量名的标识符,用空格隔开:

    • wait
    • paraml
    • paraval
    • ...
  4. [%% ... %%...替换为一串用换行符分隔的块,例如

"~"               { macro_noarg("\\nbspc"); }
"\\%"             { chk_indent(); emitc('%'); }
[ \t\r]*"%"       { BEGIN(comment); }
[ \t\r]*"$$"      { emit_el();
                    indent(); emit(".. math::\n");
                    ilevel +=2;
                    if(user_lbl) {
                      ...
                    }
...
  1. [<wait>[...]<wait>"..."<wait>s,其中s是符号

  2. [<paraml>[...]<paraml>"..."<paraml>s,其中s是符号

  3. [<paraval>[...]<paraval>"..."<paraval>s,其中s是符号

这些结构的一般含义是什么?

c macros operators delimiter
1个回答
1
投票

您提到的不是默认的C运算符也不是宏。

这是Lex / Flex语法。

例如:

  • [The delimiters %{...%}用于直接包含C代码
  • [%option用于指定一些Flex选项
  • [%x定义词法分析器的“开始条件”

看看:

http://dinosaur.compilertools.net/flex/manpage.html

© www.soinside.com 2019 - 2024. All rights reserved.