Antlr3 문법 파일이있는 C# 솔루션이 있으며 Anltr4로 업그레이드하려고합니다. 문법은 쉬운 부분이었습니다 (크기가 더 좋았고 크기의 1/3이되었습니다!). 파서를 생성하는 것은 까다로운 부분으로 판명되었습니다.Antlr4 생성 된 파일의 대상 및 출력 경로
이전 솔루션에서는 문법 파일이 변경되었을 때 AntlrWorks를 실행하여 lexer 및 parser .cs 파일을 업데이트했습니다. 렉서와 파서는 문법과 같은 프로젝트에 직접 포함되었으므로 파서 주변의 프레임 워크는이를 직접 사용할 수 있습니다.
C#의 Antlr4 대상에서 (적어도 기본적으로) 생성 된 Parser C# 클래스의 출력 경로가 중간 디렉터리에 있음을 확인했습니다. obj \ Debug. 즉, 동일한 프로젝트에서 파서를 직접 사용할 수 없습니다. 생성 된 소스를 내 sln에서 사용할 수있게하려면 출력 경로를 변경해야합니까? 내 슬론에서 그걸 원하지 않니?
구문 분석기 생성을 위해 별도의 프로젝트를 만들려고했습니다. 즉, 문법 파일 만 포함 된 프로젝트입니다. Antlr4 타겟을 사용하여이 프로젝트를 빌드하면 파서 클래스가 필요한 프로젝트에서 결과 어셈블리를 참조 할 수 있습니다. 그러나이 프로젝트가 솔루션에 포함되어 있다면로드 된 프로젝트의 소스 파일에 인텔리 센스를 기반으로하기 때문에 Visual Studio에서 인텔리 센스를 얻지 못하므로 아직 유용하지 않습니다. 필자가 제대로 작동하도록하는 유일한 방법은 파서 프로젝트를 빌드 한 다음 다른 프로젝트에서 프로젝트가 아닌 어셈블리 파일로 참조하도록하는 것입니다.
편집 :
ANTLR 관심 목록에보고 후 나는 인텔리의 문제가 Resharpers 오류가있을 수 있음을 나타내는이 스레드를 발견했다. 이 경우, 내 질문에 오히려 어떻게 Antlr4 및 Resharper 내 솔루션을 사용하여 유지하는 것입니다? https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg
옵션 0은 잘못된 오류 하이라이트를 표시하고 인텔리 센스가 없음을 받아들입니다. VS는 R # 없이는 실제로 사용할 수 없으므로 1) 슬프게도 옵션이 아닙니다. 프로젝트별로 R #을 끌 수 있다면 좋겠다. R # 포럼에 가져 갔고 JetBrains에서도 지원 문제를 제기 할 생각이다. Antlr 대상의 출력을 중간 dir이 아닌 원본 dir로 라우팅 할 수 있습니까? 윌은 Antlr4 타겟을 변경해야하거나, 타겟에 이미 속성이 있습니다. –