gpt4 book ai didi

c - 我们如何定义用于识别给定系列中特定序列的规则?

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:00 25 4
gpt4 key购买 nike

我想知道是否可以识别给定系列中的某个序列。

lex 产生三种不同的标记:STARTAMINOSTOP。我想通过 YACC 识别所有以 START 开头、具有一系列 AMINO 标记并以 结尾的序列停止。示例:START AMINO AMINO ... AMINO STOP

我以前从未使用过YACC/bison,所以我尝试过:

%%
seq_2: START seq_1 STOP {printf("%s", $2);};
seq_1: seq_1 AMINO
%%

但是这些规则不起作用。

  • 尝试通过 lexYACC 解决这个问题是否可能(并且方便)?
  • 如果可能的话,哪种方法是解决问题的好方法?

最佳答案

您可能会遇到错误,因为您的“seq_1”规则末尾没有分号。例如:

seq_1 : seq_1 AMINO ;

此外,正如您目前所拥有的那样,seq_1 不可能永远终止。您可以通过给它一个额外的终端规则来解决这个问题。

如果 'seq_1' 为空是有效的,那么您可以按如下方式进行:

seq_1 : seq_1 AMINO ;
seq_1 : ;

或者,更典型的写法是:

seq_1 : seq_1 AMINO
|
;

如果在 START 和 STOP 之间应该总是至少有一个 AMINO,那么这样做:

seq_1 : AMINO
| seq_1 AMINO
;

关于c - 我们如何定义用于识别给定系列中特定序列的规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034353/

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