another minor scanner speed-up
authorStefan Behnel <scoder@users.berlios.de>
Thu, 11 Nov 2010 06:24:00 +0000 (07:24 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Thu, 11 Nov 2010 06:24:00 +0000 (07:24 +0100)
Cython/Plex/Scanners.py

index c8519047ef73df35ebbb1c7494161f67c63d3411..02c36a6a8bec78ad5cad4381d7490c13f4245f26 100644 (file)
@@ -163,7 +163,8 @@ class Scanner(object):
     buffer = self.buffer
     buf_start_pos = self.buf_start_pos
     buf_len = len(buffer)
-    backup_state = None
+    b_action, b_cur_pos, b_cur_line, b_cur_line_start, b_cur_char, b_input_state, b_next_pos = \
+              None, 0, 0, 0, u'', 0, 0
     trace = self.trace
     while 1:
       if trace: #TRACE#
@@ -173,8 +174,8 @@ class Scanner(object):
       #action = state.action #@slow
       action = state['action'] #@fast
       if action is not None:
-        backup_state = (
-          action, cur_pos, cur_line, cur_line_start, cur_char, input_state, next_pos)
+        b_action, b_cur_pos, b_cur_line, b_cur_line_start, b_cur_char, b_input_state, b_next_pos = \
+                  action, cur_pos, cur_line, cur_line_start, cur_char, input_state, next_pos
       # End inlined self.save_for_backup()
       c = cur_char
       #new_state = state.new_state(c) #@slow
@@ -234,9 +235,11 @@ class Scanner(object):
         if trace: #TRACE#
           print("blocked")  #TRACE#
         # Begin inlined: action = self.back_up()
-        if backup_state is not None:
-          (action, cur_pos, cur_line, cur_line_start, 
-            cur_char, input_state, next_pos) = backup_state
+        if b_action is not None:
+          (action, cur_pos, cur_line, cur_line_start,
+           cur_char, input_state, next_pos) = \
+                   (b_action, b_cur_pos, b_cur_line, b_cur_line_start,
+                    b_cur_char, b_input_state, b_next_pos)
         else:
           action = None
         break # while 1