2016-11-21 1 views
0

나는 antlr4로 포팅하려고하는 스크립팅 언어를 상속 받았다. 스크립팅 언어의 일부는 중괄호를 사용하여 변수를 식별합니다.Antlr 4 중괄호 사용

세트 {myVariable} = "5";

나는 variableExpression이 새로운 가이드 라인으로 자바 문법을 약간 사용하지만 식별자와 표현식은 java의 복사본입니다. 나는 가지고있다 : variableExpression : '{'Identifier '}' ;

parExpression : '('표현식 ')' ;

하지만 {foo} = "5"로 설정하면 {가 누락되었습니다.

중괄호를()로 변경하면 작동합니다. ! 공장. $하지 않습니다. 이 작품을 만들기 위해 특정 방식으로 도피해야 할 특수 문자가 있습니까? 아니요, 중괄호 사용을 변경할 수 없습니다 (기존 코드 문제).

나는 현재 의사와 웹을 통해 지침을 찾고 있지만 누군가가 이미 답변을 알고 있다면 알려 주시기 바랍니다.

감사합니다.

답변

1

이러한 문자 사용에 대한 제한이 없습니다 {}()!$.

WS : [ \r\n\t] -> skip; 
NAME : [a-zA-Z0-9]+; 
STRING : '\"' .*? '\"'; 

script 
    : varDeclaration+ EOF; 

varDeclaration 
    : 'set' variable '=' STRING; 

variable 
    : '(' NAME ')' 
    | '{' NAME '}' 
    | '!' NAME '!' 
    | '$' NAME '$' 
    ; 

이 문법은 아래 코드와 일치 할 수 있습니다 : 예를 들어의 간단한 문법을 ​​살펴 보자

set {var1} = "value1" 
set (var2) = "value2" 
set !var3! = "value3" 
set $var4$ = "value4" 

결과 AST는 다음과 같습니다

enter image description here