gpt4 book ai didi

c++ - (F)莱克斯 : get text not matched by rules/get default output

转载 作者:行者123 更新时间:2023-11-30 01:54:20 24 4
gpt4 key购买 nike

到目前为止,我已经阅读了很多关于 (F)Lex 的内容,但我找不到答案。其实我有 2 个问题,得到一个答案就足够了。

我有这样的字符串:

TOTO 123 CD123 RGF 32/FDS HGGH

对于我找到的每个标记,我将其放入一个 vector 中。例如,对于这个字符串,我得到一个这样的 vector :

vector = TOTO, whitespace, CD, 123, whitespace, RGF, whitespace, 32, FDS, whitespace, HGGH

“/”不匹配任何规则,但我仍然想在到达它时将它放入我的 vector 中并得到:

vector = TOTO, whitespace, CD, 123, whitespace, RGF, whitespace, 32, /, FDS, whitespace, HGGH

所以我的问题是:

1) 当输入不匹配任何规则时,是否有可能修改默认操作? (而不是在标准输出上打印?)

2) 如果不可能,如何捕获它?因为在这里,“/”是一个示例,但它可以是所有内容(不符合我的规则的 % 、C、3、Blabblabla 等),我不能放

 .*   { else();  }

因为 Flex 使用匹配最长字符串的正则表达式。我希望我的规则被“排序”,而“.*”将排在最后,就像更改 Flex 的“首选项”一样。

有什么想法吗?

最佳答案

通常的方法是制定类似这样的规则

.    { do_something_with_extra_char(*yytext); }

在规则的末尾。这将匹配任何不匹配任何其他规则的单个字符(除了换行符——你还需要一个匹配换行符的规则)。如果您有多个不匹配的字符,此规则将触发多次,但通常没问题。

关于c++ - (F)莱克斯 : get text not matched by rules/get default output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22177413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com