2016-08-12 5 views
1

Ich versuche, die es6 Grammatik zu übersetzen aus kommend:Wie übersetzt man in antlr4 Grammatik ObjectLiteral [Yield]?

ist

Mein Problem, dass viele Erklärungen etwas wie folgt enthält:

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

Ich würde gerne wissen, ob es eine Übersetzung für antlr4 für die vorherigen Zeilen gibt.

+0

Haben Sie bei vorhandenen Grammatiken sehen, wie sie das tun? Z.B. schau mal hier: https://github.com/antlr/grammars-v4/tree/master/ecmascript –

+0

Ja, das habe ich mir schon vorher angeschaut. Allerdings ist diese Grammatik für ES5 oder ES4 nicht sicher. Es hat kein Lexeme mit 'Yield'. Nur die Erklärung für zukünftige reservierte Wörter. –

Antwort

2

Ein Ansatz wäre, den Definitionen im Abschnitt Grammar Notation der Spezifikation zu folgen. Das heißt, eine Produktion mit einem Parameter auf der linken Seite ist eine Abkürzung für zwei parameterlose Produktionen, eine für jede mögliche 'Einstellung' des Parameters.

Zum Beispiel

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

ist eine Abkürzung für die beiden Produktionen:

ObjectLiteral : 
    { } 
    { PropertyDefinitionList } 
    { PropertyDefinitionList , } 

und

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

danke, ich werde das tun –

Verwandte Themen