【问题标题】:The meaning of certain C operators, delimiters and/or macros某些 C 运算符、分隔符和/或宏的含义
【发布时间】:2020-01-15 11:54:51
【问题描述】:

我最近被授予访问使用 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 是一个符号

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

【问题讨论】:

  • 好像flex 输入。
  • @lurker 我在.l 文件中添加了有关这些构造的信息。

标签: c macros operators delimiter lexer


【解决方案1】:

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

这是 Lex/Flex 语法。

例如:

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

看看:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2018-02-11
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多