我試圖獲得一個基本的ECMAScript解析器的工作,並發現一個完整的ANTLR語法爲ECMAScript 3,它似乎編譯好並生成適當的Lexer/Parser/Walker Java文件。ANTLR解析器掛在proxy.handshake調用
CharStream MyChars = new ANTLRFileStream(FileName); // FileName is valid
ES3Lexer MyLexer = new ES3Lexer(MyChars);
CommonTokenStream MyTokens = new CommonTokenStream(MyLexer);
MyTokens.setTokenSource(MyLexer);
ES3Parser MyParser = new ES3Parser(MyTokens); // hangs here
ES3Parser.program_return MyReturn = MyParser.program();
我:
然而,在實際嘗試一些簡單的測試代碼中使用它(以下guide on ANTLR wiki)(適用於Eclipse 3.5中ANTLR IDE plugin運行),它只是試圖創建解析器時掛起我們已經將問題追蹤到ES3Parser
的構造函數中,它在調用函數proxy.handshake()
- 在此行之前,我可以成功執行System.out.println("text")
,但在此之後,我什麼也得不到。所以,我該如何去找出它掛起的原因,並停止它 - 甚至只是繞過這一部分(可以/應該禁用調試?) - 只要它能讓它工作並允許我繼續下去做有用的東西。