File: moduledef.py

package info (click to toggle)
pypy3 7.3.11%2Bdfsg-2%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 201,024 kB
  • sloc: python: 1,950,308; ansic: 517,580; sh: 21,417; asm: 14,419; cpp: 4,263; makefile: 4,228; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 11; awk: 4
file content (24 lines) | stat: -rw-r--r-- 671 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""Dynamic replacement for the stdlib 'symbol' module.

This module exports the symbol values computed by the grammar parser
at run-time.
"""

from pypy.interpreter.mixedmodule import MixedModule
from pypy.interpreter.pyparser import pygram


class Module(MixedModule):
    """Non-terminal symbols of Python grammar."""
    appleveldefs = {}
    interpleveldefs = {}     # see below


def _init_symbols():
    sym_name = {}
    for name, val in pygram.python_grammar.symbol_ids.iteritems():
        Module.interpleveldefs[name] = 'space.wrap(%d)' % val
        sym_name[val] = name
    Module.interpleveldefs['sym_name'] = 'space.wrap(%r)' % (sym_name,)

_init_symbols()