comparison Python/pythonrun.c @ 46120:78504d604b44

Merged revisions 61952-61953 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r61952 | mark.dickinson | 2008-03-26 22:41:36 +0100 (Wed, 26 Mar 2008) | 2 lines Typo: "objects reference count" -> "object's reference count" ........ r61953 | christian.heimes | 2008-03-26 23:01:37 +0100 (Wed, 26 Mar 2008) | 4 lines Patch #2477: Added from __future__ import unicode_literals The new PyParser_*Ex() functions are based on Neal's suggestion and initial patch. The new __future__ feature makes all '' and r'' unicode strings. b'' and br'' stay (byte) strings. ........
author Christian Heimes <christian@cheimes.de>
date Wed, 26 Mar 2008 22:34:47 +0000
parents 4284718fb631
children 36d828d27c36
comparison
equal deleted inserted replaced
46116:995c9960f7ff 46120:78504d604b44
1561 struct symtable * 1561 struct symtable *
1562 Py_SymtableString(const char *str, const char *filename, int start) 1562 Py_SymtableString(const char *str, const char *filename, int start)
1563 { 1563 {
1564 struct symtable *st; 1564 struct symtable *st;
1565 mod_ty mod; 1565 mod_ty mod;
1566 PyCompilerFlags flags;
1566 PyArena *arena = PyArena_New(); 1567 PyArena *arena = PyArena_New();
1567 if (arena == NULL) 1568 if (arena == NULL)
1568 return NULL; 1569 return NULL;
1569 1570
1570 mod = PyParser_ASTFromString(str, filename, start, NULL, arena); 1571 mod = PyParser_ASTFromString(str, filename, start, &flags, arena);
1571 if (mod == NULL) { 1572 if (mod == NULL) {
1572 PyArena_Free(arena); 1573 PyArena_Free(arena);
1573 return NULL; 1574 return NULL;
1574 } 1575 }
1575 st = PySymtable_Build(mod, filename, 0); 1576 st = PySymtable_Build(mod, filename, 0);
1582 PyParser_ASTFromString(const char *s, const char *filename, int start, 1583 PyParser_ASTFromString(const char *s, const char *filename, int start,
1583 PyCompilerFlags *flags, PyArena *arena) 1584 PyCompilerFlags *flags, PyArena *arena)
1584 { 1585 {
1585 mod_ty mod; 1586 mod_ty mod;
1586 perrdetail err; 1587 perrdetail err;
1587 node *n = PyParser_ParseStringFlagsFilename(s, filename, 1588 int iflags;
1589 iflags = PARSER_FLAGS(flags);
1590
1591 node *n = PyParser_ParseStringFlagsFilenameEx(s, filename,
1588 &_PyParser_Grammar, start, &err, 1592 &_PyParser_Grammar, start, &err,
1589 PARSER_FLAGS(flags)); 1593 &iflags);
1590 if (n) { 1594 if (n) {
1595 if (flags) {
1596 flags->cf_flags |= iflags & PyCF_MASK;
1597 }
1591 mod = PyAST_FromNode(n, flags, filename, arena); 1598 mod = PyAST_FromNode(n, flags, filename, arena);
1592 PyNode_Free(n); 1599 PyNode_Free(n);
1593 return mod; 1600 return mod;
1594 } 1601 }
1595 else { 1602 else {
1604 char *ps2, PyCompilerFlags *flags, int *errcode, 1611 char *ps2, PyCompilerFlags *flags, int *errcode,
1605 PyArena *arena) 1612 PyArena *arena)
1606 { 1613 {
1607 mod_ty mod; 1614 mod_ty mod;
1608 perrdetail err; 1615 perrdetail err;
1609 node *n = PyParser_ParseFileFlags(fp, filename, enc, 1616 int iflags;
1617
1618 iflags = PARSER_FLAGS(flags);
1619 node *n = PyParser_ParseFileFlagsEx(fp, filename, enc,
1610 &_PyParser_Grammar, 1620 &_PyParser_Grammar,
1611 start, ps1, ps2, &err, PARSER_FLAGS(flags)); 1621 start, ps1, ps2, &err, &iflags);
1612 if (n) { 1622 if (n) {
1623 if (flags) {
1624 flags->cf_flags |= iflags & PyCF_MASK;
1625 }
1613 mod = PyAST_FromNode(n, flags, filename, arena); 1626 mod = PyAST_FromNode(n, flags, filename, arena);
1614 PyNode_Free(n); 1627 PyNode_Free(n);
1615 return mod; 1628 return mod;
1616 } 1629 }
1617 else { 1630 else {