2016-08-12 2 views
1

나는에서오고 ES6 문법 번역하기 위해 노력하고있어 :antlr4 문법으로 변환하는 방법 ObjectLiteral [Yield]?

내 문제는 선언의 많은이 같은 포함되어 있습니다 :

ObjectLiteral[Yield] : 
{ } 
{ PropertyDefinitionList[?Yield] } 
{ PropertyDefinitionList[?Yield] , } 

이전 줄에 antlr4에 대한 번역이 있는지 알고 싶습니다.

+0

당신이 그들이 그렇게하는 방법을 기존의 문법 봤어 : 예를 들어

,

ObjectLiteral[Yield] : { } { PropertyDefinitionList[?Yield] } { PropertyDefinitionList[?Yield] , } 

은 두 작품의 약자입니까? 예 : 여기를보십시오 : https://github.com/antlr/grammars-v4/tree/master/ecmascript –

+0

예, 이미 저것을 먼저 보았습니다. 그러나이 문법은 ES5 또는 ES4에 대한 것입니다. 'Yield'를 사용하는 Lexeme가 없습니다. 미래의 예약어에 대해서만 선언. –

답변

2

한 가지 방법은 사양의 Grammar Notation 섹션의 정의를 따르는 것입니다. 즉, 왼쪽에 하나의 매개 변수가있는 프로덕션은 매개 변수의 가능한 '설정'마다 하나씩 두 개의 매개 변수가없는 프로덕션의 약어입니다.

ObjectLiteral : 
    { } 
    { PropertyDefinitionList } 
    { PropertyDefinitionList , } 

ObjectLiteral_Yield : 
    { } 
    { PropertyDefinitionList_Yield } 
    { PropertyDefinitionList_Yield , } 
+0

감사합니다. 나는 그렇게 할 것입니다. –