可能重複:
Where can I find a yacc gammar for ECMAscript/Actionscript/JavascriptJavaScript的Yacc/Jay語法文件?
我試圖找到的JavaScript Yacc一個語法文件(最好是周杰倫,但由於Jay是Yacc的克隆我要細,因爲我需要在.NET上實現它)。
可能重複:
Where can I find a yacc gammar for ECMAscript/Actionscript/JavascriptJavaScript的Yacc/Jay語法文件?
我試圖找到的JavaScript Yacc一個語法文件(最好是周杰倫,但由於Jay是Yacc的克隆我要細,因爲我需要在.NET上實現它)。
爲什麼不給ANTLR一下 - 它看起來像它具有ECMAScript中做了一個語法:
http://www.antlr.org/grammar/list
ANTLR的顯然得到了一個C#運行時爲好,即使我只從Java中使用它。
我認爲你必須自己建造它,但有一些提示。
完整的JavaScript語法應該在某處可用;快速搜索顯示我JavaScript LL(1) Grammar。 (在RPA Toolkit: Parse JavaScript還有一個適用於JavaScript的BNF模式。)
由於您只是要求解析器,因此我假設您已經有一個詞法分析器。
將該語法轉換爲Yacc文件確實看起來並不可怕。作爲一個例子,有一個C grammar for Yacc。
你是否真的需要從頭開始實施它?一些圖書館如Jint可以做同樣的工作,速度更快,更安全。 Jint是.NET中的一個javascript解釋器 - 得到了我自己的認可。
我用COCO/R編寫我的解析器,用於C#http://ssw.jku.at/coco/,因爲它只是在不需要配置的情況下工作。但是,它不是與Yacc,Flex,Bison等源代碼兼容。但是,它的語法更簡單。此外,COCO/R支持一些與C#不同的.NET語言。 ANTLR爲C#工作有更多的功能,但它需要更多的時間在文檔閱讀和工具設置上。
你真的*做過*這個嗎?構建* working *解析器比尋找真正的語言更難。人們似乎認爲,輕鬆地將語法融合在一起就可以了。祝你好運。 (是的,我已經完成了這項工作,有幾種完整的語言)。 – 2011-12-15 18:51:50