3 #include "Cycript.tab.h"
4 void cyerror(YYLTYPE *locp, CYParser *context, const char *msg);
5 int cylex(YYSTYPE *lvalp, YYLTYPE *llocp);
19 %parse-param { CYParser *context }
21 %token CYTokenAmpersand "&"
22 %token CYTokenAmpersandAmpersand "&&"
23 %token CYTokenAmpersandEqual "&="
24 %token CYTokenCarrot "^"
25 %token CYTokenCarrotEqual "^="
26 %token CYTokenEqual "="
27 %token CYTokenEqualEqual "=="
28 %token CYTokenEqualEqualEqual "==="
29 %token CYTokenExclamation "!"
30 %token CYTokenExclamationEqual "!="
31 %token CYTokenExclamationEqualEqual "!=="
32 %token CYTokenHyphen "-"
33 %token CYTokenHyphenEqual "-="
34 %token CYTokenHyphenHyphen "--"
35 %token CYTokenHyphenRight "->"
36 %token CYTokenLeft "<"
37 %token CYTokenLeftEqual "<="
38 %token CYTokenLeftLeft "<<"
39 %token CYTokenLeftLeftEqual "<<="
40 %token CYTokenPercent "%"
41 %token CYTokenPercentEqual "%="
42 %token CYTokenPeriod "."
43 %token CYTokenPipe "|"
44 %token CYTokenPipeEqual "|="
45 %token CYTokenPipePipe "||"
46 %token CYTokenPlus "+"
47 %token CYTokenPlusEqual "+="
48 %token CYTokenPlusPlus "++"
49 %token CYTokenRight ">"
50 %token CYTokenRightEqual ">="
51 %token CYTokenRightRight ">>"
52 %token CYTokenRightRightEqual ">>="
53 %token CYTokenRightRightRight ">>>"
54 %token CYTokenRightRightRightEqual ">>>="
55 %token CYTokenSlash "/"
56 %token CYTokenSlashEqual "/="
57 %token CYTokenStar "*"
58 %token CYTokenStarEqual "*="
59 %token CYTokenTilde "~"
61 %token CYTokenColon ":"
62 %token CYTokenComma ","
63 %token CYTokenQuestion "?"
64 %token CYTokenSemiColon ";"
66 %token CYTokenOpenParen "("
67 %token CYTokenCloseParen ")"
68 %token CYTokenOpenBrace "{"
69 %token CYTokenCloseBrace "}"
70 %token CYTokenOpenBracket "["
71 %token CYTokenCloseBracket "]"
73 %token CYTokenBreak "break"
74 %token CYTokenCase "case"
75 %token CYTokenCatch "catch"
76 %token CYTokenContinue "continue"
77 %token CYTokenDefault "default"
78 %token CYTokenDelete "delete"
80 %token CYTokenElse "else"
81 %token CYTokenFalse "false"
82 %token CYTokenFinally "finally"
83 %token CYTokenFor "for"
84 %token CYTokenFunction "function"
87 %token CYTokenInstanceOf "instanceof"
88 %token CYTokenNew "new"
89 %token CYTokenNull "null"
90 %token CYTokenReturn "return"
91 %token CYTokenSwitch "switch"
92 %token CYTokenThis "this"
93 %token CYTokenThrow "throw"
94 %token CYTokenTrue "true"
95 %token CYTokenTry "try"
96 %token CYTokenTypeOf "typeof"
97 %token CYTokenVar "var"
98 %token CYTokenVoid "void"
99 %token CYTokenWhile "while"
100 %token CYTokenWith "with"
102 %token CYTokenIdentifier
145 /* Objective-C Extensions {{{ */
147 : "," AssignmentExpression VariadicCall
157 : IdentifierOpt ":" AssignmentExpression SelectorCall_
166 : "[" AssignmentExpression SelectorList "]"
170 /* 11.1 Primary Expressions {{{ */
181 /* 11.1.4 Array Initialiser {{{ */
183 : "[" ElementList "]"
187 : AssignmentExpression
197 : Element ElementList_
200 /* 11.1.5 Object Initialiser {{{ */
202 : "{" PropertyNameAndValueListOpt "}"
205 PropertyNameAndValueList_
206 : "," PropertyNameAndValueList
210 PropertyNameAndValueListOpt
211 : PropertyNameAndValueList
215 PropertyNameAndValueList
216 : PropertyName ":" AssignmentExpression PropertyNameAndValueList_
229 | MemberExpression "[" Expression "]"
230 | MemberExpression "." Identifier
231 | "new" MemberExpression Arguments
236 | "new" NewExpression
240 : MemberExpression Arguments
241 | CallExpression Arguments
242 | CallExpression "[" Expression "]"
243 | CallExpression "." Identifier
257 : AssignmentExpression ArgumentList_
261 : "(" ArgumentListOpt ")"
264 LeftHandSideExpression
270 : LeftHandSideExpression
271 | LeftHandSideExpression "++"
272 | LeftHandSideExpression "--"
277 | "delete" UnaryExpression
278 | "void" UnaryExpression
279 | "typeof" UnaryExpression
280 | "++" UnaryExpression
281 | "--" UnaryExpression
282 | "+" UnaryExpression
283 | "-" UnaryExpression
284 | "~" UnaryExpression
285 | "!" UnaryExpression
286 | "*" UnaryExpression
287 | "&" UnaryExpression
290 MultiplicativeExpression
292 | MultiplicativeExpression "*" UnaryExpression
293 | MultiplicativeExpression "/" UnaryExpression
294 | MultiplicativeExpression "%" UnaryExpression
298 : MultiplicativeExpression
299 | AdditiveExpression "+" MultiplicativeExpression
300 | AdditiveExpression "-" MultiplicativeExpression
305 | ShiftExpression "<<" AdditiveExpression
306 | ShiftExpression ">>" AdditiveExpression
307 | ShiftExpression ">>>" AdditiveExpression
312 | RelationalExpression "<" ShiftExpression
313 | RelationalExpression ">" ShiftExpression
314 | RelationalExpression "<=" ShiftExpression
315 | RelationalExpression ">=" ShiftExpression
316 | RelationalExpression "instanceof" ShiftExpression
317 | RelationalExpression "in" ShiftExpression
321 : RelationalExpression
322 | EqualityExpression "==" RelationalExpression
323 | EqualityExpression "!=" RelationalExpression
324 | EqualityExpression "===" RelationalExpression
325 | EqualityExpression "!==" RelationalExpression
330 | BitwiseANDExpression "&" EqualityExpression
334 : BitwiseANDExpression
335 | BitwiseXORExpression "^" BitwiseANDExpression
339 : BitwiseXORExpression
340 | BitwiseORExpression "|" BitwiseXORExpression
344 : BitwiseORExpression
345 | LogicalANDExpression "&&" BitwiseORExpression
349 : LogicalANDExpression
350 | LogicalORExpression "||" LogicalANDExpression
353 ConditionalExpression
354 : LogicalORExpression
355 | LogicalORExpression "?" AssignmentExpression ":" AssignmentExpression
359 : ConditionalExpression
360 | LeftHandSideExpression AssignmentOperator AssignmentExpression
389 : AssignmentExpression Expression_
396 | ExpressionStatement
410 : "{" StatementListOpt "}"
414 : Statement StatementListOpt
419 : "var" VariableDeclarationList ";"
422 VariableDeclarationList_
423 : "," VariableDeclarationList
427 VariableDeclarationList
428 : VariableDeclaration VariableDeclarationList_
432 : Identifier InitialiserOpt
441 : "=" AssignmentExpression
458 : "if" "(" Expression ")" Statement ElseStatementOpt
469 : "do" Statement "while" "(" Expression ")" ";"
473 : "while" "(" Expression ")" Statement
477 : "for" "(" ForStatementInitialiser ";" ExpressionOpt ";" ExpressionOpt ")" Statement
480 ForStatementInitialiser
482 | "var" VariableDeclarationList
486 : "for" "(" ForInStatementInitialiser "in" Expression ")" Statement
489 ForInStatementInitialiser
490 : LeftHandSideExpression
491 | "var" VariableDeclaration
495 : "continue" IdentifierOpt ";"
499 : "break" IdentifierOpt ";"
503 : "return" ExpressionOpt ";"
507 : "with" "(" Expression ")" Statement
511 : "switch" "(" Expression ")" CaseBlock
515 : "{" CaseClausesOpt "}"
519 : CaseClause CaseClausesOpt
520 | DefaultClause CaseClausesOpt
525 : "case" Expression ":" StatementListOpt
529 : "default" ":" StatementListOpt
533 : Identifier ":" Statement
537 : "throw" Expression ";"
541 : "try" Block CatchOpt FinallyOpt
545 : "catch" "(" Identifier ")" Block
555 : "function" Identifier "(" FormalParameterList ")" "{" FunctionBody "}"
559 : "function" IdentifierOpt "(" FormalParameterList ")" "{" FunctionBody "}"
563 : "," FormalParameterList
568 : Identifier FormalParameterList_
581 : SourceElement SourceElements
587 | FunctionDeclaration
594 void cyerror(YYLTYPE *locp, CYParser *context, const char *msg) {
595 fprintf(stderr, "err:%s\n", msg);