2 #include "Cycript.tab.hh"
3 typedef cy::parser::token tk;
4 #define YY_EXTRA_TYPE CYParser *
9 %option bison-locations
16 Exponent [eE][+-]?[0-9]+
17 Escape \\['"\\bfnrtv]|\\0|\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}
21 "&" return tk::Ampersand;
22 "&&" return tk::AmpersandAmpersand;
23 "&=" return tk::AmpersandEqual;
24 "^" return tk::Carrot;
25 "^=" return tk::CarrotEqual;
27 "==" return tk::EqualEqual;
28 "===" return tk::EqualEqualEqual;
29 "!" return tk::Exclamation;
30 "!=" return tk::ExclamationEqual;
31 "!==" return tk::ExclamationEqualEqual;
32 "-" return tk::Hyphen;
33 "-=" return tk::HyphenEqual;
34 "--" return tk::HyphenHyphen;
35 "->" return tk::HyphenRight;
37 "<=" return tk::LeftEqual;
38 "<<" return tk::LeftLeft;
39 "<<=" return tk::LeftLeftEqual;
40 "%" return tk::Percent;
41 "%=" return tk::PercentEqual;
42 "." return tk::Period;
44 "|=" return tk::PipeEqual;
45 "||" return tk::PipePipe;
47 "+=" return tk::PlusEqual;
48 "++" return tk::PlusPlus;
50 ">=" return tk::RightEqual;
51 ">>" return tk::RightRight;
52 ">>=" return tk::RightRightEqual;
53 ">>>" return tk::RightRightRight;
54 ">>>=" return tk::RightRightRightEqual;
56 "/=" return tk::SlashEqual;
58 "*=" return tk::StarEqual;
63 "?" return tk::Question;
64 ";" return tk::SemiColon;
66 "(" return tk::OpenParen;
67 ")" return tk::CloseParen;
69 "{" return tk::OpenBrace;
70 "}" return tk::CloseBrace;
72 "[" return tk::OpenBracket;
73 "]" return tk::CloseBracket;
75 "break" return tk::Break;
76 "case" return tk::Case;
77 "catch" return tk::Catch;
78 "continue" return tk::Continue;
79 "default" return tk::Default;
80 "delete" return tk::Delete;
82 "else" return tk::Else;
83 "false" return tk::False;
84 "finally" return tk::Finally;
86 "function" return tk::Function;
89 "instanceof" return tk::InstanceOf;
91 "null" return tk::Null;
92 "return" return tk::Return;
93 "switch" return tk::Switch;
94 "this" return tk::This;
95 "throw" return tk::Throw;
96 "true" return tk::True;
98 "typeof" return tk::TypeOf;
100 "void" return tk::Void;
101 "while" return tk::While;
102 "with" return tk::With;
104 [a-zA-Z$_][a-zA-Z$_0-9]* return tk::Identifier;
106 (\.[0-9]+|(0|[1-9][0-9]*)(\.[0-9]*)?){Exponent}? return tk::NumericLiteral;
108 0[xX][0-9a-fA-F]+ return tk::NumericLiteral;
109 0[bB][0-1]+ return tk::NumericLiteral;
111 \"([^"\\\n]|{Escape})*\" return tk::StringLiteral;
112 '([^'\\\n]|{Escape})*' return tk::StringLiteral;
118 void CYParser::ScannerInit() {
119 cylex_init(&scanner_);
120 cyset_extra(this, scanner_);
123 void CYParser::ScannerDestroy() {
124 cylex_destroy(scanner_);