%option noinput名词输入:它们是干什么的?

零分频器

我是新手,所以我想知道为什么我需要使用这些指令

%option nounput
%option noinput

是的,我知道否则我会收到以下警告:

lex.yy.c:1237:17: warning: ‘yyunput’ defined but not used [-Wunused-function]
    static void yyunput (int c, register char * yy_bp )
                ^
lex.yy.c:1278:16: warning: ‘input’ defined but not used [-Wunused-function]
    static int input  (void)
               ^

Flex中的这些指令实际上有什么问题?在这种情况下,我将能够使用这些功能(用于什么目的):

static void yyunput (int c, register char * yy_bp );
static int input  (void);

有什么用

您当然不需要使用这些选项。如果不使用相应的功能,则应使用它们,以避免编译器警告。(如果您不关心编译器警告,则也不需要这些选项。但是您应该关心编译器警告:))

这些功能很少使用。如果您想在某些情况下绕过词法分析并直接读取输入(input),或者想要构造要扫描的输入文本),则最需要使用它们unput

input()可以在动作中使用,以从输入流返回下一个字符。(读取的字符已从输入流中删除,因此在操作完成时将不对其进行扫描。)由于input()仅返回单个字符,因此效率不高,但有时不可避免。一个示例是令牌,其后为显式长度。(总的来说,flex并不是词法扫描所有令牌都具有明确长度的输入流的理想工具。)

unput(c)可用于将字符插入输入流,以便在操作完成时扫描字符。Flex手册包含一个相当人为的示例,其中将刚刚读取的令牌重新插入到括号中的输入流中。

您不应该unput用来简单地重新扫描令牌的全部或一部分。yyless宏是用于这一目的更有效。

大多数词法扫描器不需要inputunput,因此通常使用%option以避免为其生成代码。

如果你刚开始学习柔,我建议你开始与正常弯曲成语,离开之类的东西input,并unput放在一旁,直到你对他们有一个明确的需求(如果有的话)。另外,您应该阅读Flex手册,它将回答您的许多问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

@HostBinding和@HostListener:它们是做什么的,它们是干什么的?

我需要一个数字吗?他们是干什么的?

这个ip是干什么用的?

什么是/boot/firmware?它是干什么用的?

kotlin,注解类型前的@param 是干什么用的

Python内置函数“编译”。它是干什么用的?

Gradle 的 $rootDir/gradle 目录是干什么用的?

化妆舞会是干什么用的?

为什么Option <&String>不强迫Option <&str>?

与Option.isEmpty和Option.get相比,使用Option.map有什么优势?

插入隐藏输入的值以及选择<option>

if __name__ == "__main__": 做什么?它是干什么用的?

什么是本地服务器?它是干什么用的?

名称是什么,省略运算符是干什么用的;

Option [T]类的意义是什么?

Scalaz .option-这是什么速记?

是什么让Option成为Scala中的monad?

OPTION(RECOMPILE)总是更快;为什么?

Either和Option有什么区别?

Option在防锈中的实际用途是什么?

什么是解析时 Option Type 的实例?

Option 和 OptionT 有什么区别?

Secure Priv Option Mysql 是什么?

大傻的DSL中的一些字段是干什么用的?

`/etc/cups/ppd` 中带有“.O”扩展名的文件是干什么用的?

我只是想找到xdg-mime在哪里寻找关联。到底在干什么?

为什么我更喜欢ʻOption :: ok_or_else`而不是ʻOption :: ok_or`?

为什么在函数内部改变传递的 Option 不会传播到外部的 Option?

Option.fold()()和Option.map()。getOrElse()有什么区别?