Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.50 KB | None | 0 0
  1. Program ::= SourceElements?
  2. SourceElements ::= SourceElement | SourceElements SourceElement
  3. SourceElement ::= Statement | FunctionDeclaration
  4.  
  5.  
  6. FunctionDeclaration ::= 'function' Identifier '(' FormalParameterList? ')' '{' FunctionBody '}'
  7. FormalParameterList ::= Identifier | FormalParameterList ',' Identifier
  8. FunctionBody ::= SourceElements?
  9.  
  10. Statement ::= Block | VariableStatement | EmptyStatement | ExpressionStatement | IfStatement | IterationStatement | ContinueStatement | BreakStatement |
  11. ReturnStatement | WithStatement | LabelledStatement | SwitchStatement | ThrowStatement | TryStatement | DebuggerStatement
  12. Block ::= '{' StatementList? '}'
  13.  
  14. StatementList ::= Statement | StatementList Statement
  15.  
  16. VariableStatement ::= 'var' VariableDeclarationList ';'
  17. VariableDeclarationList ::= VariableDeclaration | VariableDeclarationList ',' VariableDeclaration
  18.  
  19. VariableDeclaration ::= Identifier Initialiser?
  20.  
  21. Initialiser ::= '=' AssignmentExpression
  22.  
  23. EmptyStatement ::= ';'
  24.  
  25. ExpressionStatement ::= (Expression - ('{'|'function')) ';'
  26.  
  27. IfStatement ::= 'if' '(' Expression ')' Statement 'else' Statement | 'if' '(' Expression ')' Statement
  28.  
  29. IterationStatement ::= 'do' Statement 'while' '(' Expression ')'';' | 'while' '(' Expression ')' Statement |
  30. 'for' '(' ExpressionNoIn? ';' Expression? ';' Expression? ')' Statement | 'for' '(' 'var' VariableDeclarationListNoIn ';' Expression? ';' Expression? ')' Statement |
  31. 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement | 'for' '(' 'var' VariableDeclarationNoIn 'in' Expression ')' Statement
  32.  
  33. ContinueStatement ::= 'continue' ';' | 'continue' (. - LineTerminator) Identifier ';'
  34.  
  35. BreakStatement ::= 'break' ';'| 'break' (. - LineTerminator ) Identifier ';'
  36.  
  37. ReturnStatement ::= 'return' ';' | 'return' (. - LineTerminator ) Expression ';'
  38.  
  39. WithStatement ::= 'with' '(' Expression ')' Statement
  40.  
  41. SwitchStatement ::= 'switch' '(' Expression ')' CaseBlock
  42.  
  43. CaseBlock ::= '{' CaseClauses? '}' | '{' CaseClauses? DefaultClause CaseClauses? '}'
  44.  
  45. CaseClauses ::= CaseClause | CaseClauses CaseClause
  46.  
  47. CaseClause ::= 'case' Expression ':' StatementList?
  48.  
  49. DefaultClause ::= 'default' ':' StatementList?
  50.  
  51. LabelledStatement ::= Identifier ':' Statement
  52.  
  53. ThrowStatement ::= 'throw' (. - LineTerminator ) Expression ';'
  54.  
  55. TryStatement ::= 'try' Block Catch | 'try' Block Finally | 'try' Block Catch Finally
  56.  
  57. Catch ::= 'catch' '(' Identifier ')' Block
  58.  
  59. Finally ::= 'finally' Block
  60.  
  61. DebuggerStatement ::= 'debugger' ';'
  62.  
  63.  
  64. Expression ::= AssignmentExpression | Expression ',' AssignmentExpression
  65.  
  66. AssignmentExpression ::= ConditionalExpression | LeftHandSideExpression '=' AssignmentExpression | LeftHandSideExpression AssignmentOperator AssignmentExpression
  67.  
  68. LeftHandSideExpression ::= NewExpression | CallExpression
  69. MemberExpression ::= PrimaryExpression | FunctionExpression | MemberExpression '[' Expression ']' | MemberExpression '.' IdentifierName | 'new' MemberExpression Arguments
  70. PrimaryExpression ::= 'this' | Identifier | Literal | ArrayLiteral | ObjectLiteral | '(' Expression ')'
  71.  
  72. ArrayLiteral ::= '[' Elison? ']' | '[' ElementList ']' | '[' ElementList ',' Elison? ']'
  73. ElementList ::= Elison? AssignmentExpression | ElementList ',' Elison? AssignmentExpression
  74. Elison ::= ',' | Elison ','
  75.  
  76. ObjectLiteral ::= '{' '}' | '{' PropertyNameAndValueList '}' | '{' PropertyNameAndValueList ',' '}'
  77. PropertyNameAndValueList ::= PropertyAssignment | PropertyNameAndValueList ',' PropertyAssignment
  78. PropertyAssignment ::= PropertyName ':' AssignmentExpression | 'get' PropertyName '(' ')' '{' FunctionBody '}' | 'set' PropertyName '(' PropertySetParameterList ')' '{' FunctionBody '}'
  79. PropertyName ::= IdentifierName | StringLiteral | NumericLiteral
  80. PropertySetParameterList ::= Identifier
  81.  
  82.  
  83. FunctionExpression ::= 'function' Identifier? '(' FormalParameterList? ')' '{' FunctionBody '}'
  84. NewExpression ::= MemberExpression | 'new' NewExpression
  85. CallExpression ::= MemberExpression Arguments | CallExpression Arguments | CallExpression '[' Expression ']' | CallExpression '.' IdentifierName
  86. Arguments ::= '(' ')' | '(' ArgumentList ')'
  87. ArgumentList ::= AssignmentExpression | ArgumentList ',' AssignmentExpression
  88.  
  89. ConditionalExpression ::= LogicalORExpression | LogicalORExpression '?' AssignmentExpression ':' AssignmentExpression
  90. LogicalORExpression ::= LogicalANDExpression | LogicalORExpression '||' LogicalANDExpression
  91. LogicalANDExpression ::= BitwiseORExpression | LogicalANDExpression '&&' BitwiseORExpression
  92. BitwiseORExpression ::= BitwiseXORExpression | BitwiseORExpression '|' BitwiseXORExpression
  93. BitwiseXORExpression ::= BitwiseANDExpression | BitwiseXORExpression '^' BitwiseANDExpression
  94. BitwiseANDExpression ::= EqualityExpression | BitwiseANDExpression '&' EqualityExpression
  95. EqualityExpression ::= RelationalExpression | EqualityExpression '==' RelationalExpression | EqualityExpression '!=' RelationalExpression | EqualityExpression '===' RelationalExpression | EqualityExpression '!==' RelationalExpression
  96. RelationalExpression ::= ShiftExpression | RelationalExpression '<' ShiftExpression | RelationalExpression '>' ShiftExpression | RelationalExpression '<=' ShiftExpression | RelationalExpression '>=' ShiftExpression | RelationalExpression 'instanceof' ShiftExpression | RelationalExpression 'in' ShiftExpression
  97. ShiftExpression ::= AdditiveExpression | ShiftExpression '<<' AdditiveExpression | ShiftExpression '>>' AdditiveExpression | ShiftExpression '>>>' AdditiveExpression
  98. AdditiveExpression ::= MultiplicativeExpression | AdditiveExpression '+' MultiplicativeExpression | AdditiveExpression '-' MultiplicativeExpression
  99. MultiplicativeExpression ::= UnaryExpression | MultiplicativeExpression '*' UnaryExpression | MultiplicativeExpression '/' UnaryExpression | MultiplicativeExpression '%' UnaryExpression
  100. UnaryExpression ::= PostfixExpression | 'delete' UnaryExpression | 'void' UnaryExpression | 'typeof' UnaryExpression | '++' UnaryExpression | '--' UnaryExpression | '+' UnaryExpression | '-' UnaryExpression | '~' UnaryExpression | '!' UnaryExpression
  101. PostfixExpression ::= LeftHandSideExpression | LeftHandSideExpression (. - LineTerminator) '++' | LeftHandSideExpression (. - LineTerminator) '--'
  102.  
  103. AssignmentOperator ::= '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|='
  104.  
  105. LineTerminator ::= '<LF>' | '<CR>' | '<LS>' | '<PS>'
  106.  
  107. Identifier ::= IdentifierName - ReservedWord
  108. IdentifierName ::= IdentifierStart | IdentifierName IdentifierPart
  109. IdentifierStart ::= UnicodeLetter | '$' | '_' | '\' UnicodeEscapeSequence
  110. IdentifierPart ::= IdentifierStart | UnicodeCombiningMark | UnicodeDigit | UnicodeConnectorPunctuation | '<ZWNJ>' | '<ZWJ>'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement