2 #include "Cycript.tab.hh"
3 int cylex(YYSTYPE *lvalp, YYLTYPE *llocp);
11 CYExpression *expression_;
12 CYTokenIdentifier *identifier_;
13 CYTokenNumber *number_;
14 CYTokenString *string_;
28 %parse-param { CYParser *context }
31 %token AmpersandAmpersand "&&"
32 %token AmpersandEqual "&="
34 %token CarrotEqual "^="
36 %token EqualEqual "=="
37 %token EqualEqualEqual "==="
38 %token Exclamation "!"
39 %token ExclamationEqual "!="
40 %token ExclamationEqualEqual "!=="
42 %token HyphenEqual "-="
43 %token HyphenHyphen "--"
44 %token HyphenRight "->"
48 %token LeftLeftEqual "<<="
50 %token PercentEqual "%="
59 %token RightEqual ">="
60 %token RightRight ">>"
61 %token RightRightEqual ">>="
62 %token RightRightRight ">>>"
63 %token RightRightRightEqual ">>>="
65 %token SlashEqual "/="
79 %token OpenBracket "["
80 %token CloseBracket "]"
85 %token Continue "continue"
86 %token Default "default"
87 %token Delete "delete"
91 %token Finally "finally"
93 %token Function "function"
96 %token InstanceOf "instanceof"
99 %token Return "return"
100 %token Switch "switch"
105 %token TypeOf "typeof"
111 %token <identifier_> Identifier
112 %token <number_> NumericLiteral
113 %token <string_> StringLiteral
140 /* Objective-C Extensions {{{ */
142 : "," AssignmentExpression VariadicCall
152 : IdentifierOpt ":" AssignmentExpression SelectorCall_
161 : "[" AssignmentExpression SelectorList "]"
165 /* 11.1 Primary Expressions {{{ */
176 /* 11.1.4 Array Initialiser {{{ */
178 : "[" ElementList "]"
182 : AssignmentExpression
192 : Element ElementList_
195 /* 11.1.5 Object Initialiser {{{ */
197 : "{" PropertyNameAndValueListOpt "}"
200 PropertyNameAndValueList_
201 : "," PropertyNameAndValueList
205 PropertyNameAndValueListOpt
206 : PropertyNameAndValueList
210 PropertyNameAndValueList
211 : PropertyName ":" AssignmentExpression PropertyNameAndValueList_
224 | MemberExpression "[" Expression "]"
225 | MemberExpression "." Identifier
226 | "new" MemberExpression Arguments
231 | "new" NewExpression
235 : MemberExpression Arguments
236 | CallExpression Arguments
237 | CallExpression "[" Expression "]"
238 | CallExpression "." Identifier
252 : AssignmentExpression ArgumentList_
256 : "(" ArgumentListOpt ")"
259 LeftHandSideExpression
265 : LeftHandSideExpression
266 | LeftHandSideExpression "++"
267 | LeftHandSideExpression "--"
272 | "delete" UnaryExpression
273 | "void" UnaryExpression
274 | "typeof" UnaryExpression
275 | "++" UnaryExpression
276 | "--" UnaryExpression
277 | "+" UnaryExpression
278 | "-" UnaryExpression
279 | "~" UnaryExpression
280 | "!" UnaryExpression
281 | "*" UnaryExpression
282 | "&" UnaryExpression
285 MultiplicativeExpression
287 | MultiplicativeExpression "*" UnaryExpression
288 | MultiplicativeExpression "/" UnaryExpression
289 | MultiplicativeExpression "%" UnaryExpression
293 : MultiplicativeExpression
294 | AdditiveExpression "+" MultiplicativeExpression
295 | AdditiveExpression "-" MultiplicativeExpression
300 | ShiftExpression "<<" AdditiveExpression
301 | ShiftExpression ">>" AdditiveExpression
302 | ShiftExpression ">>>" AdditiveExpression
307 | RelationalExpression "<" ShiftExpression
308 | RelationalExpression ">" ShiftExpression
309 | RelationalExpression "<=" ShiftExpression
310 | RelationalExpression ">=" ShiftExpression
311 | RelationalExpression "instanceof" ShiftExpression
312 | RelationalExpression "in" ShiftExpression
316 : RelationalExpression
317 | EqualityExpression "==" RelationalExpression
318 | EqualityExpression "!=" RelationalExpression
319 | EqualityExpression "===" RelationalExpression
320 | EqualityExpression "!==" RelationalExpression
325 | BitwiseANDExpression "&" EqualityExpression
329 : BitwiseANDExpression
330 | BitwiseXORExpression "^" BitwiseANDExpression
334 : BitwiseXORExpression
335 | BitwiseORExpression "|" BitwiseXORExpression
339 : BitwiseORExpression
340 | LogicalANDExpression "&&" BitwiseORExpression
344 : LogicalANDExpression
345 | LogicalORExpression "||" LogicalANDExpression
348 ConditionalExpression
349 : LogicalORExpression
350 | LogicalORExpression "?" AssignmentExpression ":" AssignmentExpression
354 : ConditionalExpression
355 | LeftHandSideExpression AssignmentOperator AssignmentExpression
384 : AssignmentExpression Expression_
391 | ExpressionStatement
405 : "{" StatementListOpt "}"
409 : Statement StatementListOpt
414 : "var" VariableDeclarationList ";"
417 VariableDeclarationList_
418 : "," VariableDeclarationList
422 VariableDeclarationList
423 : VariableDeclaration VariableDeclarationList_
427 : Identifier InitialiserOpt
436 : "=" AssignmentExpression
453 : "if" "(" Expression ")" Statement ElseStatementOpt
464 : "do" Statement "while" "(" Expression ")" ";"
468 : "while" "(" Expression ")" Statement
472 : "for" "(" ForStatementInitialiser ";" ExpressionOpt ";" ExpressionOpt ")" Statement
475 ForStatementInitialiser
477 | "var" VariableDeclarationList
481 : "for" "(" ForInStatementInitialiser "in" Expression ")" Statement
484 ForInStatementInitialiser
485 : LeftHandSideExpression
486 | "var" VariableDeclaration
490 : "continue" IdentifierOpt ";"
494 : "break" IdentifierOpt ";"
498 : "return" ExpressionOpt ";"
502 : "with" "(" Expression ")" Statement
506 : "switch" "(" Expression ")" CaseBlock
510 : "{" CaseClausesOpt "}"
514 : CaseClause CaseClausesOpt
515 | DefaultClause CaseClausesOpt
520 : "case" Expression ":" StatementListOpt
524 : "default" ":" StatementListOpt
528 : Identifier ":" Statement
532 : "throw" Expression ";"
536 : "try" Block CatchOpt FinallyOpt
540 : "catch" "(" Identifier ")" Block
550 : "function" Identifier "(" FormalParameterList ")" "{" FunctionBody "}"
554 : "function" IdentifierOpt "(" FormalParameterList ")" "{" FunctionBody "}"
558 : "," FormalParameterList
563 : Identifier FormalParameterList_
576 : SourceElement SourceElements
582 | FunctionDeclaration