-# Copyright (c) 2010, 2011 Nicira Networks
+# Copyright (c) 2010, 2011, 2012 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
def from_string(s):
try:
s = unicode(s, 'utf-8')
- except UnicodeDecodeError, e:
+ except UnicodeDecodeError as e:
seq = ' '.join(["0x%2x" % ord(c)
for c in e.object[e.start:e.end] if ord(c) >= 0x80])
return ("not a valid UTF-8 string: invalid UTF-8 sequence %s" % seq)
class Parser(object):
- ## Maximum height of parsing stack. ##
+ # Maximum height of parsing stack. #
MAX_HEIGHT = 1000
def __init__(self, check_trailer=False):
return True
def __lex_input(self, c):
- self.byte_number += 1
- if c == '\n':
- self.column_number = 0
- self.line_number += 1
- else:
- self.column_number += 1
-
eat = self.lex_state(self, c)
assert eat is True or eat is False
return eat
while True:
if self.done or i >= len(s):
return i
- if self.__lex_input(s[i]):
+
+ c = s[i]
+ if self.__lex_input(c):
+ self.byte_number += 1
+ if c == '\n':
+ self.column_number = 0
+ self.line_number += 1
+ else:
+ self.column_number += 1
+
i += 1
def is_done(self):
elif self.parse_state != Parser.__parse_end:
self.__error("unexpected end of input")
- if self.error == None:
+ if self.error is None:
assert len(self.stack) == 1
return self.stack.pop()
else: