2012-05-10 2 views
2

xtext를 사용하여 ninja build에 대한 문법을 ​​정의하려고합니다.Ninja build in xText

내가 대답 할 수없는 세 가지 요령이 있습니다. 탭으로

  • 들여 쓰기 :
  • 들여 쓰기를 처리하는 방법을

. A 의 ninja 빌드 파일에는 탭 간격이 이전의 여러 변수 정의가있을 수 있습니다 (make 파일과 유사). :이

cflags = -g 
rule cc 
    command = gcc $cflags -c $in -o $out 
  • 크로스 변수 이름의 예약 설정을 참조 (... 파이썬, 만들기) 화이트 스페이스를 무시하고 탭으로 들여 쓰기를 수행, 언어가 SL 코멘트가 문제가된다

    예약 된 변수 집합이 있습니다. 자동 완성은 예약 변수와 사용자 정의 변수 세트를 모두 참조 할 수 있어야합니다.

    command = gcc $cflags -c $in -o $out 
    
    • 자동 완성 크로스

    org.eclipse.xtext.common.Terminals는 WS 토큰을 숨 깁니다 WS와 구분되지 않은 변수 이름을 참조. ID 토큰은 공백으로 구분됩니다. 그러나 ninja 스크립트 (make 파일과 비슷 함)에서 구문 분석은 가장 긴 일치하는 변수 이름을 사용하여 수행해야합니다.

    some_var = some_value 
    command = $some_var.h 
    

    모든 아이디어에 감사드립니다. 감사. https://www.eclipse.org/Xtext/releasenotes.html

    Whitespace-Aware Languages 섹션 상태 : 다음 Xtext 2.8.0 릴리스 밖으로

+0

이 항목에 대한 도움이 필요하십니까? –

+1

관련 질문보기 : http://stackoverflow.com/questions/7167834/xtext-grammar-for-language-with-significant-semantic-whitespace –

+0

활발하지는 않지만 대답은 좋을 것입니다. –

답변

1

확인

Xtext 2.8 공백이 구조를 지정하는 데 사용되는 언어, 예를 지원합니다 들여 쓰기를 사용하여 코드 블록을 구분합니다. Python. 이 토큰은 문법 규칙에 다른 단말기처럼 사용할 수 있습니다

terminal BEGIN: 'synthetic:BEGIN'; 
terminal END: 'synthetic:END'; 

:

WhitespaceAwareBlock: 
    BEGIN 
     ... 
    END; 

이클립스 예제에서 사용할 수있는 새로운 예를 들어 언어 홈 오토메이션 (파일이이 문법에 정의 된 합성 토큰을 통해 이루어집니다 → New → Example → Xtext Examples)는이 개념을 보여줍니다. 다음과 같은 코드가 허용됩니다.

Rule 'Report error' when Heater.error then 
    var String report 
    do 
     Thread.sleep(500) 
     report = HeaterDiagnostic.readError 
    while (report == null) 
    println(report) 

자세한 내용은 설명서에 나와 있습니다.