我終於在今天早些時候獲得了完整的語法,並遇到了「字符串太長」的Java問題。使用c#時出現「表達式太長或者編譯複雜」target
我知道這個問題已經解決,但我害怕碰到其他限制,所以我決定切換到使用C#目標。我是一名經驗豐富的C++程序員,學習Java可以使用Antlr4,切換到C#沒什麼大不了的,只是一種新的學習語法。
我現在得到的消息: 1> CSC:致命錯誤CS1647:表達式過長或複雜的編譯
有沒有提供其他信息。 有沒有人用Antlr4生成的代碼看過這個? 我在網上搜索了這條消息,但沒有發現任何可以幫助的東西(很多引用了應該修復的舊bug)。
我的項目目前由一個.cs文件和2個.g4文件(詞法分析器和分析器語法)組成。
語法非常複雜(實現在IEEE標準中定義的語言)。
我最初使用Java目標實現了一部分語法,沒有任何問題。
任何指針表示讚賞。
這裏有一些額外的信息。我正在使用Visual Studio 2012. 它似乎與我最初看到的Java問題的不同版本相同。
我能夠創建一個包含剛行了C#示例文件:
public static readonly string _serializedATN =
"\x5\x3\x176\x234A\x4\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t"+
"\x6\x4\a\t\a\x4\b\t\b\x4\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4"+
"\xE\t\xE\x4\xF\t\xF\x4\x10\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13"+
"\x4\x14\t\x14\x4\x15\t\x15\x4\x16\t\x16\x4\x17\t\x17\x4\x18\t\x18\x4\x19"+
"\t\x19\x4\x1A\t\x1A\x4\x1B\t\x1B\x4\x1C\t\x1C\x4\x1D\t\x1D\x4\x1E\t\x1E"+
"\x4\x1F\t\x1F\x4 \t \x4!\t!\x4\"\t\"\x4#\t#\x4$\t$\x4%\t%\x4&\t&\x4\'"+
"\t\'\x4(\t(\x4)\t)\x4*\t*\x4+\t+\x4,\t,\x4-\t-\x4.\t.\x4/\t/\x4\x30\t"+
"\x30\x4\x31\t\x31\x4\x32\t\x32\x4\x33\t\x33\x4\x34\t\x34\x4\x35\t\x35"+
...
...
"\x2316\x231E\x2324\x2328\x232D";
和問題是重複的。該線長4400多條。 C#編譯器似乎無法處理這麼多的concat。我試圖避免從我的語言中刪除關鍵字,並與他們創建一個哈希表。這可能是我目前唯一的解決方案。