我需要解析简单的DSL语言,如下所示:
import "library.txt"
def <int, bool, byte> main(int param1, bool param2)
{
var a = f4(param1); // or var d = f1(f2(f3(f4(param1))));
var b = f3(a);
var c = f2(b);
var d = f1(c);
return <d, param2, b0>;
}
解析这种语言最合适的工具是什么?
答案 0 :(得分:4)
对于语法复杂的完整语言,Lex / Yacc通常更好。当您有简短的半简单任务时,Parsec可以更快地使用。我认为对于你的情况,Lex / Yacc会更合适。
答案 1 :(得分:4)
你可能会发现this bullet-point comparison的FParsec有解析器生成器工具(例如fslex&amp; fsyacc)和“手写”递归下降解析器,可用于在可用的替代方案之间进行选择。
答案 2 :(得分:1)
解析这种语言最合适的工具是什么?
我会使用活动模式。