Dart 如何使用';debug()';与';未定义();分析器
我正在尝试调试petitparser中的Dart 如何使用';debug()';与';未定义();分析器,dart,petitparser,Dart,Petitparser,我正在尝试调试petitparser中的未定义的解析器 首先查看不带调试的代码: import“包:petitparser/petitparser.dart”; main(){ var mynum=未定义(); var parser=string(“abc”).map((s){ mynum.set(字符串(“888”); 返回s; })&mynum; var result=parser.parse(“abc888”); 打印(结果); } 它打印: Success[1:7]: [abc, 88
未定义的解析器
首先查看不带调试的代码:
import“包:petitparser/petitparser.dart”;
main(){
var mynum=未定义();
var parser=string(“abc”).map((s){
mynum.set(字符串(“888”);
返回s;
})&mynum;
var result=parser.parse(“abc888”);
打印(结果);
}
它打印:
Success[1:7]: [abc, 888]
但是如果我添加debug
:
import“包:petitparser/petitparser.dart”;
main(){
var mynum=未定义();
var parser=string(“abc”).map((s){
mynum.set(字符串(“888”);
返回s;
})&mynum;
var result=debug(parser.parse)(“abc888”);
打印(结果);
}
它将失败:
Instance of 'SequenceParser'
Instance of 'ActionParser'
Instance of 'PredicateParser'[abc expected]
Success[1:4]: abc
Success[1:4]: abc
Instance of 'SetableParser'
Instance of 'FailureParser'[undefined parser]
Failure[1:4]: undefined parser
Failure[1:4]: undefined parser
Failure[1:4]: undefined parser
Failure[1:4]: undefined parser
我的用法有什么问题吗?当前的解析器调试(Parser)
实现与自修改解析器不兼容。它的实现使用Parser transformParser(Parser,Function)
创建完整语法图的转换副本。因此,您的操作函数对正在运行的代码没有任何影响,因为它修改了未使用的旧版本的语法
我可以想出一种方法来解决这个问题(debug可以修改解析器),但这似乎还有其他缺点。是否要提交并发布以进一步讨论此问题?最近无法访问github,我将稍后提交