마침내 오늘 전체 문법이 완성되어 "String is too long"Java 문제가 발생했습니다.C# target을 사용할 때 "표현식이 너무 길거나 복잡합니다."라는 메시지가 나타납니다.
이 문제가 해결되었지만 다른 제한 사항이 적용되는 것을 두려워서 C# 대상 사용으로 전환하기로 결정했습니다. 저는 경험 많은 C++ 프로그래머이고 Antlr4를 사용할 수 있도록 Java를 배웠습니다. C#으로 전환하는 것은별로 중요하지 않으며 배우기위한 새로운 구문입니다.
지금은 메시지를 받고 있습니다 : 1> CSC : 치명적인 오류 CS1647 : 표현식이 너무 길거나 복잡
제공되는 다른 정보가 없습니다 컴파일 할 수 있습니다. Antlr4에 의해 생성 된 코드를 본 사람이 있습니까? 웹에서 메시지를 검색했지만 도움이 될만한 것이 발견되지 않았습니다 (수정해야하는 이전 버그에 대한 많은 참조).
내 프로젝트는 현재 2 개의 .g4 파일 (렉서 및 구문 분석기 문법)과 함께 하나의 .cs 파일로 구성됩니다.
문법은 매우 복잡합니다 (IEEE 표준에 정의 된 언어 구현).
나는 원래 아무런 문제없이 자바 타겟을 사용하여 문법의 서브 세트를 구현했다.
모든 포인터가 감사하겠습니다.
다음은 몇 가지 추가 정보입니다. 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# 컴파일러는이 많은 연결을 처리 할 수없는 것 같습니다. 내 언어에서 키워드를 제거하고 해시 테이블을 만드는 것을 피하려고했습니다. 이것은 현재로서는 유일한 해결책 일 수 있습니다.