作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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/
我是一名优秀的程序员,十分优秀!