Reviewers: ,

Message:
Committed patchset #1 manually as r17498.

Description:
Experimental rule generator: fix previous commit.

BUG=
[email protected]

Committed: https://code.google.com/p/v8/source/detail?r=17498

Please review this at https://codereview.chromium.org/59043005/

SVN Base: https://v8.googlecode.com/svn/branches/experimental/parser

Affected files (+15, -7 lines):
  M tools/lexer_generator/regex_lexer.py


Index: tools/lexer_generator/regex_lexer.py
diff --git a/tools/lexer_generator/regex_lexer.py b/tools/lexer_generator/regex_lexer.py index a2c98f7aa83e8be7742203d5fa58b454cde815ef..55c3bda94192668f6c085c55e5561103b680f5d2 100644
--- a/tools/lexer_generator/regex_lexer.py
+++ b/tools/lexer_generator/regex_lexer.py
@@ -58,10 +58,11 @@ class RegexLexer:

   states = (
     ('class','exclusive'),
+    ('repeat','exclusive'),
   )

   def t_ESCAPED_LITERAL(self, t):
-    r'\\\(|\\\)|\\\[|\\\]|\\\||\\\+|\\\*|\\\?|\\\.|\\\\'
+    r'\\\(|\\\)|\\\[|\\\]|\\\||\\\+|\\\*|\\\?|\\\.|\\\\|\\\{|\\\}'
     t.type = 'LITERAL'
     t.value = t.value[1:]
     return t
@@ -69,17 +70,11 @@ class RegexLexer:
   t_GROUP_BEGIN = r'\('
   t_GROUP_END = r'\)'

-  t_REPEAT_BEGIN = r'\{'
-  t_REPEAT_END = r'\}'
-
   t_OR = r'\|'
   t_ONE_OR_MORE = r'\+'
   t_ZERO_OR_MORE = r'\*'
   t_ZERO_OR_ONE = r'\?'

-  t_NUMBER = r'[0-9]+'
-  t_COMMA = r','
-
   t_ANY = r'\.'

   t_LITERAL = r'.'
@@ -106,6 +101,19 @@ class RegexLexer:

   t_class_CLASS_LITERAL = r'[\w $_+]' # fix this

+  def t_REPEAT_BEGIN(self, t):
+    r'\{'
+    self.lexer.push_state('repeat')
+    return t
+
+  def t_repeat_REPEAT_END(self, t):
+    r'\}'
+    self.lexer.pop_state()
+    return t
+
+  t_repeat_NUMBER = r'[0-9]+'
+  t_repeat_COMMA = r','
+
   t_ANY_ignore  = '\n'

   def t_ANY_error(self, t):


--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to