2011-07-21 48 views
4

我需要解析簡單的DSL語言類似如下:如何選擇fsyacc/fslex或FParsec?

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#語言解析的入門(http://visualstudiogallery.msdn.microsoft.com/a075ff98-7e6f-47ce-a23c-838c1e488046/)模板 - 它避免了玩弄命令提示符。 – Samuel

回答

4

Lex/Yacc通常對於具有複雜語法的完整語言更好。當你有簡單的半簡單任務時,Parsec可以更快地工作。我認爲對你來說,Lex/Yacc會更合適。

4

您可能會發現FParsec的this bullet-point comparison帶有解析器生成器工具(例如fslex & fsyacc)和「手寫」遞歸下降解析器,可用於在可用替代方法之間進行選擇。

1

什麼是解析這種語言的最合適的工具?

我會使用活動模式。