}
break;
}
- default:
- syntaxerror("unknown escape sequence: \"\\%c\"", *s);
+ default: {
+ if(o) {
+ o[len+0] = '\\';
+ o[len+1] = *s;
+ }
+ s++;
+ len+=2;
+ break;
+ }
}
}
if(o) o[len]=0;
static void handleString(char*s, int len)
{
- if(as3_pass < 2) {
- // don't bother decoding strings in pass 1
- memset(&a3_lval, 0, sizeof(a3_lval));
- return;
- }
-
if(s[0]=='"') {
if(s[len-1]!='"') syntaxerror("String doesn't end with '\"'");
s++;len-=2;
s++;len-=2;
}
else syntaxerror("String incorrectly terminated");
-
a3_lval.str = string_unescape(s, len);
}
current_column+=as3_leng;
}
-static trie_t*namespaces = 0;
-void tokenizer_register_namespace(const char*id)
+trie_t*active_namespaces = 0;
+/*void tokenizer_register_namespace(const char*id)
{
- trie_put(&namespaces, id);
+ trie_put(namespaces, id, 0);
}
+void tokenizer_unregister_namespace(const char*id)
+{
+ trie_remove(namespaces, id);
+}*/
static inline tokenizer_is_namespace(const char*id)
{
- return trie_lookup(namespaces, id);
+ return trie_contains(active_namespaces, id);
}
static inline int handleIdentifier()
-#line 1865 "tokenizer.yy.c"
+#line 1869 "tokenizer.yy.c"
#define INITIAL 0
#define REGEXPOK 1
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 571 "tokenizer.lex"
+#line 575 "tokenizer.lex"
-#line 2056 "tokenizer.yy.c"
+#line 2060 "tokenizer.yy.c"
if ( !(yy_init) )
{
case 1:
/* rule 1 can match eol */
YY_RULE_SETUP
-#line 574 "tokenizer.lex"
+#line 578 "tokenizer.lex"
{l(); /* single line comment */}
YY_BREAK
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 575 "tokenizer.lex"
+#line 579 "tokenizer.lex"
{l(); /* multi line comment */}
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 576 "tokenizer.lex"
+#line 580 "tokenizer.lex"
{syntaxerror("syntax error: unterminated comment", as3_text);}
YY_BREAK
case 4:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 578 "tokenizer.lex"
+#line 582 "tokenizer.lex"
{l();handleInclude(as3_text, as3_leng, 1);}
YY_BREAK
case 5:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 579 "tokenizer.lex"
+#line 583 "tokenizer.lex"
{l();handleInclude(as3_text, as3_leng, 0);}
YY_BREAK
case 6:
/* rule 6 can match eol */
YY_RULE_SETUP
-#line 580 "tokenizer.lex"
+#line 584 "tokenizer.lex"
{l(); BEGIN(INITIAL);handleString(as3_text, as3_leng);return T_STRING;}
YY_BREAK
case 7:
/* rule 7 can match eol */
YY_RULE_SETUP
-#line 581 "tokenizer.lex"
+#line 585 "tokenizer.lex"
{l(); BEGIN(INITIAL);handleCData(as3_text, as3_leng);return T_STRING;}
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 584 "tokenizer.lex"
+#line 588 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handleregexp();}
YY_BREAK
case 9:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 585 "tokenizer.lex"
+#line 589 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlehex();}
YY_BREAK
case 10:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 586 "tokenizer.lex"
+#line 590 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlehexfloat();}
YY_BREAK
case 11:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 587 "tokenizer.lex"
+#line 591 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handleint();}
YY_BREAK
case 12:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 588 "tokenizer.lex"
+#line 592 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlefloat();}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 591 "tokenizer.lex"
+#line 595 "tokenizer.lex"
{c(); BEGIN(REGEXPOK);return m(T_DICTSTART);}
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 592 "tokenizer.lex"
+#line 596 "tokenizer.lex"
{c(); BEGIN(INITIAL); return m('{');}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 594 "tokenizer.lex"
+#line 598 "tokenizer.lex"
{/* utf 8 bom */}
YY_BREAK
case 16:
/* rule 16 can match eol */
YY_RULE_SETUP
-#line 595 "tokenizer.lex"
+#line 599 "tokenizer.lex"
{l();}
YY_BREAK
case 17:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 597 "tokenizer.lex"
+#line 601 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlehex();}
YY_BREAK
case 18:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 598 "tokenizer.lex"
+#line 602 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlehexfloat();}
YY_BREAK
case 19:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 599 "tokenizer.lex"
+#line 603 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handleint();}
YY_BREAK
case 20:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 600 "tokenizer.lex"
+#line 604 "tokenizer.lex"
{c(); BEGIN(INITIAL);return handlefloat();}
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 602 "tokenizer.lex"
+#line 606 "tokenizer.lex"
{/* for debugging: generates a tokenizer-level error */
syntaxerror("3rr0r");}
YY_BREAK
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 605 "tokenizer.lex"
+#line 609 "tokenizer.lex"
{l();BEGIN(INITIAL);handleLabel(as3_text, as3_leng-3);return T_FOR;}
YY_BREAK
case 23:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 606 "tokenizer.lex"
+#line 610 "tokenizer.lex"
{l();BEGIN(INITIAL);handleLabel(as3_text, as3_leng-2);return T_DO;}
YY_BREAK
case 24:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 607 "tokenizer.lex"
+#line 611 "tokenizer.lex"
{l();BEGIN(INITIAL);handleLabel(as3_text, as3_leng-5);return T_WHILE;}
YY_BREAK
case 25:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up as3_text again */
YY_RULE_SETUP
-#line 608 "tokenizer.lex"
+#line 612 "tokenizer.lex"
{l();BEGIN(INITIAL);handleLabel(as3_text, as3_leng-6);return T_SWITCH;}
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 609 "tokenizer.lex"
+#line 613 "tokenizer.lex"
{c();BEGIN(INITIAL);a3_lval.id="";return T_FOR;}
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 610 "tokenizer.lex"
+#line 614 "tokenizer.lex"
{c();BEGIN(INITIAL);a3_lval.id="";return T_DO;}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 611 "tokenizer.lex"
+#line 615 "tokenizer.lex"
{c();BEGIN(INITIAL);a3_lval.id="";return T_WHILE;}
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 612 "tokenizer.lex"
+#line 616 "tokenizer.lex"
{c();BEGIN(INITIAL);a3_lval.id="";return T_SWITCH;}
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 614 "tokenizer.lex"
+#line 618 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_ANDAND);}
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 615 "tokenizer.lex"
+#line 619 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_OROR);}
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 616 "tokenizer.lex"
+#line 620 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_NE);}
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 617 "tokenizer.lex"
+#line 621 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_NEE);}
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 618 "tokenizer.lex"
+#line 622 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_EQEQEQ);}
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 619 "tokenizer.lex"
+#line 623 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_EQEQ);}
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 620 "tokenizer.lex"
+#line 624 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_GE);}
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 621 "tokenizer.lex"
+#line 625 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_LE);}
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 622 "tokenizer.lex"
+#line 626 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(T_MINUSMINUS);}
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 623 "tokenizer.lex"
+#line 627 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(T_PLUSPLUS);}
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 624 "tokenizer.lex"
+#line 628 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_PLUSBY);}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 625 "tokenizer.lex"
+#line 629 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_XORBY);}
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 626 "tokenizer.lex"
+#line 630 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_MINUSBY);}
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 627 "tokenizer.lex"
+#line 631 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_DIVBY);}
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 628 "tokenizer.lex"
+#line 632 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_MODBY);}
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 629 "tokenizer.lex"
+#line 633 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_MULBY);}
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 630 "tokenizer.lex"
+#line 634 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_ORBY);}
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 631 "tokenizer.lex"
+#line 635 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_SHRBY);}
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 632 "tokenizer.lex"
+#line 636 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_SHLBY);}
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 633 "tokenizer.lex"
+#line 637 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_USHRBY);}
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 634 "tokenizer.lex"
+#line 638 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_SHL);}
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 635 "tokenizer.lex"
+#line 639 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_USHR);}
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 636 "tokenizer.lex"
+#line 640 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_SHR);}
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 637 "tokenizer.lex"
+#line 641 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_DOTDOTDOT);}
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 638 "tokenizer.lex"
+#line 642 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_DOTDOT);}
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 639 "tokenizer.lex"
+#line 643 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m('.');}
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 640 "tokenizer.lex"
+#line 644 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(T_COLONCOLON);}
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 641 "tokenizer.lex"
+#line 645 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(':');}
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 642 "tokenizer.lex"
+#line 646 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_INSTANCEOF);}
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 643 "tokenizer.lex"
+#line 647 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_IMPLEMENTS);}
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 644 "tokenizer.lex"
+#line 648 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_INTERFACE);}
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 645 "tokenizer.lex"
+#line 649 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_NAMESPACE);}
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 646 "tokenizer.lex"
+#line 650 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_PROTECTED);}
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 647 "tokenizer.lex"
+#line 651 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_UNDEFINED);}
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 648 "tokenizer.lex"
+#line 652 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_CONTINUE);}
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 649 "tokenizer.lex"
+#line 653 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_OVERRIDE);}
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 650 "tokenizer.lex"
+#line 654 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_INTERNAL);}
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 651 "tokenizer.lex"
+#line 655 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_FUNCTION);}
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 652 "tokenizer.lex"
+#line 656 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_FINALLY);}
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 653 "tokenizer.lex"
+#line 657 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_DEFAULT);}
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 654 "tokenizer.lex"
+#line 658 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_PACKAGE);}
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 655 "tokenizer.lex"
+#line 659 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_PRIVATE);}
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 656 "tokenizer.lex"
+#line 660 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_DYNAMIC);}
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 657 "tokenizer.lex"
+#line 661 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_EXTENDS);}
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 658 "tokenizer.lex"
+#line 662 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_DELETE);}
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 659 "tokenizer.lex"
+#line 663 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_RETURN);}
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 660 "tokenizer.lex"
+#line 664 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_PUBLIC);}
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 661 "tokenizer.lex"
+#line 665 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_NATIVE);}
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 662 "tokenizer.lex"
+#line 666 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_STATIC);}
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 663 "tokenizer.lex"
+#line 667 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_IMPORT);}
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 664 "tokenizer.lex"
+#line 668 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_TYPEOF);}
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 665 "tokenizer.lex"
+#line 669 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_THROW);}
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 666 "tokenizer.lex"
+#line 670 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_CLASS);}
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 667 "tokenizer.lex"
+#line 671 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_CONST);}
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 668 "tokenizer.lex"
+#line 672 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_CATCH);}
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 669 "tokenizer.lex"
+#line 673 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_FINAL);}
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 670 "tokenizer.lex"
+#line 674 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_FALSE);}
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 671 "tokenizer.lex"
+#line 675 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_BREAK);}
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 672 "tokenizer.lex"
+#line 676 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_SUPER);}
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 673 "tokenizer.lex"
+#line 677 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_EACH);}
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 674 "tokenizer.lex"
+#line 678 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_VOID);}
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 675 "tokenizer.lex"
+#line 679 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_TRUE);}
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 676 "tokenizer.lex"
+#line 680 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_NULL);}
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 677 "tokenizer.lex"
+#line 681 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_ELSE);}
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 678 "tokenizer.lex"
+#line 682 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_CASE);}
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 679 "tokenizer.lex"
+#line 683 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_WITH);}
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 680 "tokenizer.lex"
+#line 684 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_USE);}
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 681 "tokenizer.lex"
+#line 685 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_NEW);}
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 682 "tokenizer.lex"
+#line 686 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_GET);}
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 683 "tokenizer.lex"
+#line 687 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_SET);}
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 684 "tokenizer.lex"
+#line 688 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_VAR);}
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 685 "tokenizer.lex"
+#line 689 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_TRY);}
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 686 "tokenizer.lex"
+#line 690 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_IS) ;}
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 687 "tokenizer.lex"
+#line 691 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_IN) ;}
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 688 "tokenizer.lex"
+#line 692 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(KW_IF) ;}
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 689 "tokenizer.lex"
+#line 693 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(KW_AS);}
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 690 "tokenizer.lex"
+#line 694 "tokenizer.lex"
{c();BEGIN(INITIAL);return handleIdentifier();}
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 692 "tokenizer.lex"
+#line 696 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(as3_text[0]);}
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 693 "tokenizer.lex"
+#line 697 "tokenizer.lex"
{c();BEGIN(REGEXPOK);return m(as3_text[0]);}
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 694 "tokenizer.lex"
+#line 698 "tokenizer.lex"
{c();BEGIN(INITIAL);return m(as3_text[0]);}
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 696 "tokenizer.lex"
+#line 700 "tokenizer.lex"
{/* ERROR */
char c1=as3_text[0];
char buf[128];
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(REGEXPOK):
case YY_STATE_EOF(BEGINNING):
-#line 716 "tokenizer.lex"
+#line 720 "tokenizer.lex"
{l();
void*b = leave_file();
if (!b) {
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 728 "tokenizer.lex"
+#line 732 "tokenizer.lex"
ECHO;
YY_BREAK
-#line 2790 "tokenizer.yy.c"
+#line 2794 "tokenizer.yy.c"
case YY_END_OF_BUFFER:
{
#define YYTABLES_NAME "yytables"
-#line 728 "tokenizer.lex"
+#line 732 "tokenizer.lex"