사용자 지정 언어에 대한 ANTLR 문법을 사용하여 Visual Studio에서 언어 서비스를 개발하고 있습니다. 그러나 문법은 전 처리기 지시문을 처리하고 컴파일러의 효율성을 높이기 위해 C++ 코드로 채워집니다.여러 언어를 대상으로 한 ANTLR 문법을 사용하는 방법이 있습니까?
Visual Studio 용 언어 서비스는 C++로 작성하기가 쉽지 않으므로 동일한 언어에 대해 C# 파서가 필요합니다. 즉, language=CSharp2
을 설정하고 모든 C++ 코드를 문법에서 제거해야한다는 의미입니다.
문법에서 모든 C++ 코드를 제거하고 { $channel = HIDDEN; }
과 같은 간단한 문을 { $channel = TokenChannels.Hidden; }
으로 변환하는 약간의 수출업자를 작성하려고합니다.
더 똑똑한 방법이 있습니까? 템플릿을 통해, 또는 두 가지 언어를 문법에 포함시키기위한 작은 트릭을 통해?
C++을 관리되는 C++로 처리/변환 할 수 없습니까? 그것은 그것 주위의 C# 세계와 호환되어야합니다. –
ANTLR은 의미 론적 표현을위한 자체 추상 프로그래밍 언어를 정의해야하며 그렇지 않습니다. 진행중인 프로젝트에서 내가 선택한 것은 직접 사용할 수있는 Python을 대상으로하거나 Jython (테스트 된) 또는 Cython을 사용하는 다른 언어를 사용하여 Java 내에서 사용하는 것입니다. – Apalala