2012-12-04 2 views
5

xtext를 사용하여 특정 언어에 대한 편집기를 생성합니다. 내 새로운 언어로 편집기를 사용할 때, 코드 완성과 색칠과 같은 멋진 xtext 기능을 모두 가지고 있습니다. 내가 뭘 할 수 있기를 바랄까하는 것은 편집자의 텍스트 구조를 시각화하는 것입니다.xtext에서 구문 분석 트리/노드 모델/AST보기

xtext가 내부 AST와 구문 분석 트리를 가지고 있다는 것을 알고 있습니다. (나는이 노드를 '노드 모델'이라고 부릅니다.)이 트리를 시각화 할 수있는 방법이 있습니까?

답변

1

콘텐츠 개요를 확인해야합니다. 내 것을 사용자 지정했지만 기본 모델은 모델의 구조를 반영한다고 생각합니다.

2

이 당신을 도울 수 있습니다 https://github.com/OLibutzki/xtext.tools

그것은 노드 모델과 의미 론적 모델 (AST)에 대한 개요를 제공합니다.

+0

@Joe,이 답변 수락을 제안 할 수 있습니까? – thSoft

1

xtend에 간단한 해결책은 (EObject.toString()에서 기본적으로 수행 한 반성 기준) : 호출과 같은 덤프 (someEObject, '')에서

def static String dump(EObject mod_, String indent) { 
    var res = indent + mod_.toString.replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ') 

    for (a :mod_.eCrossReferences) 
     res += ' ->' + a.toString().replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ') 
    res += "\n" 
    for (f :mod_.eContents) { 
     res += f.dump (indent+" ") 
    } 
    return res 
} 

출력 것이다 반환 :

ExpressionModel 
Variable (name: i) 
    Plus 
     IntConst (value: 1) 
     Plus 
      IntConst (value: 2) 
      Plus 
       IntConst (value: 3) 
Variable (name: j) 
    Plus 
     VarRef ->Variable (name: i) 
     Plus 
      IntConst (value: 4) 
      Plus 
       IntConst (value: 5)