cpyte 2.2.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cpyte-2.2.0 → cpyte-2.3.0}/PKG-INFO +1 -1
- {cpyte-2.2.0 → cpyte-2.3.0}/pyproject.toml +1 -1
- cpyte-2.3.0/source/cpyte/_gc_bc.py +187 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/astparse.py +36 -36
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/bytecoding.py +328 -68
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/clib.py +0 -5
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/compiling.py +9 -49
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/lsp_server.py +1 -1
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/mainpie.py +13 -9
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/semantic_analasis.py +97 -29
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/PKG-INFO +1 -1
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/SOURCES.txt +1 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/readme.md +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/setup.cfg +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/__init__.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/__main__.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/_bignum_bc.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/_runtime_bc.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/extension_hooks.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/generate_bc.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/lexar.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/linker.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte/package_manifest.py +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/dependency_links.txt +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/entry_points.txt +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/requires.txt +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/source/cpyte.egg-info/top_level.txt +0 -0
- {cpyte-2.2.0 → cpyte-2.3.0}/test/test_bignum_jit.py +0 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
import zlib
|
|
3
|
+
|
|
4
|
+
from llvmlite import binding
|
|
5
|
+
|
|
6
|
+
_B64 = (
|
|
7
|
+
'eJyNew1cU+fZ930+knMIIRwwaNAkngjaaNUGtBYE2nwgppZ1kdrNdW5JQBRbxRCQD9tuJx+a'
|
|
8
|
+
'6GiX+lDHs/m2wdLWdX320L6u8/n93JYAZdTxOGpdx3z8OXBorbMtbe3mtr7v3us+5wQCdntH'
|
|
9
|
+
'a7jPda5z3dd9Xf/7f1/XiV5KLMhE8KOFP+oyhP4OP3ZH4tLdIGBAVqu2FB49+tKLf/7tL77x'
|
|
10
|
+
'zkn3337ifuezL2duFqoJhExqhJ6DpzNJEyJBdwn8YQIFz9iG6fuVXHHpESKsXqpg8430d2oF'
|
|
11
|
+
'3QbSfiTTPsgVa0tY3QOq4tqos2+7yXEwSm/UF9sLm4bZnMLl1oOd3ANE8fYwe0TPF1RFr6D8'
|
|
12
|
+
'Ijudv8K8IrZ5G1/wX9aD6vwB5ld5+bWdnYVMfnHtytLhWE7BcG5UY1i/vXLjMLfEUUXmL0SH'
|
|
13
|
+
'eITuxT7toLnX7cFDOTXw8UxTv8upylhWNaSw1y5jzwq5HN1dYG088lI0d9nzxeG/80Ig+q2M'
|
|
14
|
+
'LMTrC76Us7T63nr2F+EuL44PsnUXoAOlpMWpnyjfddjs/eTb7xH84VvPvx9lPbfyH13y42/b'
|
|
15
|
+
'7U2Fnb7vrt3QZfnLvH7unIN1mg/nCPaVEF0vcaYPWfPnW80k6qol1MgcRF2efy9gN72G7La8'
|
|
16
|
+
'HnTYg5aiw0hbjw4f1yjhgeWb8LygKwRXhAi01LLJpaZ7hSKF74g4Q3/oS4Mf0W/dZ/KaHxT9'
|
|
17
|
+
'/33GkecbXmL/trQQu7tZh9AOCqFFU0tv4ZwSPpRhDvFqsl8/adJf6NFfQMZLJsPFgPGMzYja'
|
|
18
|
+
'2pm2BqrVHPFZGMEXgfH+WMQnMO1Opq0ksq4h4oszLeiazXi9R49qjddM+iGvASxMThiu9eiH'
|
|
19
|
+
'AsZLNuMFq/56Uj/So5/sybpqMtwEzXLE7meZjpKIPx5Zp2PaTzC8fpwwjsHsccNlxIOdyQn9'
|
|
20
|
+
'mYDxQkJ/xqS/1mOc7NFfJbaGfOZIhyd0N8u0xpm20UhTH7NuK9UUj7SAUBdp4pl2aeBk/Am4'
|
|
21
|
+
'FWoC44I4aI+0Ckxrgmk7EWnFOkyHDj/rdzL74ZKPtMWZ9likjcfCZk/EVyKqWZj2hpAvFmnt'
|
|
22
|
+
'Y8qlyyhVZoFboprA7G+PtPhEC5bIfg/TKinApSvSoYu0+ZjHYeyJdJixfpsZS2DQzkb2Q9zg'
|
|
23
|
+
'lhDxx5jmhpQ8FvHzTIe0RohzNxaCn+2iqx286FI30yR+trBMqTyISIN2c6QJLHQzkKMWnehV'
|
|
24
|
+
'd6SDE62B/75QCYvtPJ6g7omFfClh6bQwPiNcLwtDPrSOs6NYv7KWQzVjVo6yqhZ12pGT4EJZ'
|
|
25
|
+
'YRvq7QuUIKt63dphjKXsxHL0LeS0Lqbf4IM8i/+P9004SUFDNoMdFTGVPNj2tf8Lmt/mR2zG'
|
|
26
|
+
'/h7DmZ6s8QnDuSRGyyQBAPNF1nkifpZpRmxbe2RdnOlgIYMQ5EhzQ6iVZfZbGQHAYDxD8FcD'
|
|
27
|
+
'xn6v/l2wYDNeArh69dcmDICxwR7jSFIP6L3gMZ6zLT5DJCghHoEkNpuZ/Q2hJiGyH/UTxvEA'
|
|
28
|
+
'nv2CSYOCxn6b8WwPwCwLUNofMF63gTWjcDeLgwng8XmY/T7mSZ2YTY7Z75Sh5ZegpYu08MwT'
|
|
29
|
+
'EvAEGYFtDTBgnvBF9jeIOrFIkwizlriIunZmv8B0tDN+EVStLKxOQlRkHeyLBgbSIV2W9FFw'
|
|
30
|
+
'S4ZiPNIG+0600HwChIykAJf7uiNNsFXF7dDaHcFmfRGYpU3EmO8EjhsGmJnpAPTKckAa449J'
|
|
31
|
+
'a6Q6WBl1EB/saozxi553cOKnFQJIyYNucQDQ1YlYhRw5I01xUQ3A2Z2CU3QaTtQMxrpnhOun'
|
|
32
|
+
'hSdSQpbxhE5bMJTuo5s57iqfPTGquTKqnJrSvD+uuenSfIJODZSdcizqc5SGQ6UoXHbasWg0'
|
|
33
|
+
'VB6myhOO9acGSk/aysJURZyyZn/iyr6CuE+t2RMWzR/BAp/9kTX7ikVzc0rzyajysiv7qkdz'
|
|
34
|
+
'hc/eY8l+Pw6a44R11FEyPFDaRVWcTJYkHBVoAmVPJfDsH3AMsmVP8NnvuTQ3R5VXXZoJa/Zn'
|
|
35
|
+
'PFjLTiwMO0pHqEWv2iAPFadC93aGKvqSC6NURS8IkyWdVGlCGjjWx6h74VbnQEmCKhcHZSdh'
|
|
36
|
+
'QN17ylFxUtQZHigBecyxfhQuidLTVEUiVH6aKgVhN1UWhtWBPFCacCwKh8pPhirGCelSPxaA'
|
|
37
|
+
'W2WiWvnoQFlvqGxU1DwPwpCogDXXjwyUnA6VjWHjZSMObPaUoxQkMEg4Ss7juMGt8q5Qebej'
|
|
38
|
+
'TJaHyruo0mFpjYHy8AD2HPxMiK4OU6JLyfKo+BmHABLyYEQcJBylnWBhoBxy1DtQMiqqjYRK'
|
|
39
|
+
'RGsV44FFgzZsZ4wyngrowynhyLSQMEwLz6eEYarP9M3vY4wsRocswA8ROJ7WCdLWwHSaMFxK'
|
|
40
|
+
'Gi4IBjg4Rgj+4gSMjXC0wfkCPHMWb3n9NcKAgCT3mxkB2JKNNG0FC3g/7gcKhV0Wi6zjIvst'
|
|
41
|
+
'DDBGR0Oow8k8aWZQdjpRDBHG6wSmJgbP3hApST/RLJjB9p8Qdwd6l9cDmYx5svoDhmtJw02v'
|
|
42
|
+
'/kYg612r/prJAMIhr36YMEqDcwH9FNzy6IcwO+HBpR4D0NRU0nC9R1S2GYdALoAmfmQYDlkC'
|
|
43
|
+
'H7XDIEzox0z6s6LaCGG8wMNpa7hBZEuXlxOaEbglqo0H5PMd3+oxjgUMkgJcnvcahyYMF5P4'
|
|
44
|
+
'1pjXeAbrG86ABAYI6NoIcYNb48DVSf2FlByO5mGRMOEWxPkqXp0RljAkDoZFl67a9PiTMPTb'
|
|
45
|
+
'NPLAKw0wb+PDPQA5MgyJXl31GgdFa+D/RV7Tj90wTiWyJnm9LPTMCK9NC+MpIa8Xsj67/DmG'
|
|
46
|
+
'CIoRHJHr1XzCaT5wafag7I9img+BB/hsASP8JFHW5SjppqzAKieJimEH3puwfY45Fp10AFzX'
|
|
47
|
+
'o5t89mcuDSrKvslp/tCHLXwyhYnoD9bsj4A9eM1nHg0QAlDKpzHNX0HTiOgK2J7HHKWjjkWd'
|
|
48
|
+
'VPl5itNMoewbMPuopglxYOcTn+aKNXsP8A8HpoCpNJ8iIJAucXOFqbLRUNm1gRK8TwMlo471'
|
|
49
|
+
'EmnEZNIo6aVKx2VuKZe45bSjLEGVjYfKzjvwnoUd1ykSSC+FuSg2AGxQPjxQFhM5oc9Rcswh'
|
|
50
|
+
'c8VJW8mwAwjBKF0OBgyw8fskkqEqTgOjiha6HRV9VJmkAJcnBsqBu06JRNc3APwA+mVdIBHZ'
|
|
51
|
+
'I+yogLiJlFI6HCo9mZIDh8REKsC84ZAYAPwUXQ2Ux0SXgBnwJ7U+HNLLgwFpAA+WiCwEOVrf'
|
|
52
|
+
'KXo1MlAeFa1horDNsMfwNHskZ4Sj00JbilJsJWjR5JW/YJSYukMin7DNUHQ1RPwNVLtU18H2'
|
|
53
|
+
'R0AgF3uyoDTtT+pRv+FSTxaUu7h+gE00getVKBhGCTgET0T8KNoBlYYusq8B13KYjqAMawcO'
|
|
54
|
+
'oZpOMM1AC0As3ZGWUdCcSq9yPfrxHqOA62oofqDOiaZXLFQzlN/xyH7xpAYa6RG3GMA+YLxo'
|
|
55
|
+
'Wzwk7tbBgPGcRB0BvUQdQybDMLFYIpZxiWGACWFALL7YY7wg6kx68d4ZNhmuiawCRZRYSmHh'
|
|
56
|
+
'SMDQD6uTGKMnC3jvQtI4JYiXJs2NBNySqeaaVL+JmtdBmBQVQNNquOrVAxVjuhMMV3uw2Ys9'
|
|
57
|
+
'WII5xATKxlGRQKBUA3aS5cAkAYkQMHv0S6wCSxBdnQyILnmMg+LnKARQkAdXxQFQ05DIRZCj'
|
|
58
|
+
'c1AQimpAPldTdHF5mi6sMxxydVoozAivp4T9xNioVaxJ0MvoFsETT3Jj/axc3/YfLFQJdDyU'
|
|
59
|
+
'AM45VIgyXIqraLf5JZ6NZSk+ww85LExSefyvYqsVW8e/K9bJKB/l8HvMPxZRFywVGzGvI5Bh'
|
|
60
|
+
'E9D90J/poU+bF7Xqohl2vlpHersttL2ohw0HLMvUSVM1G8ygjpjnhTd0cyvnKat0y9RPWarZ'
|
|
61
|
+
'Yxn9BdXm+V6+M4PW3n8m7M05mBGw2LiDGUFXNafx2i1f0oUD3RZXvyVwAgbc1nnhB7qtLOWt'
|
|
62
|
+
'5pap0bw+sc2h1kO/M41DOBnbIx0JprSPukeA/0NZL4s8tn8KM6Hfx0D718wzcFL6cYnFtHHi'
|
|
63
|
+
'WBRKCjButUIrwrSMKt+HT/FyT0yDW7U4gz9HlR9aZLU9lkxJ8tK4BixsymZzcu0HO7X5xFp7'
|
|
64
|
+
'97Elp0u/8Vzr80+WmfmM8H06Vuy+BZ5AHuZZNoxUFCFKOGhzb8Tnv8zZvbwoQEEaCYYtL+mC'
|
|
65
|
+
'ZjUlCqwxhPpCC0NUzqY0HfRKoYDQh/GrglP5kJNE+NWFZH4fU2061m+VNOkMhMpObHYiIk9J'
|
|
66
|
+
'ihLeidCY7bX+F9WvxDhQwC8FSJSIParnlEhAqR+eOLjlj7G1yMLKAg5lWHqPM0MwxbSSUzDl'
|
|
67
|
+
'OXkNkj0Fa1ZS/UPX8Q7k4VN2UK7H+fC8TgoNpJ4iYsjxSp9Hj3RKWcIKtK7mJ2++g9VTP4WJ'
|
|
68
|
+
'2OG7jAw6SMgCErv0o4B1jkvff8pMovgslzoKc5E6ZVt06cILTcijS3fpxcUsjULpLq3I2bwQ'
|
|
69
|
+
'6eh0l15zXkbIku7SK1UxMJxySYxSxetrQX1aCVyy/1sdicbTXfrND5x53IwSdsm+Ya5LP1nx'
|
|
70
|
+
'1Jwordj2tbkuPZX5Nr6V5tL1bVwmUs6K0kfHq5FFnx6lMwveIwWbLBFEl96y6DikSndphzIE'
|
|
71
|
+
't6ZtY5fWdSsggCkJTtzbgbmJ++8HjxBzEtfWmwm30qP0YV2DFa1Mj9LxxddJ8DYtSnkqwyIO'
|
|
72
|
+
'qdNd+uaJbgE1pLu0wXE/NTtxrxiLi3mUWi4So5QzOSdxjz7dlYGEFE5Fl56km+Yk7tEXd85J'
|
|
73
|
+
'XN5dReBRKgAilkbfel9A7eku1X/5WYZG08vFLj37yL28+CZx2qXfda0hkG9WlF49ls0K0w5g'
|
|
74
|
+
'l/w/qUYzK8EuXb+ThYCUpE/3m0eqATdppoRBZaD/QCZCX+Ph0gh/io3d+vyc6lhnxrKNQ7RD'
|
|
75
|
+
'VYWiOiJeSwudOWjFmd/95JHfCE/nILuL0yx/+56S7/7iA8sP/o/xj9aP1hturgtduPKnrz/H'
|
|
76
|
+
'9Exeaf9Z+cvfeyt+5Oea3Pfev9KxybaBIEklZyGtG4hl158Jktz9VTmjJUfjedu7rCZtZSl6'
|
|
77
|
+
'DRwbhfnXsIJ+cEK/Q0tURB0l4YFOu9iwNHc3qa+i7A+gkhQ0a9R2Yz/ucfQ7LApRLbRILJkq'
|
|
78
|
+
'oGQaae+EkuZxFnfrPqhtfFRre8THR/JHcjQ3YpoJS3ajJfsPU5opl2YNN2i4ZIKGAqp04w7L'
|
|
79
|
+
'IVwqjzqg1ys/jXvtspEpbauHebyBuQcXS8w9Aq5VfB5ohZjWWwow2yZE3HB26KBiiXR0B1Z+'
|
|
80
|
+
'OKX5cFzzWUJzw0LVDuM3gdL7QP1FL36/B3XlGa/y3ZgDd5rd4uepgRKozKMUFJZ3waSfB8tw'
|
|
81
|
+
'Mzug/uWuiG9rxO8LteAXLJEWXaQlHsk/+1D2hwgX0pMxXJlP8Bqot9fwZtzLQOlyzqSHfufi'
|
|
82
|
+
'OJRbhuuEcYduc0mfY/2xUNmIq1BeiCfS1s60d2+uvhnLxhEwPiq+UDLhsuRbBO5xRkyGKa9y'
|
|
83
|
+
'ywHoXgfK+qDKdZR+3l8+6SiLwuVA55sqWGmkDfxhcd3o7w5s+wMHhZLmCpT3loLkORt0agvG'
|
|
84
|
+
'JgyXwAFnPjTmFSdDi8IDJZ1Q1g6Un0qWQol+niofcZ5sYvG7nSaxLc3/nyHNDU/2B+P4DcYV'
|
|
85
|
+
'C+5c/uTSNEIzYtHA5afjyvfHNZMuzS1LweUbXj30mGMTC26YDFdNhkFoMKG0My3ewf+vstOO'
|
|
86
|
+
'ilNUaVeodGTracg+LBba1f1O/MIt/1fvaT6yZE+Ma963ii9DLAMEfr8Ea3F3A1RwhHHJ2h0I'
|
|
87
|
+
'20rHofF3VECmRqyDccMZ6E+hYkzqdxTWWTQTOL/Z7+PXLA5TaJ+OaXZG3PHIEwI8+1oXAV0D'
|
|
88
|
+
'LuOhowE4jUDE1E5Tnt1rBFfPJg01Ae2O6p0WDXRVH40rP3Jl38SmNFfGlfJbIMsL1lBrA+73'
|
|
89
|
+
'82sWQr8GOOyFPgJiSOHOAnoECGbXgHpj1ijU6oRRDIVhyAuFsfEMgTpgI9thHx0xOnlHVJ2f'
|
|
90
|
+
'sX378Ft8oJMurqqqmhewx2MfDw6zpVBuXA58DqS2t8/81ttb4ST3+XbX83W7vY07+dZ6f/Ou'
|
|
91
|
+
'vY18cdFqy2oLbxalq4qLLJbVRfg/S9Hyhyof4L8iqbXVNXj97uZd++td9zv46vrW+t372lq8'
|
|
92
|
+
'tbvrd/i9e+pX+fbuamyp9+/e3bpn9e69e32r9+xrbvH59+701zc3owL24IpOvjMJH7pXLUHP'
|
|
93
|
+
'SSg5J1QF7NCdIxy9Rh2NjVjMA8UDCW5Y7XjIvEb9VM8Ipy/O7Y5vGRu7cWHbueEzF69VZXy/'
|
|
94
|
+
'U7y6cGn4+tiZbSNj/WevVi0/xhwuRD8EXlkF8chU+c2wX5n9W33Q553C6S0dHQhe1Q9JjU4S'
|
|
95
|
+
'Q0naB/PX/sGjec+F34RNWlPvw/qEAH7PgXd/e6RJwv5W37GBEuite0MVXQPkY/jNBLRKF3nc'
|
|
96
|
+
'cMDnNfHFLWRpWAKsN0lkQ589ATkXNJlRCTiKX4svq4AMBgC2ZbBLgMOGqTJMz29DlYXPS2ZE'
|
|
97
|
+
'bNaBJKiKODSXjpLYAD79vGaE1sHvAjbYZ4Xf+Iwq7ESxzao3Xbn1CNUtQaE8p7ea9vSRyzsP'
|
|
98
|
+
'IfVX+APFK3tZ1XKbfRjF2mvZN/ZEbaYAr1v7Ohcj+Y8HuZZzXMhO2iwNDSaesV4+ZLrVm1sS'
|
|
99
|
+
'5pFJhS+40Ms0BUMnhR8+w69IWofF4VnrikCek8bDc3zWsDh416reZOFqiMLndMF1HOUXB/cM'
|
|
100
|
+
'g+yIOCwZcyKuHw/J9dZQrjrcjg7dcTChGY3TTVaxvMHrU0nrK8oRkqpeFxmIIb4SOT+30O9s'
|
|
101
|
+
'CQY4ku8VL96tCQYson5eWjxwjLZ30bPjoO3hl/JsDsr9str2JlgLo2GOqoMl+7baWCfB+RH2'
|
|
102
|
+
'aJUpwB3U6bRsMPmpqjIh+bIw3RfLMtKyNaA9bI2B6zQyUVbQn8cGA80qu1Up4HAOcNvUGah4'
|
|
103
|
+
'MNFt5dT6h3kyiAq/pSM/MBHWKBkzKYfooGf8dJDjlHyYSHnhsbE6ee25aWvBhURhl20pjktq'
|
|
104
|
+
'PWFPn92sTfJLzWRGOE4WsETslpft25hFcjbe6dJmHD5uHaulK7OqpNhk/HP/L0dMJ16BC+Jf'
|
|
105
|
+
'1O1K6S64LeaE7GMPwAUWK2LtxAEa5dd6qnlW+eByjliO7GphcJ5DMBVOZ6AmwG6N6cS1Zh5E'
|
|
106
|
+
'07UqnuMOcY7ozBxaCk14pfGd4cPkF2FdBk001JXkt8MkIrKFTSZzpXWblRU4iq9h++9QE6WQ'
|
|
107
|
+
'o3gMcsQ/zKpyuddFBPwndpzizqHt0UARbJGSEBdT8lcyoplbBZ2Uj68frD6e7iNzO1YBA87c'
|
|
108
|
+
'DHSOTOlI+/Xp6f0K+MwoQJW/mZVXb1+/edYaLMvslq0m7VAlq7wzbC9aWKPaoa011bvYIhHH'
|
|
109
|
+
'L8es7IsseT++IHRrC7mg+hin0PwoweaxrqM8x/AO9WEVnbR+/4BVUcVtZFdY7BriFlnAzwPU'
|
|
110
|
+
'avMAtV2ZAVUn/yy3xRPWk1MZVdZ1deqrluASrfIrvJPhXidSYRjn6R/zi61RJgXgaIg71Z+v'
|
|
111
|
+
'ltennoOFwjlYAOB0a3NZWnHgFezdKCk/t0R87uA01gFDGRvQHA4Tsc5mILsSI8e3qhBFC8kp'
|
|
112
|
+
'hd2qFtRF5kKOpk5oySM4fcHVwE3HrFpZHlLmkf1iWi3twDqXp5P6U56exFsvBMhobzTFdP+f'
|
|
113
|
+
'XDLpudR/wR4ZqkTKO2P2fBZ8lH1yaoN2OqwF8LucAH7OTL/IQuLs2GnLMlDYmBcW9MiUkWKQ'
|
|
114
|
+
'd1T2RHBQwkcma2WfU9A8zc3gTJ8Wq3/CcZh64icA1r0udouHXi6ioxWgAtmfD9k38ao0HuoN'
|
|
115
|
+
'ciUBxSECzcz7Kp43b2beLnHe74vzKsV5bctjLnIawhkbrFVFc3M2jeNgUtUjB2nTBFcjZuPX'
|
|
116
|
+
'gIjDOVxQTJkl7uS5PF1R9yDb7WK32lyKsAUfCXG1OReFy1Pk8TQXJQIi7Bf6liaidVHptBkv'
|
|
117
|
+
'IDCWc9kgcTLT9kPSvhJjZEqpzwi7XuVhb9NUVBucyqq0rhNiGnzWjQUWdnn4QYp9P8yHitnN'
|
|
118
|
+
'LuWrZMEWPiGjYTzJOvNFL+9roMCBOGFlF6axwanQCQIfijpFKU9YnYumb9mRajALO5hcfoPI'
|
|
119
|
+
'SHFL/HF2k54OD4KqHlWqiFuqAn6fSIzberROFLMzhKkVcUcYvGTr/Bq8XdrggBSv4/M34evH'
|
|
120
|
+
'eTq/0x4Nbvbk6XpIYtgsuvdN54FcdSBM4r01pXCDM+wKMaC+E3AjfIIUvWS+bg7cye08NVAU'
|
|
121
|
+
'zhOjVzpJZqCabSZ+MA/ZtxGYC79nJg4pUrA130HaM8XJDf148jdEZy8RC2ADHclEpv9CKeio'
|
|
122
|
+
'7ePzQSLj+6lH6PACcYaKuCNjMHDqzaKVTjUtY+qoguFYh606nTclPHdOWdBcPu+hSZMY5Jgq'
|
|
123
|
+
'l61UVA3HSTdPD6a4vOFz3hdcNExgx/oO0OTmQE7xWP9GLeFNRX1hDXsxQQ7KfK3cNIuvs2+v'
|
|
124
|
+
'nVybBYGufAohh5rLpJPx10Nf04U90WQTJNbyQz5zn5VZOn/ZI56JbrVkY2PansBzbNG6bF0O'
|
|
125
|
+
'BfGvnU2WZccl0tACafR3swmPokY3j9C9alUpmpylC+0aYRhRsGSHmkV00nOd+mWM5pdmsED1'
|
|
126
|
+
'd7HEli4hpuA/vsJ1ElXBoHYZX19EXVa+rqUVWu5lSOiZjRbiELLHg4OZQQ4YbIOKfQYtoday'
|
|
127
|
+
'z2+mG01a6xZXoar82aQ+/JGV/ClskaYgJ9jeIu3FKdp8bD6Zf9F2K3cpX4e4c0Thz/VkxWhI'
|
|
128
|
+
'TnvnAFfy5qpCtSpI3i0UK4kmKpOjpDjfFzOnxZn7JzypqqGDMQKOZ2c+OU2ZIWU2aYf9JNWm'
|
|
129
|
+
'7ZxFsrPqH+LEW13pvf3cD0J96FCrMuhk4ngoriVMG2yXQ8SCvriOaCKAgElhWFA976ILCeDK'
|
|
130
|
+
'3L0a22+fQfwkEdWSmCaMAkRMoWID+BaRv70QsT2ohgxwKtlo3HYgkTdISs8GFj6xNDO9NlCu'
|
|
131
|
+
'mRWDnDlY26K1H/rBR09/uevv2WjWGuCMq0RR1eGVDuuwi9PyUbISGLIWcnroDdmW4QvjeTuE'
|
|
132
|
+
'JNCgUKiWDutS29Olp6+wrC21QVaW4pLnCAoXKmzbuKagha7PYHehmqPCrKr0EytUpXjuZVL9'
|
|
133
|
+
'MicH6lBe1TS+zWk5OIiTO5MDjjBVSjkQaLS8CsowtZwDmnCeLqX1G0kBqqwaNnEPZwu8MqE+'
|
|
134
|
+
'hwov6YOWPiBIUjGoqF8YmlAX57+gIGpRKs4PztrTa0X/js7sR7wZ4fe/uh+l8+mZmJ2HE3t5'
|
|
135
|
+
'WqE4fIcZCkXAjLaQp4mo+vWpHMd47nFUqdhwnK/Jj9mA0H0ZTSj3Dja55TkhxsjLHl9ywKps'
|
|
136
|
+
'4H5OZcBBdcvPnrdmycf8msw/ciWDSwdJZzlPe119wilBESWm13X3LPw40upGmWcypJpRNevc'
|
|
137
|
+
'lyd9JLSVd9hiOXCYUZTNMnohwW7KgUO3UvnQrSivk6CQZb5G2lTBowgc0oFDy5gHXF0Cp+CL'
|
|
138
|
+
'E/33sEmJY09dExawd8H5q8iv9W2Hp35gYH/GqYv4tbBP39LEC5xbuFzMDMHiUejtisXhmpIU'
|
|
139
|
+
'Sdwk19O9ZIqv/8TzX7U512u1CrJrH2v+WiR4pNkMx/LHeVWui4TmxBrpBE9uUN2wrhcGM+2c'
|
|
140
|
+
'chWbS8lrhp5gK5UWE+OcWnOLlkVfxAfF2rA6Bf/5BvoAC+7UQlSGzyagFYgSuBgBlK28M2ll'
|
|
141
|
+
'a2K3POOK1bzYorU3s6d/CEef2hp9COQcU8TCEpWp+SU+is3Mv4X7B7XPTB8SRlH1cVyyqoRh'
|
|
142
|
+
'j+r3PP0hz1ov0yaXuAsLH+TIlwoJaLHlQLzJBNQJ/onKHNiNcmr/GrIq67h7X2AvFklb+McV'
|
|
143
|
+
'LCNmgFxjoZaIg7VWiD/LBD3c7+zre5OcTKu/yh5JGtTpfbVJeQCy5Pt34k5ZZUjj6Tltr4xI'
|
|
144
|
+
'0z+s/I+EtFZFinMOyPVwnD+Aa+qZWpkNqtAzgdyfW9mLlkE0AY6tfzDvaGMTRWEdi6hzRIwV'
|
|
145
|
+
'tkWrdfwgQVeZdT+2bghwd5P/YI+Ga6c5MZNdpXtI+dVbdKGM398uOk/eTx8nC7b3HdjLy2sZ'
|
|
146
|
+
'7STvOhW6Ybe9tUpbqUrCrpS1n1r+uf1jhSV+1vfLGWQf1PEGQP7LSvXq8rMS1906J7y9bfQN'
|
|
147
|
+
'VCTvwy/N4hepLz54TvXrwhOIyzdPZIYFqLCkLZ38nqLae+BgSYAQdcvT8CH2NFperOLxOklp'
|
|
148
|
+
'nY+YtmrRHP4UMWNS0ijoseyRk15DbU1t2uWj/bL/5/j5mzZnLYj164pLRu/QE6WdPUH75aBt'
|
|
149
|
+
'wUnMrpusF6H/GU6oFm+mwyK7XqoE9rqDxw2PtB3tJj7buknL3cO9pVthLlytO9OjDuY+MZjf'
|
|
150
|
+
'W1ylWseZv2rZhosnvOe+fvDB42+od/APw9hWK337h+u5fk+SoPtd3O60GKnmnHVpuUaFXFTV'
|
|
151
|
+
'GQtoX0lE56f0zV8Qp7ylXxQn1W39cfGWXva8j8jpNFHUk/05XL+0EL8pE44MPz2YNQkb7pWp'
|
|
152
|
+
'nA3Wo8F4PHCODq9Eh+6JjL8Aty/D7bP8d4tqfAHroeAEuSSvVzxYpPVWw3qf25L6lqmJl3rU'
|
|
153
|
+
'Yg23JKx6JesUf0lQf5g15romaHo0t1x/FLiERvfaDSF3UlPy9i1BezR768TnwvyL2e0EG9Ad'
|
|
154
|
+
'4rqbVIGFb3KnXjME9H/JudZjDix+J5etWR1Y0jWvxL8+UDg0L3r53sDyXu2tIw8Gig7lmUNf'
|
|
155
|
+
'D6wZzHP+722Bu8/nddc1BMqemT/86e5Axf/Ml3yqhxr0KXAwl+pq0Mux/h0p9WbVMidtlf3H'
|
|
156
|
+
'v/HfBzfLX8D9HvRws/tnUvomK0PWS91Hsj7++Tsp3a9Dkq74N44KYUxJuX5Mfl6U89gfhLLg'
|
|
157
|
+
'ugVJ7wNS+ospSU9ItwP6ZpBr4DqKpOdS8nWynWfT7YDcIct75shdlFRr/geSavvUvB5Zfjpd'
|
|
158
|
+
'Dvo+2Z9fzfGng5Levb2DpLotZec78non56z3Wdn/D+b4/4Js/69z7L8KcvyPDkhCspeS/1S2'
|
|
159
|
+
'rybS7MO8SdlOHjE7/mcoaf0GQrKXkr9LSXpmQuLmlPwSyOfB9V2EtD4sZ1ci9LHsj22OP5/L'
|
|
160
|
+
'63qAmL0uFS3NuzV9XpDPpyVuryMkfhDtw7yLaMn/ncTsOBTS0vN758x7Fy3lqYOQ5k/J76Ul'
|
|
161
|
+
'PyLETN6x/QdAng/X/0ZImE7Jt8vyH82RP0lLecUv0bk0+0/Tkh/vzIl/Ny3F7WJ63ED+I1qK'
|
|
162
|
+
'74eEtOewPAry12npPfRNQvp3JSn9X9LS+llyJi9Y/mtaej6blOKXkv9G9kdLzsbb7+V5DeTM'
|
|
163
|
+
'vFj/qryuAjJtXSD/sxznNWRanEFOKiT9ijn68xTS9ZfI2fuoQCHFfxs5e99ZFJJeAzmTL+zP'
|
|
164
|
+
'fSDHVNVKSvFI4e1hheTHd8gZ/GB9t2znaJodPG+jPG/vHPuPKyQ/Xidn4z8ir+tnc9bVLdv5'
|
|
165
|
+
'b3I2L70o+4PS9zX8/KdC4lQsI9Pkr8t+4jk1afKkQpJhzKnS5CMKKe8FKG0/ws95ed4VafOy'
|
|
166
|
+
'kKtLCimva9DMPsIAnpT9vwel+Q8/H8t2HHP8/5tC8gWfBQvS7OCfb4CBqHR2rMVnx97aR93i'
|
|
167
|
+
'l3Y763bWub27d++tc9d2tNQ3w5V/X2PjrsadMALpY253c8v2er/ft7q5xQ+ylgZ/fXPD3t3b'
|
|
168
|
+
'5bF3u9tdt7exuWX1jGBH4+qW5n1wvatxVwv+Xbe73uvHA3/9zl3NLfXi2LevuQH/bq5vAQu7'
|
|
169
|
+
'9/pTF4317S2psc9f3yo9CCaa67Gr6Zeggi9TT7T5d7XUu2u9fv8uaY5pu3u8j9W7d/q9HeLM'
|
|
170
|
+
'stF9jbt3NT6GR627miVPwTmf/ODu+roWeQ3it5l76vfAdKt9ltW71q3FqnXeRnddbZo3dbU4'
|
|
171
|
+
'rvsaW/zeusd2+OvrG7zNDW5fi19UbW4BKVbY1ewWNeq3++SANdfv3pEa74RVi6re7dv97kbf'
|
|
172
|
+
'bXL83SvIZ2y6/d7GnfXiInEiUw/s2ddS3y7msO4L5LB2uLPD59/V2LLDW7vX3yJiAvslmZkb'
|
|
173
|
+
'zllBwalJRwL44W+R05+Og9ScdfDZUp8KY52vA4dRiiThbvQ27m3eXV/vEw3t9cmPE+7U04/u'
|
|
174
|
+
'BTzCvYZ9Ldv3tuEhhFB2RkJqQ73XJ34pLX2J7fXvWbd2lRd/yb1qj7dub3N78TosLwcMwwP3'
|
|
175
|
+
'ulPgdE+j050OT3cKn+5ZAHWnI9SdDlH3HIy654DUnUKp+zaYuqdx6p4FVHcKqe4ZqLqnsepO'
|
|
176
|
+
'gdWdhlZ3alW349U9A1j3LMS60yDrxph1p0DrTkPYbNi603Hr/kfAvf2GjFz3XOi6p7Hrvh28'
|
|
177
|
+
'7rovuiPB1y3j1y0C2D2N4JS122I9O1azUOyeA2N3Oo7ds4Hs/kIkzwDZPRvJs4DsTkOyey6U'
|
|
178
|
+
'3elYdk+zNBbP5mn3DFG7p5k6RdXVbkzWqQVMr05yotr9DwgbnxP/D+YHFWw='
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
_DATA = None
|
|
182
|
+
|
|
183
|
+
def load_gc_bc():
|
|
184
|
+
global _DATA
|
|
185
|
+
if _DATA is None:
|
|
186
|
+
_DATA = zlib.decompress(base64.b64decode("".join(_B64)))
|
|
187
|
+
return binding.parse_bitcode(_DATA)
|
|
@@ -37,33 +37,6 @@ def _get_all_parser_hooks(enable_extensions: bool) -> List[Any]:
|
|
|
37
37
|
return hooks
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
def parse_f(tree: list[Token]):
|
|
41
|
-
node = {}
|
|
42
|
-
|
|
43
|
-
node["type"] = tree[0].value
|
|
44
|
-
node["name"] = tree[1].value
|
|
45
|
-
|
|
46
|
-
i = 3
|
|
47
|
-
params = {}
|
|
48
|
-
|
|
49
|
-
while i < len(tree) and tree[i].type != TokenType.RPAREN:
|
|
50
|
-
if tree[i].type != TokenType.IDENTIFIER:
|
|
51
|
-
i += 1
|
|
52
|
-
continue
|
|
53
|
-
param_name = tree[i].value
|
|
54
|
-
i += 1
|
|
55
|
-
while i < len(tree) and tree[i].type != TokenType.IDENTIFIER:
|
|
56
|
-
i += 1
|
|
57
|
-
if i < len(tree) and tree[i].type == TokenType.IDENTIFIER:
|
|
58
|
-
param_type = tree[i].value
|
|
59
|
-
i += 1
|
|
60
|
-
params[param_name] = param_type
|
|
61
|
-
|
|
62
|
-
node["params"] = params
|
|
63
|
-
node["body"] = tree[i + 1:] if i < len(tree) else []
|
|
64
|
-
|
|
65
|
-
return node
|
|
66
|
-
|
|
67
40
|
def _loc(node):
|
|
68
41
|
token = getattr(node, '_token', None)
|
|
69
42
|
if token:
|
|
@@ -519,6 +492,7 @@ def parse_class(tokens: list[Token], pos: int):
|
|
|
519
492
|
raise ParseError('Expected class name', tokens[pos] if pos < len(tokens) else None)
|
|
520
493
|
name = tokens[pos].value
|
|
521
494
|
pos += 1
|
|
495
|
+
generic_params, pos = parse_generic_params(tokens, pos)
|
|
522
496
|
base = None
|
|
523
497
|
if pos < len(tokens) and tokens[pos].type == TokenType.LPAREN:
|
|
524
498
|
pos += 1
|
|
@@ -530,7 +504,15 @@ def parse_class(tokens: list[Token], pos: int):
|
|
|
530
504
|
raise ParseError('Expected ")" after base class name', tokens[pos] if pos < len(tokens) else None)
|
|
531
505
|
pos += 1
|
|
532
506
|
body, pos = parse_suite(tokens, pos)
|
|
533
|
-
|
|
507
|
+
fields = []
|
|
508
|
+
methods = []
|
|
509
|
+
for stmt in body:
|
|
510
|
+
if isinstance(stmt, FuncDef):
|
|
511
|
+
methods.append(stmt)
|
|
512
|
+
elif isinstance(stmt, VarDecl):
|
|
513
|
+
fields.append(Field(stmt.name, stmt.var_type, token=stmt._token))
|
|
514
|
+
return ClassDef(name, base=base, fields=fields, methods=methods,
|
|
515
|
+
generic_params=generic_params, token=tok), pos
|
|
534
516
|
|
|
535
517
|
|
|
536
518
|
def parse_try(tokens: list[Token], pos: int):
|
|
@@ -737,13 +719,14 @@ class If:
|
|
|
737
719
|
return f'If({self.cond}, {self.body}, {self.orelse})'
|
|
738
720
|
|
|
739
721
|
class FuncDef:
|
|
740
|
-
__slots__ = ('name', 'params', 'rettype', 'body', 'visibility', '_token')
|
|
741
|
-
def __init__(self, name: str, params: dict, body, rettype: str | None = None, visibility: str | None = None, token=None):
|
|
722
|
+
__slots__ = ('name', 'params', 'rettype', 'body', 'visibility', 'generic_params', '_token')
|
|
723
|
+
def __init__(self, name: str, params: dict, body, rettype: str | None = None, visibility: str | None = None, generic_params: list | None = None, token=None):
|
|
742
724
|
self.name = name
|
|
743
725
|
self.params = params
|
|
744
726
|
self.rettype = rettype
|
|
745
727
|
self.body = body
|
|
746
728
|
self.visibility = visibility
|
|
729
|
+
self.generic_params = generic_params or []
|
|
747
730
|
self._token = token
|
|
748
731
|
def __repr__(self):
|
|
749
732
|
vis = f'{self.visibility} ' if self.visibility else ''
|
|
@@ -926,6 +909,20 @@ class InlineAsm:
|
|
|
926
909
|
return f'InlineAsm({self.template}, volatile={self.volatile})'
|
|
927
910
|
|
|
928
911
|
|
|
912
|
+
class ClassDef:
|
|
913
|
+
__slots__ = ('name', 'base', 'fields', 'methods', 'generic_params', '_token')
|
|
914
|
+
def __init__(self, name: str, base: str | None = None, fields: list | None = None,
|
|
915
|
+
methods: list | None = None, generic_params: list | None = None, token=None):
|
|
916
|
+
self.name = name
|
|
917
|
+
self.base = base
|
|
918
|
+
self.fields = fields or []
|
|
919
|
+
self.methods = methods or []
|
|
920
|
+
self.generic_params = generic_params or []
|
|
921
|
+
self._token = token
|
|
922
|
+
def __repr__(self):
|
|
923
|
+
return f'ClassDef({self.name}, base={self.base}, fields={self.fields}, methods={self.methods})'
|
|
924
|
+
|
|
925
|
+
|
|
929
926
|
def parse_inline_asm(tokens: list[Token], pos: int):
|
|
930
927
|
tok = tokens[pos]
|
|
931
928
|
pos += 1
|
|
@@ -1058,6 +1055,9 @@ def _looks_like_type(tokens, pos):
|
|
|
1058
1055
|
depth += 1
|
|
1059
1056
|
elif tokens[i].type == TokenType.GREATER:
|
|
1060
1057
|
depth -= 1
|
|
1058
|
+
elif tokens[i].type == TokenType.COMMA and depth == 1:
|
|
1059
|
+
i += 1
|
|
1060
|
+
continue
|
|
1061
1061
|
i += 1
|
|
1062
1062
|
continue
|
|
1063
1063
|
break
|
|
@@ -1087,17 +1087,17 @@ def parse_type(tokens: list[Token], pos: int):
|
|
|
1087
1087
|
if t.type == TokenType.LBRACKET:
|
|
1088
1088
|
if pos + 1 < len(tokens) and tokens[pos + 1].type == TokenType.RBRACKET:
|
|
1089
1089
|
pos += 2
|
|
1090
|
-
base = base + '[]'
|
|
1090
|
+
base = _type_to_str(base) + '[]' if not isinstance(base, str) else base + '[]'
|
|
1091
1091
|
continue
|
|
1092
1092
|
break
|
|
1093
1093
|
elif t.type == TokenType.STAR:
|
|
1094
|
-
base = base + '*'
|
|
1094
|
+
base = _type_to_str(base) + '*'
|
|
1095
1095
|
pos += 1
|
|
1096
1096
|
elif t.type == TokenType.POW:
|
|
1097
|
-
base = base + '**'
|
|
1097
|
+
base = _type_to_str(base) + '**'
|
|
1098
1098
|
pos += 1
|
|
1099
1099
|
elif t.type == TokenType.AMPERSAND:
|
|
1100
|
-
base = base + '&'
|
|
1100
|
+
base = _type_to_str(base) + '&'
|
|
1101
1101
|
pos += 1
|
|
1102
1102
|
elif t.type == TokenType.LESS and isinstance(base, str):
|
|
1103
1103
|
pos += 1
|
|
@@ -1112,7 +1112,7 @@ def parse_type(tokens: list[Token], pos: int):
|
|
|
1112
1112
|
raise ParseError('Expected ">" to close generic type', t)
|
|
1113
1113
|
pos += 1
|
|
1114
1114
|
base = (base, tuple(params))
|
|
1115
|
-
|
|
1115
|
+
continue
|
|
1116
1116
|
else:
|
|
1117
1117
|
break
|
|
1118
1118
|
return base, pos
|
|
@@ -1434,7 +1434,7 @@ def parse_def(tokens: list[Token], pos: int):
|
|
|
1434
1434
|
params, pos = _parse_func_params(tokens, pos)
|
|
1435
1435
|
rettype, pos = _parse_func_rettype(tokens, pos)
|
|
1436
1436
|
body, pos = parse_suite(tokens, pos)
|
|
1437
|
-
return FuncDef(name, params, body, rettype, token=tok), pos
|
|
1437
|
+
return FuncDef(name, params, body, rettype, generic_params=generic_params, token=tok), pos
|
|
1438
1438
|
|
|
1439
1439
|
|
|
1440
1440
|
def _is_assignable(expr):
|