Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Parser/asdl_c.py

    r2 r391  
    8787        super(EmitVisitor, self).__init__()
    8888
    89     def emit(self, s, depth, reflow=1):
     89    def emit(self, s, depth, reflow=True):
    9090        # XXX reflow long lines?
    9191        if reflow:
     
    256256        self.emit_function(cons.name, ctype, args, attrs)
    257257
    258     def emit_function(self, name, ctype, args, attrs, union=1):
     258    def emit_function(self, name, ctype, args, attrs, union=True):
    259259        args = args + attrs
    260260        if args:
     
    268268            margs += ", a%d" % i
    269269        self.emit("#define %s(%s) _Py_%s(%s)" % (name, margs, name, margs), 0,
    270                 reflow = 0)
    271         self.emit("%s _Py_%s(%s);" % (ctype, name, argstr), 0)
     270                reflow=False)
     271        self.emit("%s _Py_%s(%s);" % (ctype, name, argstr), False)
    272272
    273273    def visitProduct(self, prod, name):
    274274        self.emit_function(name, get_c_type(name),
    275                            self.get_args(prod.fields), [], union=0)
     275                           self.get_args(prod.fields), [], union=False)
    276276
    277277
     
    279279    """Visitor to generate constructor functions for AST."""
    280280
    281     def emit_function(self, name, ctype, args, attrs, union=1):
    282         def emit(s, depth=0, reflow=1):
     281    def emit_function(self, name, ctype, args, attrs, union=True):
     282        def emit(s, depth=0, reflow=True):
    283283            self.emit(s, depth, reflow)
    284284        argstr = ", ".join(["%s %s" % (atype, aname)
     
    299299                msg = "field %s is required for %s" % (argname, name)
    300300                emit('                "%s");' % msg,
    301                      2, reflow=0)
     301                     2, reflow=False)
    302302                emit('return NULL;', 2)
    303303                emit('}', 1)
     
    315315
    316316    def emit_body_union(self, name, args, attrs):
    317         def emit(s, depth=0, reflow=1):
     317        def emit(s, depth=0, reflow=True):
    318318            self.emit(s, depth, reflow)
    319319        emit("p->kind = %s_kind;" % name, 1)
     
    324324
    325325    def emit_body_struct(self, name, args, attrs):
    326         def emit(s, depth=0, reflow=1):
     326        def emit(s, depth=0, reflow=True):
    327327            self.emit(s, depth, reflow)
    328328        for argtype, argname, opt in args:
     
    734734    int i, result;
    735735    PyObject *s, *l = PyTuple_New(num_fields);
    736     if (!l) return 0;
    737     for(i = 0; i < num_fields; i++) {
     736    if (!l)
     737        return 0;
     738    for (i = 0; i < num_fields; i++) {
    738739        s = PyString_FromString(attrs[i]);
    739740        if (!s) {
     
    800801}
    801802
    802 #define obj2ast_identifier obj2ast_object
    803 #define obj2ast_string obj2ast_object
     803static int obj2ast_identifier(PyObject* obj, PyObject** out, PyArena* arena)
     804{
     805    if (!PyString_CheckExact(obj) && obj != Py_None) {
     806        PyErr_Format(PyExc_TypeError,
     807                    "AST identifier must be of type str");
     808        return 1;
     809    }
     810    return obj2ast_object(obj, out, arena);
     811}
     812
     813static int obj2ast_string(PyObject* obj, PyObject** out, PyArena* arena)
     814{
     815    if (!PyString_CheckExact(obj) && !PyUnicode_CheckExact(obj)) {
     816        PyErr_SetString(PyExc_TypeError,
     817                       "AST string must be of type str or unicode");
     818        return 1;
     819    }
     820    return obj2ast_object(obj, out, arena);
     821}
    804822
    805823static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
     
    902920            self.emit("if (!%s_singleton) return 0;" % cons.name, 1)
    903921
    904 
    905 def parse_version(mod):
    906     return mod.version.value[12:-3]
    907922
    908923class ASTModuleVisitor(PickleVisitor):
     
    920935        self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
    921936        self.emit("return;", 2)
    922         # Value of version: "$Revision: 76775 $"
     937        # Value of version: "$Revision$"
    923938        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
    924                 % parse_version(mod), 1)
     939                % mod.version, 1)
    925940        self.emit("return;", 2)
    926941        for dfn in mod.dfns:
     
    963978
    964979class StaticVisitor(PickleVisitor):
    965     CODE = '''Very simple, always emit this static code.  Overide CODE'''
     980    CODE = '''Very simple, always emit this static code.  Override CODE'''
    966981
    967982    def visit(self, object):
     
    10191034            self.emit("Py_INCREF(%s_singleton);" % t.name, 3)
    10201035            self.emit("return %s_singleton;" % t.name, 3)
    1021         self.emit("default:" % name, 2)
     1036        self.emit("default:", 2)
    10221037        self.emit('/* should never happen, but just in case ... */', 3)
    10231038        code = "PyErr_Format(PyExc_SystemError, \"unknown %s found\");" % name
     
    11031118{
    11041119    mod_ty res;
    1105     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
    1106                             (PyObject*)Interactive_type};
    1107     char *req_name[] = {"Module", "Expression", "Interactive"};
     1120    PyObject *req_type[3];
     1121    char *req_name[3];
    11081122    int isinstance;
     1123
     1124    req_type[0] = (PyObject*)Module_type;
     1125    req_type[1] = (PyObject*)Expression_type;
     1126    req_type[2] = (PyObject*)Interactive_type;
     1127
     1128    req_name[0] = "Module";
     1129    req_name[1] = "Expression";
     1130    req_name[2] = "Interactive";
     1131
    11091132    assert(0 <= mode && mode <= 2);
    11101133
     
    11601183    auto_gen_msg = common_msg % argv0
    11611184    mod = asdl.parse(srcfile)
     1185    mod.version = "82160"
    11621186    if not asdl.check(mod):
    11631187        sys.exit(1)
     
    11811205        f = open(p, "wb")
    11821206        f.write(auto_gen_msg)
    1183         f.write(c_file_msg % parse_version(mod))
     1207        f.write(c_file_msg % mod.version)
    11841208        f.write('#include "Python.h"\n')
    11851209        f.write('#include "%s-ast.h"\n' % mod.name)
Note: See TracChangeset for help on using the changeset viewer.