gpt4 book ai didi

c# - 具有讽刺意味的是:如何让 KeyTerm 优先于变量?

转载 作者:可可西里 更新时间:2023-11-01 08:13:05 27 4
gpt4 key购买 nike

Irony 的相关 block 语法:

var VARIABLE = new RegexBasedTerminal("variable", @"(?-i)\$?\w+");

variable.Rule = VARIABLE;
tag_blk.Rule = html_tag_kw + attr_args_opt + block;
term_simple.Rule = NUMBER | STRING | variable | boolean | "null" | term_list;
term.Rule = term_simple | term_filter;
block.Rule = statement_list | statement | ";";
statement.Rule = tag_blk | directive_blk | term;

问题是“标签”和“变量”都可以出现在同一个地方。我希望我的解析器更喜欢标签而不是变量,但它总是更喜欢变量。我该如何改变它?

我尝试将 tag_blk.Rule 更改为 PreferShiftHere() + html_tag_kw + attr_args_opt + block;ImplyPrecedenceHere(-100) + html_tag_kw + attr_args_opt + block ; 但它没有任何帮助。解析器甚至不会提示歧义。

最佳答案

尝试更改“tag_blk.Rule”和“variable.Rule”的顺序,因为分词器通常在第一次匹配后进行,而变量在您的列表中排在第一位。

关于c# - 具有讽刺意味的是:如何让 KeyTerm 优先于变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616097/

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