Revision: 17176
Author:   ma...@chromium.org
Date:     Mon Oct 14 08:31:07 2013 UTC
Log:      Experimental push model parser: various fixes.

BUG=
R=u...@chromium.org

Review URL: https://codereview.chromium.org/27047002
http://code.google.com/p/v8/source/detail?r=17176

Modified:
 /branches/experimental/parser/src/lexer/lexer.re

=======================================
--- /branches/experimental/parser/src/lexer/lexer.re Fri Oct 11 15:38:49 2013 UTC +++ /branches/experimental/parser/src/lexer/lexer.re Mon Oct 14 08:31:07 2013 UTC
@@ -29,10 +29,25 @@

 // ----------------------------------------------------------------------
 #define PUSH_EOS(T) { printf("got eos\n"); }
-#define PUSH_T(T) { printf("got token %d\n", T); SKIP(); }
-#define PUSH_STRING() { printf("got string\n"); SKIP(); }
-#define PUSH_NUMBER() { printf("got number\n"); SKIP(); }
+#define PUSH_TOKEN(T) { \
+        printf("got token %s (%d)\n", tokenNames[T], T); \
+         SKIP(); }
+#define PUSH_STRING() { \
+        --cursor; \
+        printf("got string\n"); \
+        size_t tokenSize = cursor-start; \
+        fwrite(start, tokenSize, 1, stdout); \
+        printf("\n"); \
+        SKIP(); }
+#define PUSH_NUMBER() { \
+        --cursor; \
+        printf("got number\n"); \
+        size_t tokenSize = cursor-start; \
+        fwrite(start, tokenSize, 1, stdout); \
+        printf("\n"); \
+        SKIP(); }
 #define PUSH_IDENTIFIER() { \
+        --cursor; \
         printf("got identifier: "); \
         size_t tokenSize = cursor-start; \
         fwrite(start, tokenSize, 1, stdout); \
@@ -251,7 +266,6 @@
         #define YYCTYPE         uint8_t

#define SKIP() { start = cursor; YYSETCONDITION(EConditionNormal); goto yy0; }
-        #define SEND(x)         { send(x); SKIP();          }
         #define YYFILL(n)       { goto fill;                }

         #define YYGETSTATE()    state
@@ -280,58 +294,58 @@
         number_char = [0-9\.e];
         line_terminator = [\n\r]+;

-        <Normal> "("                     { PUSH_T(LPAREN); }
-        <Normal> ")"                     { PUSH_T(RPAREN); }
-        <Normal> "["                     { PUSH_T(LBRACK); }
-        <Normal> "]"                     { PUSH_T(RBRACK); }
-        <Normal> "{"                     { PUSH_T(LBRACE); }
-        <Normal> "}"                     { PUSH_T(RBRACE); }
-        <Normal> ":"                     { PUSH_T(COLON); }
-        <Normal> ";"                     { PUSH_T(SEMICOLON); }
-        <Normal> "."                     { PUSH_T(PERIOD); }
-        <Normal> "?"                     { PUSH_T(CONDITIONAL); }
-        <Normal> "++"                    { PUSH_T(INC); }
-        <Normal> "--"                    { PUSH_T(DEC); }
+        <Normal> "("                     { PUSH_TOKEN(LPAREN); }
+        <Normal> ")"                     { PUSH_TOKEN(RPAREN); }
+        <Normal> "["                     { PUSH_TOKEN(LBRACK); }
+        <Normal> "]"                     { PUSH_TOKEN(RBRACK); }
+        <Normal> "{"                     { PUSH_TOKEN(LBRACE); }
+        <Normal> "}"                     { PUSH_TOKEN(RBRACE); }
+        <Normal> ":"                     { PUSH_TOKEN(COLON); }
+        <Normal> ";"                     { PUSH_TOKEN(SEMICOLON); }
+        <Normal> "."                     { PUSH_TOKEN(PERIOD); }
+        <Normal> "?"                     { PUSH_TOKEN(CONDITIONAL); }
+        <Normal> "++"                    { PUSH_TOKEN(INC); }
+        <Normal> "--"                    { PUSH_TOKEN(DEC); }

-        <Normal> "|="                    { PUSH_T(ASSIGN_BIT_OR); }
-        <Normal> "^="                    { PUSH_T(ASSIGN_BIT_XOR); }
-        <Normal> "&="                    { PUSH_T(ASSIGN_BIT_AND); }
-        <Normal> "<<="                   { PUSH_T(ASSIGN_SHL); }
-        <Normal> ">>="                   { PUSH_T(ASSIGN_SAR); }
-        <Normal> ">>>="                  { PUSH_T(ASSIGN_SHR); }
-        <Normal> "+="                    { PUSH_T(ASSIGN_ADD); }
-        <Normal> "-="                    { PUSH_T(ASSIGN_SUB); }
-        <Normal> "*="                    { PUSH_T(ASSIGN_MUL); }
-        <Normal> "/="                    { PUSH_T(ASSIGN_DIV); }
-        <Normal> "%="                    { PUSH_T(ASSIGN_MOD); }
+        <Normal> "|="                    { PUSH_TOKEN(ASSIGN_BIT_OR); }
+        <Normal> "^="                    { PUSH_TOKEN(ASSIGN_BIT_XOR); }
+        <Normal> "&="                    { PUSH_TOKEN(ASSIGN_BIT_AND); }
+        <Normal> "<<="                   { PUSH_TOKEN(ASSIGN_SHL); }
+        <Normal> ">>="                   { PUSH_TOKEN(ASSIGN_SAR); }
+        <Normal> ">>>="                  { PUSH_TOKEN(ASSIGN_SHR); }
+        <Normal> "+="                    { PUSH_TOKEN(ASSIGN_ADD); }
+        <Normal> "-="                    { PUSH_TOKEN(ASSIGN_SUB); }
+        <Normal> "*="                    { PUSH_TOKEN(ASSIGN_MUL); }
+        <Normal> "/="                    { PUSH_TOKEN(ASSIGN_DIV); }
+        <Normal> "%="                    { PUSH_TOKEN(ASSIGN_MOD); }

-        <Normal> ","                     { PUSH_T(COMMA); }
-        <Normal> "||"                    { PUSH_T(OR); }
-        <Normal> "&&"                    { PUSH_T(AND); }
-        <Normal> "|"                     { PUSH_T(BIT_OR); }
-        <Normal> "^"                     { PUSH_T(BIT_XOR); }
-        <Normal> "&"                     { PUSH_T(BIT_AND); }
-        <Normal> "<<"                    { PUSH_T(SHL); }
-        <Normal> ">>"                    { PUSH_T(SAR); }
-        <Normal> "+"                     { PUSH_T(ADD); }
-        <Normal> "-"                     { PUSH_T(SUB); }
-        <Normal> "*"                     { PUSH_T(MUL); }
-        <Normal> "/"                     { PUSH_T(DIV); }
-        <Normal> "%"                     { PUSH_T(MOD); }
+        <Normal> ","                     { PUSH_TOKEN(COMMA); }
+        <Normal> "||"                    { PUSH_TOKEN(OR); }
+        <Normal> "&&"                    { PUSH_TOKEN(AND); }
+        <Normal> "|"                     { PUSH_TOKEN(BIT_OR); }
+        <Normal> "^"                     { PUSH_TOKEN(BIT_XOR); }
+        <Normal> "&"                     { PUSH_TOKEN(BIT_AND); }
+        <Normal> "<<"                    { PUSH_TOKEN(SHL); }
+        <Normal> ">>"                    { PUSH_TOKEN(SAR); }
+        <Normal> "+"                     { PUSH_TOKEN(ADD); }
+        <Normal> "-"                     { PUSH_TOKEN(SUB); }
+        <Normal> "*"                     { PUSH_TOKEN(MUL); }
+        <Normal> "/"                     { PUSH_TOKEN(DIV); }
+        <Normal> "%"                     { PUSH_TOKEN(MOD); }

-        <Normal> "==="                   { PUSH_T(EQ_STRICT); }
-        <Normal> "=="                    { PUSH_T(EQ); }
-        <Normal> "!=="                   { PUSH_T(NE_STRICT); }
-        <Normal> "!="                    { PUSH_T(NE); }
-        <Normal> "<="                    { PUSH_T(LTE); }
-        <Normal> ">="                    { PUSH_T(GTE); }
-        <Normal> "<"                     { PUSH_T(LT); }
-        <Normal> ">"                     { PUSH_T(GT); }
+        <Normal> "==="                   { PUSH_TOKEN(EQ_STRICT); }
+        <Normal> "=="                    { PUSH_TOKEN(EQ); }
+        <Normal> "!=="                   { PUSH_TOKEN(NE_STRICT); }
+        <Normal> "!="                    { PUSH_TOKEN(NE); }
+        <Normal> "<="                    { PUSH_TOKEN(LTE); }
+        <Normal> ">="                    { PUSH_TOKEN(GTE); }
+        <Normal> "<"                     { PUSH_TOKEN(LT); }
+        <Normal> ">"                     { PUSH_TOKEN(GT); }

-        <Normal> "="                     { PUSH_T(ASSIGN); }
+        <Normal> "="                     { PUSH_TOKEN(ASSIGN); }

-        <Normal> "!"                     { PUSH_T(NOT); }
-        <Normal> "~"                     { PUSH_T(BIT_NOT); }
+        <Normal> "!"                     { PUSH_TOKEN(NOT); }
+        <Normal> "~"                     { PUSH_TOKEN(BIT_NOT); }

         <Normal> line_terminator+        { PUSH_LINE_TERMINATOR(); }
         <Normal> whitespace              { SKIP();}
@@ -349,31 +363,30 @@
         <Normal> eof                     { PUSH_EOS(); return 1; }
         <Normal> any                     { TERMINATE_ILLEGAL(); }

-        <DoubleQuoteString> "\\\""       {}
-        <DoubleQuoteString> ["]          { PUSH_STRING();}
-        <DoubleQuoteString> any          {}
+        <DoubleQuoteString> "\\\""       { goto yy0; }
+        <DoubleQuoteString> '"'          { PUSH_STRING();}
+        <DoubleQuoteString> any          { goto yy0; }

-        <SingleQuoteString> "\\'"    {}
+        <SingleQuoteString> "\\'"    { goto yy0; }
         <SingleQuoteString> "'"      { PUSH_STRING();}
-        <SingleQuoteString> any      {}
+        <SingleQuoteString> any      { goto yy0; }

-        <Identifier> identifier_char+  {}
+        <Identifier> identifier_char+  { goto yy0; }
         <Identifier> any               { PUSH_IDENTIFIER(); }

-        <SingleLineComment> line_terminator
-                                       { PUSH_LINE_TERMINATOR();}
-
-        <SingleLineComment> any+     {}
+        <SingleLineComment> line_terminator { PUSH_LINE_TERMINATOR();}
+        <SingleLineComment> eof { PUSH_LINE_TERMINATOR();}
+        <SingleLineComment> any     :=> SingleLineComment

         <MultiLineComment> [*][//]      { PUSH_LINE_TERMINATOR();}
         <MultiLineComment> eof { TERMINATE_ILLEGAL(); }
-        <MultiLineComment> any+       {}
+        <MultiLineComment> any       :=> MultiLineComment

-        <HtmlComment> any+            {}
         <HtmlComment> eof { TERMINATE_ILLEGAL(); }
-        <HtmlComment> "-->"           { }
+        <HtmlComment> "-->"          { PUSH_LINE_TERMINATOR();}
+        <HtmlComment> any            :=> HtmlComment

-        <Number> number_char+          { }
+        <Number> number_char+          { goto yy0; }
         <Number> any                   { PUSH_NUMBER(); }

         */

--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to