2012-11-23 3 views
-1

나는 ANTLR 3를 사용하여 간단한 문법을 ​​가지고있다. 따라서 값은 선택적 일 수 있으며 값은 다른 값 옆에 쉼표가옵니다. 따라서 예 :ANTLR NoViableAltException

값은 true 또는 true, true, true, true 일 수 있습니다. 내가 해석 다음 작품을 할 때

: 나는 사실, 진정한하려고 할 때

또는 사실

사실,

사실을 사실이 나무는 사실, 사실과 함께 표시됩니다 만 보여줍니다 NoViableAltException.

elements: value? | (value ',' value)*; 

하지만이 중 하나가 작동하지 않습니다

는 I도 노력했다.

내가 잘못 가고있는 아이디어가 있습니까?

EDIT :

insert  : 'INSERT INTO TABLE' 'VALUES' '('elements')'';'; 

답변

1

elements 규칙은 단지 0 또는 1의 값, 또는 쌍 사이에 콤마, 콤마에 의해 분리되는 한 쌍의 수를 도출하도록 기입된다. 쉼표의

elements: (value (',' value)*)?; 

이 (인해 ? 운영자에게) 전혀 아무것도 할 수 있습니다, 또는 단일 값이 0 이상 (*) 뒤에 발생과 :

은 분명히 당신이 원하는 것은 이것이다 값.

+0

한가지는, 나는 아무것도 허용하고 싶지 않습니다. 단일 값이 입력되거나 값, 값입니다. 어떻게이 일을 끝낼 수 있습니까? – user1646481

+0

원래 설명에서 위 편집을 참조하십시오. 삽입물은 아무 것도받지 않습니다. – user1646481

+0

해결 되었습니까? 대신 +가 추가되었습니다. 감사. – user1646481