2017-03-31 4 views
0

나는/구조입니다 도메인 특정 언어 (DSL)를 정의 할 수는 다음과 같은 규칙이 필요 내 이해를 돕기 위하여이문법 키트에서 구조화 된 데이터 형식을 정의하는 방법은 무엇입니까?

ROOT 
    NAME "my dsl" 
    TODO 
    DESC "foo" 
    END 
    TODO 
    DESC "bar" 
    END 
END 

같은 직렬 :로 시작하는

  • ROOT 및 TODO 객체를 키워드로 끝나고 END로 끝납니다.
  • ROOT에는 NAME 속성이 있어야합니다.
  • TODO는

가 어떻게이 BNF 이러한 룰을 표현할 수있는 루트에

  • TODO가 0..N 시간입니다 DESC 특성이 있어야합니다?

  • 답변

    0

    Custom Language Support Tutorial (단순 언어)을 기반으로 다음 BNF 스 니펫이 적합합니다.

    { 
        tokens=[ 
        space='regexp:[\s\n]+' 
        string="regexp:'.*'" 
        ] 
    } 
    
    simpleFile ::= 'ROOT' space nameAttr space (todoObj space)+ 'END' 
    nameAttr ::= 'NAME' space string 
    
    todoObj ::= 'TODO' space descAttr space 'END' 
    descAttr ::= 'DESC' space string