选择什么fsyacc / fslex或FParsec?

时间:2011-07-21 12:07:35

标签: f# fsyacc fslex fparsec

我需要解析简单的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>;
}

解析这种语言最合适的工具是什么?

3 个答案:

答案 0 :(得分:4)

对于语法复杂的完整语言,Lex / Yacc通常更好。当您有简短的半简单任务时,Parsec可以更快地使用。我认为对于你的情况,Lex / Yacc会更合适。

答案 1 :(得分:4)

你可能会发现this bullet-point comparison的FParsec有解析器生成器工具(例如fslex&amp; fsyacc)和“手写”递归下降解析器,可用于在可用的替代方案之间进行选择。

答案 2 :(得分:1)

  

解析这种语言最合适的工具是什么?

我会使用活动模式。