gpt4 book ai didi

c - 使用 C 进行 Lex 编码

转载 作者:行者123 更新时间:2023-11-30 15:35:56 24 4
gpt4 key购买 nike

我想使用 Lex 获取并打印双引号内的文本。

["]?([A-Z]*[a-z]*[0-9]*)*["]? {
printf("STR(%s ),yytext");
return 1;
}

我用过这个,但出了点问题,我无法弄清楚。

示例:

输入

"CNG230 ASN1 Average"

输出

STR("CNG230 ASN1 Average")

示例2:

输入

 "CNG230/492 Global average"

输出

 STR("CNG230/492 Global average")

最佳答案

你实际上并没有说出你的两个例子有什么问题,我假设是这样的

printf("STR(%s ),yytext");

只是一个拼写错误

printf("STR(%s )",yytext);

但是我发现有两个问题。

  1. 如果您正确地指定了您的问题,则只要不是另一个引号,您就不必关心引号内的内容。所以你的规则减少为

    \"[^"]*\" { ... }
  2. 如果没有规则匹配,默认操作是回显输入。所以你需要另一个规则来消耗所有不符合这个规则的东西。将其放在后面:

    .|\n {}

关于c - 使用 C 进行 Lex 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750872/

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