gpt4 book ai didi

c - 如何从字符串中检索作为关键字的标记?

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

例如,如果输入为x+=5,则程序应返回x+=的数组5. 。请注意,x+= 之间没有空格,因此仅按空格分割可能不起作用,因为这样您就必须再次迭代它才能找到关键词。

我该如何做这样的事情?在C中是否有一种有效的方法来做到这一点?

最佳答案

Lexing不是特定于 C 的(从某种意义上说,您将在其他编程语言中使用类似的技术)。您可以使用手写代码(使用finite automaton编码技术)来做到这一点。您可以使用像 flex 这样的词法分析器生成器。您甚至可以使用 regexprs ,例如regex.h POSIX 系统上的函数。

Parsing也是一个具有标准技术的众所周知的域(至少对于 context free languages ,如果您想要一些效率)。您可以使用 recursive descent parsing ,您可以使用 bison 生成解析器(其中 examples 非常接近您的作业)或 ANTLR 。了解更多关于 LL parsing & LR parsing 。顺便说一句,解析技术可用于词法分析。

顺便说一句,有大量的 free software (例如脚本语言的解释器,如 GuileLuaPython 等...)、 JSON , YAML 、XML...解析器、几个编译器(例如 tinycc )等...说明了这些技术。通过研究他们的源代码,您会学到很多东西。

有时提前查看一两个字符可能会更容易,例如首先阅读整行(使用 getline(3)fgets(3) ,甚至可能 readline ,它为您提供了一个行编辑器)。如果您无法阅读整行,请考虑使用 fgetc(3)ungetc需要的时候。来自 <ctype.h> 的分类实用程序像isalpha可能会有帮助。

如果您关心UTF-8 (原则上你应该)事情变得稍微复杂一些,因为一些 Unicode字符(如 €、é、𝛃、...)在 UTF-8 中由几个字节表示。像 libunistring 这样的库应该很有帮助。

关于c - 如何从字符串中检索作为关键字的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463013/

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