2016-07-21 1 views
2

ceylon/ceylon.ast 프로젝트에있는 다음 예제는 프로그래밍 방식으로 일부 AST를 작성하고 ceylon typechecker (com.redhat)에 의해 형식을 확인하는 방법을 보여줍니다. ceylon.compiler.typechecker.TypeChecker) :ceylon.ast에서 얻은 컴파일 단위를 ceylon 컴파일러에 공급하는 방법

https://github.com/ceylon/ceylon.ast/blob/master/source/test/ceylon/ast/samples/turingMachine/powerOfTwo.ceylon

다음 이후에 권장되는 방법은 입력 된 구문 트리 컴파일하기 위해 입력 된 구문 트리를 호출하는 것입니다 무엇 - 일반적으로 파일로 제공되는 컴파일 단위를 고려를 typechecker에 typed 구문 트리 (ceylon.ast 프로젝트에서)가 아닌가?

이 질문은 The Ceylon Typechecker: How to obtain the typed syntax tree?에 링크되어 있습니다.

답변

0

실제 프로젝트 컨텍스트에서 AST를 생성하고 컴파일하는 것은 실용적인 옵션이 아닌 것 같습니다. 컴파일러는 AST 만 제공하고 컴파일러에 디폴트 또는 가짜 정보 (예 : 파일 이름)를 제공하는 것보다 더 많은 정보가 필요합니다. 여전히 복잡한 작업입니다.

한편 실제 프로젝트의 컨텍스트에서 매크로 시스템의 일종으로 실제 컴파일 단위의 AST를 사용하는 것은 실론 프로그램이 부작용을 가질 수 있고 변형이이를 고려해야하기 때문에 의미가 없습니다 . 또한 변환 규칙은 종료 및 합집합이어야하며 절차 변 환기와 반대로 가능한 한 쉽게 유지 관리하는 형식으로 표현되어야합니다. 실론의 스위치 식은 올바른 도구가 아닙니다. 최악의 경우는 프로 시저 식 그루비의 AST 변압기를 변환하는 절차 형 Ast 변압기입니다.

면제는 실론 (ceylon)의 선언적 treelike 구조의 변형 일 것입니다. 그리고 그것은 제가 제 질문에서 생각한 바로 그 것입니다 : 데이터를 읽는 것 (반드시 실론 문법이 아님)과 평가 또는 선택적으로 컴파일 할 수 있도록 만드는 것.

관련 문제