Преглед на файлове

Cleanup in pyrex code to make it compatible with Cython.

Sander Mathijs van Veen преди 14 години
родител
ревизия
3e04c23b6a
променени са 1 файла, в които са добавени 19 реда и са изтрити 22 реда
  1. 19 22
      src/pyrex/bison_.pyx

+ 19 - 22
src/pyrex/bison_.pyx

@@ -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,19 +547,19 @@ 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,
-                                  buildDirectory + parser.flexCFile1],
-                                 extra_preargs=parser.cflags_pre,
-                                 extra_postargs=parser.cflags_post,
-                                 debug=parser.debugSymbols)
+        objs = env.compile([buildDirectory + parser.bisonCFile1,
+                            buildDirectory + parser.flexCFile1],
+                           extra_preargs=parser.cflags_pre,
+                           extra_postargs=parser.cflags_post,
+                           debug=parser.debugSymbols)
         libFileName = buildDirectory + parser.bisonEngineLibName \
                       + imp.get_suffixes()[0][0]
 
@@ -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)