gpt4 book ai didi

ubuntu - 在 lex 上定义表达式不适用于某些字母

转载 作者:行者123 更新时间:2023-12-04 19:02:33 26 4
gpt4 key购买 nike

我已经在终端中安装了 flex
操作系统:ubuntu 15.10

character [a-z|A-Z]
digit [0-9]
digits {digit}{digit}+
string [{digit}+{character}+{digit}*{character}*]*

%%
{string} printf("string ");
%%

编译代码后,对于输入“gg”,输出是“string”。对于输入“ff”,输出是“ff”。

我正在编译这样的文件:
lex file_name.txt
cc lex.yy.c -o file_name.out

如果我这样定义字符串:
string ({digit}+{character}+{digit}*{character}*)*

它工作正常。

是什么原因? 我不允许使用 C 语言

最佳答案

这条线

string [{digit}+{character}+{digit}*{character}*]*

做的事情与你所期望的不同。 [ 中包含的字符出现零次或多次和 ] .也就是说,它等价于这些更简单的模式:
string [{}digit+character+*]*
string [{}digtchare+*]*

(除非我有错别字)。它与此不同:
string ({digit}+{character}+{digit}*{character}*)*

这是 ( 中包含的模式的零次或多次重复和 ) .

关于ubuntu - 在 lex 上定义表达式不适用于某些字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583783/

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