2012-11-21 5 views
4

나는 추상 구문 트리를 파일로 "덤프"하여 컴파일러로 구문 분석 한 다음 언어 및 컴파일러에 독립적 인 방식으로 코드를 저장할 수있는 방법을 찾고 있습니다. 그러나 나는 이것을하기위한 널리 인정 된 방법을 찾을 수 없었다. 그런 식으로 존재 하는가?추상 구문 트리 파일을 저장하는 표준 방법이 있습니까?

+0

일반적으로 AST는 일시적이며 파서의 정보를 컴파일러로 전달하는 데만 사용됩니다. 이 시점에서 일반적으로 바이트 코드를 저장합니다. – xbonez

+0

@xbonez : 나는 그 사실을 알고 있습니다. 내가 찾고있는 것은 파서의 출력을 저장하고 다른 컴파일러와 함께 사용하는 방법이다. – drakide

+1

예, 그렇습니다. LISP라고합니다. –

답변

5

대서양 표준시를 저장하는 기준이 없거나보다 중요한 점은 도구 중 을 공유하는 기준이 없습니다. 그 이유는 AST가 문법 (문법에 따라 달라지며, C는 특정 컴파일러와 버전에 따라 "많음"을 가짐)과 구문 분석 기술에 의존하기 때문입니다.

여러 언어로 보편적 인 AST 형식을 정의하려는 시도가 많이 있었지만 그 중 아무 것도 실제로 작동하지 않았습니다. 연산자의 의미가 너무 많이 다릅니다. ("+"를 고려해보십시오 : 포트란에서는 배열을 추가 할 수 있고 Java에서는 문자열을 추가 할 수 있습니다).

그러나 특정 AST를 쉽게 작성할 수 있습니다. 간단한 방법은 일종의 중첩 된 "괄호"를 사용하여 노드가 재귀 자식과 함께 식별되는 일종의 표기법을 사용하는 것입니다.

Lisp S- 표현식은이를 수행하는 일반적인 방법입니다. 당신은 see an example of the S-expression style generated by our tools 일 수 있습니다.

사람들도 XML을 사용해 왔지만 꽤 부피가 커졌습니다. XML output example here을 볼 수 있습니다.

관련 문제