Psyduck - 可達鴨 之 鴨力山大2


Server : LiteSpeed
System : Linux premium217.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : alloknri ( 880)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /opt/alt/python27/lib64/python2.7/lib2to3/pgen2/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python27/lib64/python2.7/lib2to3/pgen2/literals.py
# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Safely evaluate Python string literals without using eval()."""

import re

simple_escapes = {"a": "\a",
                  "b": "\b",
                  "f": "\f",
                  "n": "\n",
                  "r": "\r",
                  "t": "\t",
                  "v": "\v",
                  "'": "'",
                  '"': '"',
                  "\\": "\\"}

def escape(m):
    all, tail = m.group(0, 1)
    assert all.startswith("\\")
    esc = simple_escapes.get(tail)
    if esc is not None:
        return esc
    if tail.startswith("x"):
        hexes = tail[1:]
        if len(hexes) < 2:
            raise ValueError("invalid hex string escape ('\\%s')" % tail)
        try:
            i = int(hexes, 16)
        except ValueError:
            raise ValueError("invalid hex string escape ('\\%s')" % tail)
    else:
        try:
            i = int(tail, 8)
        except ValueError:
            raise ValueError("invalid octal string escape ('\\%s')" % tail)
    return chr(i)

def evalString(s):
    assert s.startswith("'") or s.startswith('"'), repr(s[:1])
    q = s[0]
    if s[:3] == q*3:
        q = q*3
    assert s.endswith(q), repr(s[-len(q):])
    assert len(s) >= 2*len(q)
    s = s[len(q):-len(q)]
    return re.sub(r"\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3})", escape, s)

def test():
    for i in range(256):
        c = chr(i)
        s = repr(c)
        e = evalString(s)
        if e != c:
            print i, c, s, e


if __name__ == "__main__":
    test()
Name
Size
Permissions
Options
__init__.py
0.14 KB
-rw-r--r--
__init__.pyc
0.183 KB
-rw-r--r--
__init__.pyo
0.183 KB
-rw-r--r--
conv.py
9.401 KB
-rw-r--r--
conv.pyc
8.073 KB
-rw-r--r--
conv.pyo
6.948 KB
-rw-r--r--
driver.py
5.899 KB
-rw-r--r--
driver.pyc
6.477 KB
-rw-r--r--
driver.pyo
6.415 KB
-rw-r--r--
grammar.py
6.439 KB
-rw-r--r--
grammar.pyc
7.644 KB
-rw-r--r--
grammar.pyo
7.644 KB
-rw-r--r--
literals.py
1.576 KB
-rw-r--r--
literals.pyc
2.021 KB
-rw-r--r--
literals.pyo
1.795 KB
-rw-r--r--
parse.py
7.864 KB
-rw-r--r--
parse.pyc
7.219 KB
-rw-r--r--
parse.pyo
7.181 KB
-rw-r--r--
pgen.py
13.502 KB
-rw-r--r--
pgen.pyc
12.357 KB
-rw-r--r--
pgen.pyo
11.759 KB
-rw-r--r--
token.py
1.236 KB
-rwxr-xr-x
token.pyc
2.3 KB
-rw-r--r--
token.pyo
2.3 KB
-rw-r--r--
tokenize.py
18.793 KB
-rw-r--r--
tokenize.pyc
16.827 KB
-rw-r--r--
tokenize.pyo
16.74 KB
-rw-r--r--