选择fsyacc/fslex还是FParsec?(这是一个关于IT技术的提问标题)

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>;
}

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

2
如果您选择使用FsYaac/FsLex,我强烈推荐使用F# Parsed Language Starter模板 - 这样可以避免在命令提示符中进行操作。 - Samuel
3个回答

4

对于具有复杂语法的完整语言,Lex/Yacc通常更好。当您有短而半简单的任务时,Parsec的处理速度更快。我认为对于您的情况,Lex/Yacc会更加适合。


4

你可能会发现与解析器生成工具(例如 fslex 和 fsyacc)以及“手写”的递归下降解析器的这个项目比较对于选择可用的替代方案非常有用。


1
我会使用主动模式来解析这种语言。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接