Cleanup in pyrex code to make it compatible with Cython.

parent 0bdb2622
......@@ -69,7 +69,7 @@ cdef extern from "stdarg.h":
# Callback function which is invoked by target handlers
# within the C yyparse() function.
import signal
#import signal
cdef public object py_callback(object parser, char *target, int option, \
int nargs, ...):
......@@ -78,11 +78,8 @@ cdef public object py_callback(object parser, char *target, int option, \
cdef va_list ap
va_start(ap, <int>nargs)
cdef void *objptr
cdef object obj
cdef object valobj
cdef void *val
cdef char *tokval
cdef char *termname
#if parser.verbose:
......@@ -130,7 +127,6 @@ cdef public object py_callback(object parser, char *target, int option, \
# callback routine for reading input
cdef public void py_input(object parser, char *buf, int *result, int max_size):
cdef char *buf1
cdef int buflen
if parser.verbose:
......@@ -284,7 +280,6 @@ cdef class ParserEngine:
3. Compiling bison/lex files to C
4. Compiling the C files, and link into a dynamic lib
"""
cdef char *incdir
# -------------------------------------------------
# rip the pertinent grammar specs from parser class
......@@ -320,7 +315,7 @@ cdef class ParserEngine:
f = open(buildDirectory + parser.bisonFile, "w")
write = f.write
writelines = f.writelines
#writelines = f.writelines
# grammar file prologue
write("\n".join([
......@@ -374,8 +369,8 @@ cdef class ParserEngine:
tmp = []
#print "options = %s" % repr(options)
opts = options.split("|")
#print "opts = %s" % repr(opts)
#opts = options.split("|")
##print "opts = %s" % repr(opts)
r = unquoted % r"\|"
#print "r = <%s>" % r
opts1 = re.split(r, " " + options)
......@@ -406,9 +401,10 @@ cdef class ParserEngine:
action = action + ' $$ = (*py_callback)(\n py_parser, "%s", %s, %%s' % \
(rule[0], idx) # note we're deferring the substitution of 'nterms' (last arg)
args = []
i = -1
if nterms == 0:
args.append('NULL')
i = -1
else:
for i in range(nterms):
if option[i] == '%prec':
......@@ -498,8 +494,8 @@ cdef class ParserEngine:
f.close()
# create and set up a compiler object
ccompiler = distutils.ccompiler.new_compiler(verbose=parser.verbose)
ccompiler.set_include_dirs([distutils.sysconfig.get_python_inc()])
env = distutils.ccompiler.new_compiler(verbose=parser.verbose)
env.set_include_dirs([distutils.sysconfig.get_python_inc()])
# -----------------------------------------
# Now run bison on the grammar file
......@@ -509,7 +505,7 @@ cdef class ParserEngine:
if parser.verbose:
print 'bison cmd:', ' '.join(bisonCmd)
ccompiler.spawn(bisonCmd)
env.spawn(bisonCmd)
if parser.verbose:
print "renaming bison output files"
......@@ -536,7 +532,7 @@ cdef class ParserEngine:
if parser.verbose:
print 'flex cmd:', ' '.join(flexCmd)
ccompiler.spawn(flexCmd)
env.spawn(flexCmd)
if os.path.isfile(buildDirectory + parser.flexCFile1):
os.unlink(buildDirectory + parser.flexCFile1)
......@@ -551,15 +547,15 @@ cdef class ParserEngine:
# Now compile the files into a shared lib
# compile bison and lex c sources
#bisonObj = ccompiler.compile([parser.bisonCFile1])
#lexObj = ccompiler.compile([parser.flexCFile1])
#bisonObj = env.compile([parser.bisonCFile1])
#lexObj = env.compile([parser.flexCFile1])
#cl /DWIN32 /G4 /Gs /Oit /MT /nologo /W3 /WX bisondynlib-win32.c /Id:\python23\include
#cc.compile(['bisondynlib-win32.c'],
# extra_preargs=['/DWIN32', '/G4', '/Gs', '/Oit', '/MT', '/nologo', '/W3', '/WX', '/Id:\python23\include'])
# link 'em into a shared lib
objs = ccompiler.compile([buildDirectory + parser.bisonCFile1,
objs = env.compile([buildDirectory + parser.bisonCFile1,
buildDirectory + parser.flexCFile1],
extra_preargs=parser.cflags_pre,
extra_postargs=parser.cflags_post,
......@@ -576,8 +572,9 @@ cdef class ParserEngine:
if parser.verbose:
print 'linking: %s => %s' % (', '.join(objs), libFileName)
ccompiler.link_shared_object(objs, libFileName)
env.link_shared_object(objs, libFileName)
#cdef char *incdir
#incdir = PyString_AsString(get_python_inc())
#bisondynlib_build(self.libFilename_py, incdir)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment