4

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

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

4

3 回答 3

4

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

于 2011-07-21T12:15:29.887 回答
4

您可能会发现FParsec 与解析器生成器工具(例如 fslex 和 fsyacc)和“手写”递归下降解析器的这个要点比较有助于在可用的替代方案之间进行选择。

于 2011-07-21T18:47:53.140 回答
1

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

我会使用主动模式。

于 2013-10-05T02:55:03.547 回答