storage_class = "static"
if storage_class:
self.put("%s " % storage_class)
- if visibility <> 'public':
+ if visibility != 'public':
dll_linkage = None
self.put(entry.type.declaration_code(entry.cname,
dll_linkage = dll_linkage))
def allocate_target_temps(self, env, rhs):
# Perform temp allocation for the LHS of an assignment.
if debug_temp_alloc:
- print self, "Allocating target temps"
+ print("%s Allocating target temps" % self)
self.allocate_subexpr_temps(env)
self.result_code = self.target_code()
if rhs:
# is used as the result instead of allocating a new
# one.
if debug_temp_alloc:
- print self, "Allocating temps"
+ print("%s Allocating temps" % self)
self.allocate_subexpr_temps(env)
self.allocate_temp(env, result)
if self.is_temp:
# Allocate temporary variables for all sub-expressions
# of this node.
if debug_temp_alloc:
- print self, "Allocating temps for:", self.subexprs
+ print("%s Allocating temps for: %s" % (self, self.subexprs))
for node in self.subexpr_nodes():
if node:
if debug_temp_alloc:
- print self, "Allocating temps for", node
+ print("%s Allocating temps for %s" % (self, node))
node.allocate_temps(env)
def allocate_temp(self, env, result = None):
# is used as the result instead of allocating a new
# one.
if debug_temp_alloc:
- print self, "Allocating temp"
+ print("%s Allocating temp" % self)
if result:
if not self.is_temp:
raise InternalError("Result forced on non-temp node")
else:
self.result_code = None
if debug_temp_alloc:
- print self, "Allocated result", self.result_code
+ print("%s Allocated result %s" % (self, self.result_code))
else:
self.result_code = self.calculate_result_code()
# otherwise release results of its sub-expressions.
if self.is_temp:
if debug_temp_alloc:
- print self, "Releasing result", self.result_code
+ print("%s Releasing result %s" % (self, self.result_code))
env.release_temp(self.result_code)
else:
self.release_subexpr_temps(env)
entry.name,
rhs.py_result()))
if debug_disposal_code:
- print "NameNode.generate_assignment_code:"
- print "...generating disposal code for", rhs
+ print("NameNode.generate_assignment_code:")
+ print("...generating disposal code for %s" % rhs)
rhs.generate_disposal_code(code)
else:
code.put_decref(self.result_code, self.ctype())
code.putln('%s = %s;' % (self.result_code, rhs.result_as(self.ctype())))
if debug_disposal_code:
- print "NameNode.generate_assignment_code:"
- print "...generating post-assignment code for", rhs
+ print("NameNode.generate_assignment_code:")
+ print("...generating post-assignment code for %s" % rhs)
rhs.generate_post_assignment_code(code)
def generate_deletion_code(self, code):
"__Pyx_EndUnpack(%s)" % (
self.iterator.py_result()))
if debug_disposal_code:
- print "UnpackNode.generate_assignment_code:"
- print "...generating disposal code for", iterator
+ print("UnpackNode.generate_assignment_code:")
+ print("...generating disposal code for %s" % iterator)
self.iterator.generate_disposal_code(code)
code.putln("}")
def allocate_temps(self, env, result = None):
if debug_temp_alloc:
- print self, "Allocating temps"
+ print("%s Allocating temps" % self)
self.allocate_temp(env, result)
self.loop.analyse_declarations(env)
self.loop.analyse_expressions(env)
self.pos = arg.pos
self.arg = arg
if debug_coercion:
- print self, "Coercing", self.arg
+ print("%s Coercing %s" % (self, self.arg))
def annotate(self, code):
self.arg.annotate(code)
# that module, provided its name is not a dotted name.
debug_find_module = 0
if debug_find_module:
- print "Context.find_module: module_name =", module_name, \
- "relative_to =", relative_to, "pos =", pos, "need_pxd =", need_pxd
+ print("Context.find_module: module_name = %s, relative_to = %s, pos = %s, need_pxd = %s" % (
+ module_name, relative_to, pos, need_pxd))
scope = None
pxd_pathname = None
if "." not in module_name and relative_to:
if debug_find_module:
- print "...trying relative import"
+ print("...trying relative import")
scope = relative_to.lookup_submodule(module_name)
if not scope:
qualified_name = relative_to.qualify_name(module_name)
scope = relative_to.find_submodule(module_name)
if not scope:
if debug_find_module:
- print "...trying absolute import"
+ print("...trying absolute import")
scope = self
for name in module_name.split("."):
scope = scope.find_submodule(name)
if debug_find_module:
- print "...scope =", scope
+ print("...scope =", scope)
if not scope.pxd_file_loaded:
if debug_find_module:
- print "...pxd not loaded"
+ print("...pxd not loaded")
scope.pxd_file_loaded = 1
if not pxd_pathname:
if debug_find_module:
- print "...looking for pxd file"
+ print("...looking for pxd file")
pxd_pathname = self.find_pxd_file(module_name, pos)
if debug_find_module:
- print "......found ", pxd_pathname
+ print("......found ", pxd_pathname)
if not pxd_pathname and need_pxd:
error(pos, "'%s.pxd' not found" % module_name)
if pxd_pathname:
try:
if debug_find_module:
- print "Context.find_module: Parsing", pxd_pathname
+ print("Context.find_module: Parsing %s" % pxd_pathname)
pxd_tree = self.parse(pxd_pathname, scope.type_names, pxd = 1,
full_module_name = module_name)
pxd_tree.analyse_declarations(scope)
for entry in env.c_class_entries:
#print "generate_typeobj_definitions:", entry.name
#print "...visibility =", entry.visibility
- if entry.visibility <> 'extern':
+ if entry.visibility != 'extern':
type = entry.type
scope = type.scope
if scope: # could be None if there was an error
% scope.mangle_internal("tp_dealloc"))
py_attrs = []
for entry in scope.var_entries:
- if entry.type.is_pyobject and entry.name <> "__weakref__":
+ if entry.type.is_pyobject and entry.name != "__weakref__":
py_attrs.append(entry)
if py_attrs or scope.lookup_here("__weakref__"):
self.generate_self_cast(scope, code)
def generate_base_type_import_code(self, env, entry, code):
base_type = entry.type.base_type
- if base_type and base_type.module_name <> env.qualified_name:
+ if base_type and base_type.module_name != env.qualified_name:
self.generate_type_import_code(env, base_type, self.pos, code)
def use_type_import_utility_code(self, env):
typeobj_cname = type.typeobj_cname
scope = type.scope
if scope: # could be None if there was an error
- if entry.visibility <> 'extern':
+ if entry.visibility != 'extern':
for slot in TypeSlots.slot_table:
slot.generate_dynamic_init_code(scope, code)
code.putln(
dll_linkage = None
header = self.return_type.declaration_code(entity,
dll_linkage = dll_linkage)
- if visibility <> 'private':
+ if visibility != 'private':
storage_class = "%s " % Naming.extern_c_macro
else:
storage_class = "static "
"__pyx_why = 0; goto %s;" % catch_label)
for i in cases_used:
new_label = new_labels[i]
- #if new_label and new_label <> "<try>":
+ #if new_label and new_label != "<try>":
if new_label == new_error_label and self.preserve_exception:
self.put_error_catcher(code,
new_error_label, i+1, catch_label)
while s.sy == 'IDENT':
names.append(s.systring)
s.next()
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
return names
s.error("Non-keyword arg following keyword arg",
pos = arg.pos)
positional_args.append(arg)
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
if s.sy == '*':
return [ExprNodes.EllipsisNode(pos)]
else:
start = p_slice_element(s, (':',))
- if s.sy <> ':':
+ if s.sy != ':':
return [start]
s.next()
stop = p_slice_element(s, (':', ',', ']'))
- if s.sy <> ':':
+ if s.sy != ':':
return [start, stop]
s.next()
step = p_slice_element(s, (':', ',', ']'))
# A sequence of one or more adjacent string literals.
# Returns (kind, value) where kind in ('', 'c', 'r')
kind, value = p_string_literal(s)
- if kind <> 'c':
+ if kind != 'c':
strings = [value]
while s.sy == 'STRING' or s.sy == 'BEGIN_STRING':
next_kind, next_value = p_string_literal(s)
# Split into double quotes, newlines, escape sequences
# and spans of regular chars
l1 = re.split(r'((?:\\[0-7]{1,3})|(?:\\x[0-9A-Fa-f]{2})|(?:\\.)|(?:\\\n)|(?:\n)|")', s)
- print "unquote: l1 =", l1 ###
+ #print "unquote: l1 =", l1 ###
l2 = []
for item in l1:
if item == '"' or item == '\n':
pos = s.position()
s.next()
items = []
- while s.sy <> '}':
+ while s.sy != '}':
key = p_simple_expr(s)
s.expect(':')
value = p_simple_expr(s)
items.append((key, value))
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
s.expect('}')
exprs = []
while s.sy not in expr_terminators:
exprs.append(p_simple_expr(s))
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
return exprs
rhs_size = len(rhs.args)
for lhs in input[:-1]:
lhs_size = len(lhs.args)
- if lhs_size <> rhs_size:
+ if lhs_size != rhs_size:
error(lhs.pos, "Unpacking sequence of wrong size (expected %d, got %d)"
% (lhs_size, rhs_size))
return -1
if not target.is_name:
error(target.pos,
"Target of for-from statement must be a variable name")
- elif name2 <> target.name:
+ elif name2 != target.name:
error(name2_pos,
"Variable name in for-from range does not match target")
- if rel1[0] <> rel2[0]:
+ if rel1[0] != rel2[0]:
error(rel2_pos,
"Relation directions in for-from do not match")
return {'target': target,
if s.sy == ',':
s.next()
exprs = [expr]
- while s.sy <> 'in':
+ while s.sy != 'in':
exprs.append(p_bit_expr(s))
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
return ExprNodes.TupleNode(pos, args = exprs)
s.next()
exc_type = None
exc_value = None
- if s.sy <> ':':
+ if s.sy != ':':
exc_type = p_simple_expr(s)
if s.sy == ',':
s.next()
if s.compile_time_eval:
result = body
current_eval = 0
- if s.sy <> 'ELIF':
+ if s.sy != 'ELIF':
break
if s.sy == 'ELSE':
s.next()
s.level = level
return p_def_statement(s)
elif s.sy == 'class':
- if level <> 'module':
+ if level != 'module':
s.error("class definition not allowed here")
return p_class_statement(s)
elif s.sy == 'include':
return p_include_statement(s, level)
elif level == 'c_class' and s.sy == 'IDENT' and s.systring == 'property':
return p_property_decl(s)
- elif s.sy == 'pass' and level <> 'property':
+ elif s.sy == 'pass' and level != 'property':
return p_pass_statement(s, with_newline = 1)
else:
if level in ('c_class_pxd', 'property'):
s.expect(')')
else:
result = p_c_simple_declarator(s, empty, is_type, cmethod_flag, assignable, nonempty)
- if not calling_convention_allowed and result.calling_convention and s.sy <> '(':
+ if not calling_convention_allowed and result.calling_convention and s.sy != '(':
error(s.position(), "%s on something that is not a function"
% result.calling_convention)
while s.sy in ('[', '('):
def p_c_array_declarator(s, base):
pos = s.position()
s.next() # '['
- if s.sy <> ']':
+ if s.sy != ']':
dim = p_expr(s)
else:
dim = None
items = None
s.expect(':')
items = []
- if s.sy <> 'NEWLINE':
+ if s.sy != 'NEWLINE':
p_c_enum_line(s, items)
else:
s.next() # 'NEWLINE'
in_pxd = level == 'module_pxd')
def p_c_enum_line(s, items):
- if s.sy <> 'pass':
+ if s.sy != 'pass':
p_c_enum_item(s, items)
while s.sy == ',':
s.next()
s.expect('NEWLINE')
s.expect_indent()
attributes = []
- while s.sy <> 'DEDENT':
- if s.sy <> 'pass':
+ while s.sy != 'DEDENT':
+ if s.sy != 'pass':
attributes.append(
p_c_func_or_var_declaration(s, level = 'other', pos = s.position()))
else:
visibility = prev_visibility
if s.sy == 'IDENT' and s.systring in ('extern', 'public', 'readonly'):
visibility = s.systring
- if prev_visibility <> 'private' and visibility <> prev_visibility:
+ if prev_visibility != 'private' and visibility != prev_visibility:
s.error("Conflicting visibility options '%s' and '%s'"
% (prev_visibility, visibility))
s.next()
s.next()
module_path.append(class_name)
class_name = p_ident(s)
- if module_path and visibility <> 'extern':
+ if module_path and visibility != 'extern':
error(pos, "Qualified class name only allowed for 'extern' C class")
if module_path and s.sy == 'IDENT' and s.systring == 'as':
s.next()
typeobj_name = None
s.expect('[')
while 1:
- if s.sy <> 'IDENT':
+ if s.sy != 'IDENT':
break
if s.systring == 'object':
s.next()
elif s.systring == 'type':
s.next()
typeobj_name = p_ident(s)
- if s.sy <> ',':
+ if s.sy != ',':
break
s.next()
s.expect(']', "Expected 'object' or 'type'")
def p_doc_string(s):
if s.sy == 'STRING' or s.sy == 'BEGIN_STRING':
_, result = p_cat_string_literal(s)
- if s.sy <> 'EOF':
+ if s.sy != 'EOF':
s.expect_newline("Syntax error in doc string")
return result
else:
else:
level = 'module'
body = p_statement_list(s, level)
- if s.sy <> 'EOF':
+ if s.sy != 'EOF':
s.error("Syntax error in statement [%s,%s]" % (
repr(s.sy), repr(s.systring)))
return ModuleNode(pos, doc = doc, body = body, full_module_name = full_module_name)
tag = node.__class__.__name__
f.write("%s @ %s\n" % (tag, node.pos))
for name, value in node.__dict__.items():
- if name <> 'tag' and name <> 'pos':
+ if name != 'tag' and name != 'pos':
print_parse_tree(f, value, level+1, name)
return
elif t == ListType:
if not self.is_overridable and other_type.is_overridable:
return 0
nargs = len(self.args)
- if nargs <> len(other_type.args):
+ if nargs != len(other_type.args):
return 0
# When comparing C method signatures, the first argument
# is exempt from compatibility checking (the proper check
if not self.args[i].type.same_as(
other_type.args[i].type):
return 0
- if self.has_varargs <> other_type.has_varargs:
+ if self.has_varargs != other_type.has_varargs:
return 0
- if self.optional_arg_count <> other_type.optional_arg_count:
+ if self.optional_arg_count != other_type.optional_arg_count:
return 0
if not self.return_type.same_as(other_type.return_type):
return 0
if not other_type.is_cfunction:
return 0
nargs = len(self.args)
- if nargs <> len(other_type.args):
+ if nargs != len(other_type.args):
return 0
for i in range(as_cmethod, nargs):
if not self.args[i].type.subtype_of_resolved_type(other_type.args[i].type):
else:
self.args[i].needs_type_test = other_type.args[i].needs_type_test \
or not self.args[i].type.same_as(other_type.args[i].type)
- if self.has_varargs <> other_type.has_varargs:
+ if self.has_varargs != other_type.has_varargs:
return 0
- if self.optional_arg_count <> other_type.optional_arg_count:
+ if self.optional_arg_count != other_type.optional_arg_count:
return 0
if not self.return_type.subtype_of_resolved_type(other_type.return_type):
return 0
f = open(path, "rU")
text = f.read()
except IOError, e:
- print "Unable to hash scanner source file (%s)" % e
+ print("Unable to hash scanner source file (%s)" % e)
return ""
finally:
f.close()
result = f
f = None
else:
- print "Lexicon hash mismatch:" ###
- print " expected", expected_hash ###
- print " got ", actual_hash ###
+ print("Lexicon hash mismatch:") ###
+ print(" expected " + expected_hash) ###
+ print(" got " + actual_hash) ###
except IOError, e:
- print "Warning: Unable to read pickled lexicon", lexicon_pickle
- print e
+ print("Warning: Unable to read pickled lexicon " + lexicon_pickle)
+ print(e)
if f:
f.close()
return result
if f:
if notify_lexicon_unpickling:
t0 = time()
- print "Unpickling lexicon..."
+ print("Unpickling lexicon...")
lexicon = pickle.load(f)
f.close()
if notify_lexicon_unpickling:
t1 = time()
- print "Done (%.2f seconds)" % (t1 - t0)
+ print("Done (%.2f seconds)" % (t1 - t0))
def create_new_lexicon():
global lexicon
t0 = time()
- print "Creating lexicon..."
+ print("Creating lexicon...")
lexicon = make_lexicon()
t1 = time()
- print "Done (%.2f seconds)" % (t1 - t0)
+ print("Done (%.2f seconds)" % (t1 - t0))
def pickle_lexicon():
f = None
try:
f = open(lexicon_pickle, "wb")
except IOError:
- print "Warning: Unable to save pickled lexicon in", lexicon_pickle
+ print("Warning: Unable to save pickled lexicon in " + lexicon_pickle)
if f:
if notify_lexicon_pickling:
t0 = time()
- print "Pickling lexicon..."
+ print("Pickling lexicon...")
pickle.dump(lexicon_hash, f, binary_lexicon_pickle)
pickle.dump(lexicon, f, binary_lexicon_pickle)
f.close()
if notify_lexicon_pickling:
t1 = time()
- print "Done (%.2f seconds)" % (t1 - t0)
+ print("Done (%.2f seconds)" % (t1 - t0))
def get_lexicon():
global lexicon
self.indentation_char = c
#print "Scanner.indentation_action: setting indent_char to", repr(c)
else:
- if self.indentation_char <> c:
+ if self.indentation_char != c:
self.error("Mixed use of tabs and spaces")
- if text.replace(c, "") <> "":
+ if text.replace(c, "") != "":
self.error("Mixed use of tabs and spaces")
# Figure out how many indents/dedents to do
current_level = self.current_level()
self.indentation_stack.pop()
self.produce('DEDENT', '')
#print "...current level now", self.current_level() ###
- if new_level <> self.current_level():
+ if new_level != self.current_level():
self.error("Inconsistent indentation")
def eof_action(self, text):
t = self.sy
else:
t = "%s %s" % (self.sy, self.systring)
- print "--- %3d %2d %s" % (line, col, t)
+ print("--- %3d %2d %s" % (line, col, t))
def put_back(self, sy, systring):
self.unread(self.sy, self.systring)
def expect_newline(self, message = "Expected a newline"):
# Expect either a newline or end of file
- if self.sy <> 'EOF':
+ if self.sy != 'EOF':
self.expect('NEWLINE', message)
return entry
def check_previous_typedef_flag(self, entry, typedef_flag, pos):
- if typedef_flag <> entry.type.typedef_flag:
+ if typedef_flag != entry.type.typedef_flag:
error(pos, "'%s' previously declared using '%s'" % (
entry.name, ("cdef", "ctypedef")[entry.type.typedef_flag]))
def check_previous_visibility(self, entry, visibility, pos):
- if entry.visibility <> visibility:
+ if entry.visibility != visibility:
error(pos, "'%s' previously declared as '%s'" % (
entry.name, entry.visibility))
cname = None, visibility = 'private', is_cdef = 0):
# Add an entry for a variable.
if not cname:
- if visibility <> 'private':
+ if visibility != 'private':
cname = name
else:
cname = self.mangle(Naming.var_prefix, name)
# Add an entry for a C function.
entry = self.lookup_here(name)
if entry:
- if visibility <> 'private' and visibility <> entry.visibility:
+ if visibility != 'private' and visibility != entry.visibility:
warning(pos, "Function '%s' previously declared as '%s'" % (name, entry.visibility), 1)
if not entry.type.same_as(type):
warning(pos, "Function signature does not match previous declaration", 1)
entry.type = type
else:
if not cname:
- if api or visibility <> 'private':
+ if api or visibility != 'private':
cname = name
else:
cname = self.mangle(Naming.func_prefix, name)
entry = self.add_cfunction(name, type, pos, cname, visibility)
entry.func_cname = cname
- if in_pxd and visibility <> 'extern':
+ if in_pxd and visibility != 'extern':
entry.defined_in_pxd = 1
if api:
entry.api = 1
- if not defining and not in_pxd and visibility <> 'extern':
+ if not defining and not in_pxd and visibility != 'extern':
error(pos, "Non-extern C function declared but not defined")
return entry
entry = None # Will cause an error when we redeclare it
else:
self.check_previous_typedef_flag(entry, typedef_flag, pos)
- if base_type <> type.base_type:
+ if base_type != type.base_type:
error(pos, "Base type does not match previous declaration")
#
# Make a new entry if needed
entry.defined_in_pxd = 1
if implementing: # So that filenames in runtime exceptions refer to
entry.pos = pos # the .pyx file and not the .pxd file
- if visibility <> 'private' and entry.visibility <> visibility:
+ if visibility != 'private' and entry.visibility != visibility:
error(pos, "Class '%s' previously declared as '%s'"
% (name, entry.visibility))
if api:
entry.api = 1
if objstruct_cname:
- if type.objstruct_cname and type.objstruct_cname <> objstruct_cname:
+ if type.objstruct_cname and type.objstruct_cname != objstruct_cname:
error(pos, "Object struct name differs from previous declaration")
type.objstruct_cname = objstruct_cname
if typeobj_cname:
- if type.typeobj_cname and type.typeobj_cname <> typeobj_cname:
+ if type.typeobj_cname and type.typeobj_cname != typeobj_cname:
error(pos, "Type object name differs from previous declaration")
type.typeobj_cname = typeobj_cname
#
#
debug_check_c_classes = 0
if debug_check_c_classes:
- print "Scope.check_c_classes: checking scope", self.qualified_name
+ print("Scope.check_c_classes: checking scope " + self.qualified_name)
for entry in self.c_class_entries:
if debug_check_c_classes:
- print "...entry", entry.name, entry
- print "......type =", entry.type
- print "......visibility =", entry.visibility
+ print("...entry %s %s" % (entry.name, entry))
+ print("......type = " + entry.type)
+ print("......visibility = " + entry.visibility)
type = entry.type
name = entry.name
visibility = entry.visibility
if not type.scope:
error(entry.pos, "C class '%s' is declared but not defined" % name)
# Generate typeobj_cname
- if visibility <> 'extern' and not type.typeobj_cname:
+ if visibility != 'extern' and not type.typeobj_cname:
type.typeobj_cname = self.mangle(Naming.typeobj_prefix, name)
## Generate typeptr_cname
#type.typeptr_cname = self.mangle(Naming.typeptr_prefix, name)
if type.is_pyobject and not allow_pyobject:
error(pos,
"C struct/union member cannot be a Python object")
- if visibility <> 'private':
+ if visibility != 'private':
error(pos,
"C struct/union member cannot be declared %s" % visibility)
return entry
def __init__(self, name, outer_scope, visibility):
ClassScope.__init__(self, name, outer_scope)
- if visibility <> 'extern':
+ if visibility != 'extern':
self.method_table_cname = outer_scope.mangle(Naming.methtab_prefix, name)
self.member_table_cname = outer_scope.mangle(Naming.memtab_prefix, name)
self.getset_table_cname = outer_scope.mangle(Naming.gstab_prefix, name)
def generate_dynamic_init_code(self, scope, code):
if self.is_initialised_dynamically:
value = self.slot_code(scope)
- if value <> "0":
+ if value != "0":
code.putln("%s.%s = %s;" % (
scope.parent_type.typeobj_cname,
self.slot_name,
def print_call_chain(*args):
import sys
- print " ".join(map(str, args))
+ print(" ".join(map(str, args)))
f = sys._getframe(1)
while f:
name = f.f_code.co_name
c = getattr(s, "__class__", None)
if c:
name = "%s.%s" % (c.__name__, name)
- print "Called from:", name, f.f_lineno
+ print("Called from: %s %s" % (name, f.f_lineno))
f = f.f_back
- print "-" * 70
+ print("-" * 70)
compiler = compilers[bool(cplus)]
args = [compiler] + compiler_options + include_options + [c_file, "-o", o_file]
if verbose_flag or verbose:
- print " ".join(args)
+ print(" ".join(args))
#print compiler, args ###
status = os.spawnvp(os.P_WAIT, compiler, args)
- if status <> 0:
+ if status != 0:
raise CCompilerError("C compiler returned status %s" % status)
return o_file
linker = linkers[bool(cplus)]
args = [linker] + linker_options + obj_files + ["-o", out_file]
if verbose_flag or verbose:
- print " ".join(args)
+ print(" ".join(args))
status = os.spawnvp(os.P_WAIT, linker, args)
- if status <> 0:
+ if status != 0:
raise CCompilerError("Linker returned status %s" % status)
return out_file
except PyrexError, e:
#print "Caught a PyrexError:" ###
#print repr(e) ###
- print "%s.%s:" % (e.__class__.__module__,
- e.__class__.__name__), e
+ print("%s.%s: %s" % (e.__class__.__module__,
+ e.__class__.__name__, e))
sys.exit(1)
else:
obj = arg
tables = None # StateTableMachine
def __init__(self, specifications, debug = None, debug_flags = 7, timings = None):
- if type(specifications) <> types.ListType:
+ if type(specifications) != types.ListType:
raise Errors.InvalidScanner("Scanner definition is not a list")
if timings:
from Timing import time
raise e.__class__("Token number %d: %s" % (token_number, e))
def parse_token_definition(self, token_spec):
- if type(token_spec) <> types.TupleType:
+ if type(token_spec) != types.TupleType:
raise Errors.InvalidToken("Token definition is not a tuple")
- if len(token_spec) <> 2:
+ if len(token_spec) != 2:
raise Errors.InvalidToken("Wrong number of items in token definition")
pattern, action = token_spec
if not isinstance(pattern, Regexps.RE):
code0, code1 = event
if code0 == -maxint:
state['else'] = new_state
- elif code1 <> maxint:
+ elif code1 != maxint:
while code0 < code1:
state[chr(code0)] = new_state
code0 = code0 + 1
self.wrong_type(num, value, "Plex.RE instance")
def check_string(self, num, value):
- if type(value) <> type(''):
+ if type(value) != type(''):
self.wrong_type(num, value, "string")
def check_char(self, num, value):
self.check_string(num, value)
- if len(value) <> 1:
+ if len(value) != 1:
raise Errors.PlexValueError("Invalid value for argument %d of Plex.%s."
"Expected a string of length 1, got: %s" % (
num, self.__class__.__name__, repr(value)))
## def build_machine(self, m, initial_state, final_state, match_bol, nocase):
## c = self.char
-## if match_bol and c <> BOL:
+## if match_bol and c != BOL:
## s1 = self.build_opt(m, initial_state, BOL)
## else:
## s1 = initial_state
action = self.run_machine_inlined()
if action:
if self.trace:
- print "Scanner: read: Performing", action, "%d:%d" % (
- self.start_pos, self.cur_pos)
+ print("Scanner: read: Performing %s %d:%d" % (
+ action, self.start_pos, self.cur_pos))
base = self.buf_start_pos
text = self.buffer[self.start_pos - base : self.cur_pos - base]
return (text, action)
trace = self.trace
while 1:
if trace: #TRACE#
- print "State %d, %d/%d:%s -->" % ( #TRACE#
- state['number'], input_state, cur_pos, repr(cur_char)), #TRACE#
+ print("State %d, %d/%d:%s -->" % ( #TRACE#
+ state['number'], input_state, cur_pos, repr(cur_char))) #TRACE#
# Begin inlined self.save_for_backup()
#action = state.action #@slow
action = state['action'] #@fast
new_state = c and state.get('else') #@fast
if new_state:
if trace: #TRACE#
- print "State %d" % new_state['number'] #TRACE#
+ print("State %d" % new_state['number']) #TRACE#
state = new_state
# Begin inlined: self.next_char()
if input_state == 1:
# End inlined self.next_char()
else: # not new_state
if trace: #TRACE#
- print "blocked" #TRACE#
+ print("blocked") #TRACE#
# Begin inlined: action = self.back_up()
if backup_state:
(action, cur_pos, cur_line, cur_line_start,
self.next_pos = next_pos
if trace: #TRACE#
if action: #TRACE#
- print "Doing", action #TRACE#
+ print("Doing " + action) #TRACE#
return action
# def transition(self):
def next_char(self):
input_state = self.input_state
if self.trace:
- print "Scanner: next:", " "*20, "[%d] %d" % (input_state, self.cur_pos),
+ print("Scanner: next: %s [%d] %d" % (" "*20, input_state, self.cur_pos))
if input_state == 1:
self.cur_pos = self.next_pos
c = self.read_char()
else: # input_state = 5
self.cur_char = ''
if self.trace:
- print "--> [%d] %d %s" % (input_state, self.cur_pos, repr(self.cur_char))
+ print("--> [%d] %d %s" % (input_state, self.cur_pos, repr(self.cur_char)))
# def read_char(self):
# """
if self.c == ']':
char_list.append(']')
self.next()
- while not self.end and self.c <> ']':
+ while not self.end and self.c != ']':
c1 = self.get()
- if self.c == '-' and self.lookahead(1) <> ']':
+ if self.c == '-' and self.lookahead(1) != ']':
self.next()
c2 = self.get()
for a in xrange(ord(c1), ord(c2) + 1):
def check(self):
"""Check data structure integrity."""
if not self.map[-3] < self.map[-1]:
- print self
+ print(self)
assert 0
def dump(self, file):
compiler = compilers[bool(cplus)]
args = [compiler] + compiler_options + include_options + [c_file, "-o", o_file]
if verbose_flag or verbose:
- print " ".join(args)
+ print(" ".join(args))
#print compiler, args ###
status = os.spawnvp(os.P_WAIT, compiler, args)
- if status <> 0:
+ if status != 0:
raise CCompilerError("C compiler returned status %s" % status)
return o_file
linker = linkers[bool(cplus)]
args = [linker] + linker_options + obj_files + ["-o", out_file]
if verbose_flag or verbose:
- print " ".join(args)
+ print(" ".join(args))
status = os.spawnvp(os.P_WAIT, linker, args)
- if status <> 0:
+ if status != 0:
raise CCompilerError("Linker returned status %s" % status)
return out_file