W(1) L(#); 或 \# -> @shift_right R W(1) L 我必须用 flex 解析这一行,并从箭头的每个部分获取每个元素并将其放入列表中。我知道如-6ren">
gpt4 book ai didi

c - 尝试在 Flex 中使用 "recursive"标识符的规则进行匹配

转载 作者:行者123 更新时间:2023-11-30 18:02:59 25 4
gpt4 key购买 nike

我有这一行:

0, 6 -> W(1) L(#);

\# -> @shift_right R W(1) L

我必须用 flex 解析这一行,并从箭头的每个部分获取每个元素并将其放入列表中。我知道如何匹配简单的事物,但我不知道如何使用相同的规则匹配多个事物。我不允许增加规则的限制。我有一个提示:解析这些片段,然后片段将组合起来,我可以使用状态,但我不知道该怎么做,而且我在网上找不到示例。有人可以帮助我吗?

所以,这里有一个例子:

{

a -> W(b) #invert_loop;

b -> W(a) #invert_loop;

-> L(#)

}

当本节开始时,我必须为每一行创建一个结构,我将 -> 左侧的内容放入 vector 中,这些是一些参数,列表的右侧,其中每个术语都有点另一个结构。对于右侧的内容,我编写了规则:

writex W([a-zA-Z0-9.#]) 代表 W(任何东西)。

所以我需要解析这些行,这样我就可以将参数和结构放入大结构中。像这样的东西(第一行):

带有 param = a 和 struct = W(anything) 列表的新 bigStruc,#invert(这是引用另一个结构的符号)

所以我需要的是知道如何解析这些行,以便我可以创建和填充这些 bigStruct,还使用简单结构的规则(我拥有这些结构所需的所有内容,但我不知道如何解析以便我可以使用这些方法)。

抱歉我的英语不好,我希望这次我更清楚我想要什么。

最后一刻的编辑:我已经将整行与规则进行了匹配,然后使用 strtok 对其进行处理。有一种方法可以使用以前的规则来查看我必须创建什么类型的结构?我的意思是不要留下来并放置大量 if,而是使用 writex W([a-zA-Z0-9.#]) 来知道我必须创建这种结构?

最佳答案

好的,让我们看看这个代码片段如何为您工作:

// these are exclusive rules, so they do not overlap, for inclusive rules, use %s
%x dataStructure
%x addRules
%%
<dataStructure>-> { BEGIN addRules; }
\{ { BEGIN dataStructure; }
<addRules>; { BEGIN dataStructure; }
<dataStructure>\} { BEGIN INITIAL; }

<dataStructure>[^,]+ { ECHO; } //this will output each comma separated token
<dataStructure>. { } //ignore anything else
<dataStructure>\n { } //ignore anything else
<addRules>[^ ]+ { ECHO; } //this will output each space separated rule
<addRules>. { } //ignore anything else
<addRules>\n { } //ignore anything else
%%

我不完全确定你想要什么。编辑您的原始帖子以包含您的评论内容和示例,并请更好地组织您的英语。如果你无法在不自相矛盾的情况下解释你想要什么,我无法帮助你。

关于c - 尝试在 Flex 中使用 "recursive"标识符的规则进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820424/

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