jaclang 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
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.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +4 -0
- jaclang/cli/__init__.py +7 -0
- jaclang/cli/cli.jac +46 -0
- jaclang/cli/cmds.jac +14 -0
- jaclang/cli/impl/__init__.py +1 -0
- jaclang/cli/impl/cli_impl.jac +93 -0
- jaclang/cli/impl/cmds_impl.jac +26 -0
- jaclang/core/__init__.py +12 -0
- jaclang/core/impl/__init__.py +1 -0
- jaclang/core/impl/arch_impl.jac +112 -0
- jaclang/core/impl/element_impl.jac +95 -0
- jaclang/core/impl/exec_ctx_impl.jac +17 -0
- jaclang/core/impl/memory_impl.jac +57 -0
- jaclang/core/primitives.jac +104 -0
- jaclang/jac/__init__.py +1 -0
- jaclang/jac/absyntree.py +1787 -0
- jaclang/jac/constant.py +46 -0
- jaclang/jac/importer.py +130 -0
- jaclang/jac/lexer.py +538 -0
- jaclang/jac/parser.py +1474 -0
- jaclang/jac/passes/__init__.py +5 -0
- jaclang/jac/passes/blue/__init__.py +25 -0
- jaclang/jac/passes/blue/ast_build_pass.py +3190 -0
- jaclang/jac/passes/blue/blue_pygen_pass.py +1335 -0
- jaclang/jac/passes/blue/decl_def_match_pass.py +278 -0
- jaclang/jac/passes/blue/import_pass.py +75 -0
- jaclang/jac/passes/blue/sub_node_tab_pass.py +30 -0
- jaclang/jac/passes/blue/tests/__init__.py +1 -0
- jaclang/jac/passes/blue/tests/test_ast_build_pass.py +61 -0
- jaclang/jac/passes/blue/tests/test_blue_pygen_pass.py +117 -0
- jaclang/jac/passes/blue/tests/test_decl_def_match_pass.py +43 -0
- jaclang/jac/passes/blue/tests/test_import_pass.py +18 -0
- jaclang/jac/passes/blue/tests/test_sub_node_pass.py +26 -0
- jaclang/jac/passes/blue/tests/test_type_analyze_pass.py +53 -0
- jaclang/jac/passes/blue/type_analyze_pass.py +731 -0
- jaclang/jac/passes/ir_pass.py +154 -0
- jaclang/jac/passes/purple/__init__.py +17 -0
- jaclang/jac/passes/purple/impl/__init__.py +1 -0
- jaclang/jac/passes/purple/impl/purple_pygen_pass_impl.jac +289 -0
- jaclang/jac/passes/purple/purple_pygen_pass.jac +35 -0
- jaclang/jac/sym_table.py +127 -0
- jaclang/jac/tests/__init__.py +1 -0
- jaclang/jac/tests/fixtures/__init__.py +1 -0
- jaclang/jac/tests/fixtures/activity.py +10 -0
- jaclang/jac/tests/fixtures/fam.jac +68 -0
- jaclang/jac/tests/fixtures/hello_world.jac +5 -0
- jaclang/jac/tests/fixtures/lexer_fam.jac +61 -0
- jaclang/jac/tests/fixtures/stuff.jac +6 -0
- jaclang/jac/tests/test_importer.py +24 -0
- jaclang/jac/tests/test_lexer.py +57 -0
- jaclang/jac/tests/test_parser.py +50 -0
- jaclang/jac/tests/test_utils.py +12 -0
- jaclang/jac/transform.py +63 -0
- jaclang/jac/transpiler.py +69 -0
- jaclang/jac/utils.py +120 -0
- jaclang/utils/__init__.py +1 -0
- jaclang/utils/fstring_parser.py +73 -0
- jaclang/utils/log.py +9 -0
- jaclang/utils/sly/__init__.py +6 -0
- jaclang/utils/sly/docparse.py +62 -0
- jaclang/utils/sly/lex.py +510 -0
- jaclang/utils/sly/yacc.py +2398 -0
- jaclang/utils/test.py +81 -0
- jaclang/utils/tests/__init__.py +1 -0
- jaclang/utils/tests/test_fstring_parser.py +55 -0
- jaclang-0.0.3.dist-info/METADATA +12 -0
- jaclang-0.0.3.dist-info/RECORD +70 -0
- {jaclang-0.0.1.dist-info → jaclang-0.0.3.dist-info}/WHEEL +1 -1
- jaclang-0.0.3.dist-info/entry_points.txt +3 -0
- jaclang-0.0.3.dist-info/top_level.txt +1 -0
- jaclang-0.0.1.dist-info/METADATA +0 -7
- jaclang-0.0.1.dist-info/RECORD +0 -4
- jaclang-0.0.1.dist-info/top_level.txt +0 -1
jaclang/utils/test.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Test case utils for Jaseci."""
|
|
2
|
+
|
|
3
|
+
import inspect
|
|
4
|
+
import os
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from unittest import TestCase as _TestCase
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class TestCase(_TestCase):
|
|
10
|
+
"""Base test case for Jaseci."""
|
|
11
|
+
|
|
12
|
+
def setUp(self) -> None:
|
|
13
|
+
"""Set up test case."""
|
|
14
|
+
return super().setUp()
|
|
15
|
+
|
|
16
|
+
def tearDown(self) -> None:
|
|
17
|
+
"""Tear down test case."""
|
|
18
|
+
return super().tearDown()
|
|
19
|
+
|
|
20
|
+
def load_fixture(self, fixture: str) -> str:
|
|
21
|
+
"""Load fixture from fixtures directory."""
|
|
22
|
+
frame = inspect.currentframe()
|
|
23
|
+
if frame is None or frame.f_back is None:
|
|
24
|
+
raise ValueError("Unable to get the previous stack frame.")
|
|
25
|
+
module = inspect.getmodule(frame.f_back)
|
|
26
|
+
if module is None or module.__file__ is None:
|
|
27
|
+
raise ValueError("Unable to determine the file of the module.")
|
|
28
|
+
fixture_src = module.__file__
|
|
29
|
+
fixture_path = os.path.join(os.path.dirname(fixture_src), "fixtures", fixture)
|
|
30
|
+
with open(fixture_path, "r") as f:
|
|
31
|
+
return f.read()
|
|
32
|
+
|
|
33
|
+
def file_to_str(self, file_path: str) -> str:
|
|
34
|
+
"""Load fixture from fixtures directory."""
|
|
35
|
+
with open(file_path, "r") as f:
|
|
36
|
+
return f.read()
|
|
37
|
+
|
|
38
|
+
def fixture_abs_path(self, fixture: str) -> str:
|
|
39
|
+
"""Get absolute path of a fixture from fixtures directory."""
|
|
40
|
+
frame = inspect.currentframe()
|
|
41
|
+
if frame is None or frame.f_back is None:
|
|
42
|
+
raise ValueError("Unable to get the previous stack frame.")
|
|
43
|
+
module = inspect.getmodule(frame.f_back)
|
|
44
|
+
if module is None or module.__file__ is None:
|
|
45
|
+
raise ValueError("Unable to determine the file of the module.")
|
|
46
|
+
fixture_src = module.__file__
|
|
47
|
+
file_path = os.path.join(os.path.dirname(fixture_src), "fixtures", fixture)
|
|
48
|
+
return os.path.abspath(file_path)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class TestCaseMicroSuite(ABC, TestCase):
|
|
52
|
+
"""Base test case for Jaseci."""
|
|
53
|
+
|
|
54
|
+
@classmethod
|
|
55
|
+
def self_attach_micro_tests(cls) -> None:
|
|
56
|
+
"""Attach micro tests."""
|
|
57
|
+
directory = os.path.dirname(__file__) + "/../../examples/micro"
|
|
58
|
+
for filename in os.listdir(directory):
|
|
59
|
+
if os.path.isfile(os.path.join(directory, filename)) and filename.endswith(
|
|
60
|
+
".jac"
|
|
61
|
+
):
|
|
62
|
+
method_name = f"test_micro_{filename.replace('.jac', '')}"
|
|
63
|
+
file_path = os.path.join(directory, filename)
|
|
64
|
+
setattr(
|
|
65
|
+
cls, method_name, lambda self, f=file_path: self.micro_suite_test(f)
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
def test_micro_jac_files_fully_tested(self) -> None: # noqa: ANN001
|
|
69
|
+
"""Test that all micro jac files are fully tested."""
|
|
70
|
+
self.directory = os.path.dirname(__file__) + "/../../examples/micro"
|
|
71
|
+
for filename in os.listdir(self.directory):
|
|
72
|
+
if os.path.isfile(os.path.join(self.directory, filename)):
|
|
73
|
+
method_name = f"test_micro_{filename.replace('.jac', '')}"
|
|
74
|
+
self.assertIn(method_name, dir(self))
|
|
75
|
+
|
|
76
|
+
cls.test_micro_jac_files_fully_tested = test_micro_jac_files_fully_tested
|
|
77
|
+
|
|
78
|
+
@abstractmethod
|
|
79
|
+
def micro_suite_test(self, filename: str) -> None:
|
|
80
|
+
"""Test micro jac file."""
|
|
81
|
+
pass
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Tests for utils."""
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Test Fstring parser."""
|
|
2
|
+
from typing import Callable
|
|
3
|
+
|
|
4
|
+
from jaclang.utils.fstring_parser import FStringLexer, FStringParser
|
|
5
|
+
from jaclang.utils.test import TestCase
|
|
6
|
+
|
|
7
|
+
fstrings = [
|
|
8
|
+
["The sum of 7 and 3 is {7 + 3}.", "7 + 3"],
|
|
9
|
+
["The lowercase version of 'HELLO' is {'HELLO'.lower()}.", "'HELLO'.lower()"],
|
|
10
|
+
[
|
|
11
|
+
"My name is {my_dict['name']} and I am {my_dict['age']} years old.",
|
|
12
|
+
"my_dict['name']",
|
|
13
|
+
"my_dict['age']",
|
|
14
|
+
],
|
|
15
|
+
["My favorite fruit is {my_list[0]}.", "my_list[0]"],
|
|
16
|
+
[
|
|
17
|
+
"The sum of 5 and 7 is {(lambda x, y: x + y)(5, 7)}.",
|
|
18
|
+
"(lambda x, y: x + y)(5, 7)",
|
|
19
|
+
],
|
|
20
|
+
["The person's name is {person.name}.", "person.name"],
|
|
21
|
+
[
|
|
22
|
+
"{'left aligned':<15} | {'center':^10} | {'right aligned':>15}",
|
|
23
|
+
"'left aligned':<15",
|
|
24
|
+
"'center':^10",
|
|
25
|
+
"'right aligned':>15",
|
|
26
|
+
],
|
|
27
|
+
["Pi to 2 decimal places is {3.14159:.2f}.", "3.14159:.2f"],
|
|
28
|
+
["Integer with leading zeros {42:05}.", "42:05"],
|
|
29
|
+
["Current date is {datetime.now():%Y-%m-%d}.", "datetime.now():%Y-%m-%d"],
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class TestFstrings(TestCase):
|
|
34
|
+
"""Test fstring parser."""
|
|
35
|
+
|
|
36
|
+
pass # Remove existing test case
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def make_test_func(example: list[str]) -> Callable:
|
|
40
|
+
"""Generate a new test function for each example in fstrings."""
|
|
41
|
+
|
|
42
|
+
def test_func(self) -> None: # noqa: ANN001
|
|
43
|
+
test_string = 'f"' + example[0] + '"'
|
|
44
|
+
tree = FStringParser().parse(FStringLexer().tokenize(test_string))
|
|
45
|
+
for i in example[1:]:
|
|
46
|
+
self.assertTrue(f"'{i}'" in str(tree) or f'"{i}"' in str(tree))
|
|
47
|
+
self.assertEqual(str(tree).count("EXPR_START"), len(example) - 1)
|
|
48
|
+
|
|
49
|
+
return test_func
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# Generate a new test case for each example in fstrings
|
|
53
|
+
for idx, example in enumerate(fstrings):
|
|
54
|
+
# Attach the new test function to the test class
|
|
55
|
+
setattr(TestFstrings, f"test_fstring_lexer_{idx}", make_test_func(example))
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
jaclang/__init__.py,sha256=n8HR401oKxP7ckVZ1cPYl-HTaYszuKV5y0kSqARu3MQ,194
|
|
2
|
+
jaclang/cli/__init__.py,sha256=RSosEgm2M0H8QS-H1i-qwVrnHcMClY2TGQlGWPRlXYE,175
|
|
3
|
+
jaclang/cli/cli.jac,sha256=ioxo91yk5RHpDy8qhYSxtl4X9U4nHNAuBQks8wkfI5o,1059
|
|
4
|
+
jaclang/cli/cmds.jac,sha256=QjOVFu5-9OTplEqotc49vqm0CqCyT1j_aW-GAf6RwhY,386
|
|
5
|
+
jaclang/cli/impl/__init__.py,sha256=BTgKqQqL0RDRnEdtLK_MhdR-rLSDnw39xLabPKUotqU,39
|
|
6
|
+
jaclang/cli/impl/cli_impl.jac,sha256=2_KsFrNMINzMbNgYG6jRhw3TmARMZ14F5gi_JcV9Z5A,2398
|
|
7
|
+
jaclang/cli/impl/cmds_impl.jac,sha256=HXSLNaDICww2gMy0qWTTU-KFRe29ZyrfDOIxBM8xAeg,719
|
|
8
|
+
jaclang/core/__init__.py,sha256=q35Msw8l4Z37k8ry1OkVfgkMRkG9LY4O6vEayXcN7yA,212
|
|
9
|
+
jaclang/core/primitives.jac,sha256=t--pgZaOAcLqoQ79EYjrRyk5Ef0n3W2HXm6c4GvRSpQ,2786
|
|
10
|
+
jaclang/core/impl/__init__.py,sha256=BTgKqQqL0RDRnEdtLK_MhdR-rLSDnw39xLabPKUotqU,39
|
|
11
|
+
jaclang/core/impl/arch_impl.jac,sha256=A1LJuGNXBhZ0cN_wmSJn_o9tffDu_EUZWgfjjnIWXOk,3063
|
|
12
|
+
jaclang/core/impl/element_impl.jac,sha256=rgu3RcXJ5uRmXKBlEEsVvcADMQgnj3yPL6DDvSScfa8,2486
|
|
13
|
+
jaclang/core/impl/exec_ctx_impl.jac,sha256=blu_ZYWcx0SuXItjJ4oUfnrllvlFUw9eZbff0OXVob8,370
|
|
14
|
+
jaclang/core/impl/memory_impl.jac,sha256=R27OWfEajtZ05RxYxR3hjiLYK7SxS9IQyZ9Q6U__L8g,1364
|
|
15
|
+
jaclang/jac/__init__.py,sha256=OAIBG-7iYvbebyiu0pJ-lFsua8mD6meBkaTylb8XS64,26
|
|
16
|
+
jaclang/jac/absyntree.py,sha256=wE_IeTCDU9IHTP-JRFw3I3SxIfpvs4q6q-eTN5jqAtw,47429
|
|
17
|
+
jaclang/jac/constant.py,sha256=40jhhphWVj_bvEdnPqoH2SflNT74CZPwBSfxKn0hEwo,1107
|
|
18
|
+
jaclang/jac/importer.py,sha256=NcgoMSEQaNuS8n5r9eo8jqYIF1RtV7Vk7OwEGJ00GN4,4645
|
|
19
|
+
jaclang/jac/lexer.py,sha256=QGbnbJv29tEMiQZ-417F91s4eT_zo7Aoa4mcTDY7hc0,13803
|
|
20
|
+
jaclang/jac/parser.py,sha256=EWBopxVFBK7IWof1OfGpmSckWzWvRymMB5WX-0mA2Zw,40357
|
|
21
|
+
jaclang/jac/sym_table.py,sha256=AQfTaOv5-_QyD6RnZxgNybhuvDv0DHMXkTlX9S6qOp4,3422
|
|
22
|
+
jaclang/jac/transform.py,sha256=ZOOr74toCYSnWYnP_N4DUApWtooP1lsxqvF92iW84UE,1768
|
|
23
|
+
jaclang/jac/transpiler.py,sha256=THwkV_o7X1xf9ga3P1wfIcKCaWBuZo-z1WK_LvanHt0,2188
|
|
24
|
+
jaclang/jac/utils.py,sha256=xsncQOozBr0pHkf8DNxk_Pjy6pfrNGa1qssC11VFJu4,3825
|
|
25
|
+
jaclang/jac/passes/__init__.py,sha256=0Tw0d130ZjzA05jVcny9cf5NfLjlaM70PKqFnY4zqn4,69
|
|
26
|
+
jaclang/jac/passes/ir_pass.py,sha256=wIHPmOaXKMRVuaWw_lVGk-T76eHHWWBDkR4l8i4a5do,5141
|
|
27
|
+
jaclang/jac/passes/blue/__init__.py,sha256=vUwA8sMNU4YbOEBbDqD1D9Z7mwEpVmN1-XKD81P1SFE,638
|
|
28
|
+
jaclang/jac/passes/blue/ast_build_pass.py,sha256=OhUQk1WucVTA4ojR0_0cpDoRps1BNWM8b-9HnADxcmk,97828
|
|
29
|
+
jaclang/jac/passes/blue/blue_pygen_pass.py,sha256=_UbHy6Xie8XMnIpsg2KaKbsrXpWT7kLm79EEKBwmwaY,43497
|
|
30
|
+
jaclang/jac/passes/blue/decl_def_match_pass.py,sha256=T3HS1QoAls6ZeWiPF5Rc6JBPhcLQlHnUDzwfI2mPFCM,9711
|
|
31
|
+
jaclang/jac/passes/blue/import_pass.py,sha256=z1NkmF3fGWgxsW-GFn_yPLPWK1NfGyh_MGPQx4aXFMw,2669
|
|
32
|
+
jaclang/jac/passes/blue/sub_node_tab_pass.py,sha256=FGUJ5AaddsY0pLRrFr66JEaAeD5GCQRKGJ8I-YDVwYs,964
|
|
33
|
+
jaclang/jac/passes/blue/type_analyze_pass.py,sha256=P7HjFl8bf-ZnPsl7IlLtAvm8FcpyFsXhQIccv9ahY34,18256
|
|
34
|
+
jaclang/jac/passes/blue/tests/__init__.py,sha256=UBAATLUEH3yuBN4LYKnXXV79kokRc4XB-rX12qfu0ds,28
|
|
35
|
+
jaclang/jac/passes/blue/tests/test_ast_build_pass.py,sha256=CmL0IVCNrTa8I8ua1rZe03pl3o1w3GGeTSPGGv71EF4,2339
|
|
36
|
+
jaclang/jac/passes/blue/tests/test_blue_pygen_pass.py,sha256=36etaT1XYZKVKVMwU_7uw02k8SjCkRdMa0z8JmpgO84,4611
|
|
37
|
+
jaclang/jac/passes/blue/tests/test_decl_def_match_pass.py,sha256=LYhh9k5WpV24A-B5UvKtN2F4vCO7f6X4b0TK9ZlblzM,1676
|
|
38
|
+
jaclang/jac/passes/blue/tests/test_import_pass.py,sha256=5__oTikC1BAfQt_iyqYwQEY2ARI-pTEa3Or-qY9kxjk,576
|
|
39
|
+
jaclang/jac/passes/blue/tests/test_sub_node_pass.py,sha256=V4ABc2Na4YoQ6--TP3nH1gSRK0KZrsQp6H_iybDWryc,842
|
|
40
|
+
jaclang/jac/passes/blue/tests/test_type_analyze_pass.py,sha256=cm8Tf3TnwtJpoOXYd1xlZOyCPTmEmt1_Y_McdS2ARBs,2123
|
|
41
|
+
jaclang/jac/passes/purple/__init__.py,sha256=K0I6Pud7QIQl7xkT8wqpWlxQADSl1t7Ab68P1C3vN3g,343
|
|
42
|
+
jaclang/jac/passes/purple/purple_pygen_pass.jac,sha256=cnkOgFL34yVasCcNA2SbDl5QOKpCRatW--jt5EWeOCQ,1125
|
|
43
|
+
jaclang/jac/passes/purple/impl/__init__.py,sha256=BTgKqQqL0RDRnEdtLK_MhdR-rLSDnw39xLabPKUotqU,39
|
|
44
|
+
jaclang/jac/passes/purple/impl/purple_pygen_pass_impl.jac,sha256=UhBBmUHJfKTtga-ntRoric9yAO8bjsPGi1GyUokjViQ,8501
|
|
45
|
+
jaclang/jac/tests/__init__.py,sha256=qiXa5UNRBanGOcplFKTT9a_9GEyiv7goq1OzuCjDCFE,27
|
|
46
|
+
jaclang/jac/tests/test_importer.py,sha256=mb5c6jb_1cQuW11nxwdJ8ezizuYn26GkIY4bnoY_LJQ,743
|
|
47
|
+
jaclang/jac/tests/test_lexer.py,sha256=iyDawkr9YXYFzdOSgw7V0xJsG-V2Q5yuPP_5JZIde20,1950
|
|
48
|
+
jaclang/jac/tests/test_parser.py,sha256=y7yZ9L09VSaVon_3PHfj9JuHSNC5yxcl_HPbHhvVuX8,1804
|
|
49
|
+
jaclang/jac/tests/test_utils.py,sha256=5S1dAmHpnqnrkYLX3oCucu5sFM7Tah4VL6CGacR_Kg4,382
|
|
50
|
+
jaclang/jac/tests/fixtures/__init__.py,sha256=TTeVvo4UmvhcNxybwcLnAMnHw-OnerDFQ_7vKfqF3qU,35
|
|
51
|
+
jaclang/jac/tests/fixtures/activity.py,sha256=fSvxYDKufsPeQIrbuh031zHw_hdbRv5iK9mS7dD8E54,263
|
|
52
|
+
jaclang/jac/tests/fixtures/fam.jac,sha256=ASMfSvXM78j8p-DmWgPw5NRLDRzwUmMZy46WyhxRFvo,1653
|
|
53
|
+
jaclang/jac/tests/fixtures/hello_world.jac,sha256=uT67nGzdYY7YT6Xj5-OHFAZPEHfIl4zGlfyNs7-zRBI,78
|
|
54
|
+
jaclang/jac/tests/fixtures/lexer_fam.jac,sha256=J_bcFC2RnsBxvEsTUoOIgFowkpibbhpB7FSAMYuG9RM,1394
|
|
55
|
+
jaclang/jac/tests/fixtures/stuff.jac,sha256=5gFmEO8iPGFoj3xeblcfMF2DA1d-ANJIMjdzlMxEnYU,85
|
|
56
|
+
jaclang/utils/__init__.py,sha256=86LQ_LDyWV-JFkYBpeVHpLaVxkqwFDP60XpWXOFZIQk,46
|
|
57
|
+
jaclang/utils/fstring_parser.py,sha256=K7I3wOCEAjQBePEOjWLWvRGFGthqZxIfTYtweUm99Yg,1779
|
|
58
|
+
jaclang/utils/log.py,sha256=copXpha4IB2NsffbhRD4GePA18_ePO39bVBPMBPqhkk,239
|
|
59
|
+
jaclang/utils/test.py,sha256=jy9h1oeGxN7iR0eZrDKWrdprELeakuCzGRcKpCiWObY,3229
|
|
60
|
+
jaclang/utils/sly/__init__.py,sha256=G1Y7oQ8BtApOGEYXGego223AMaq-8iQnVCn10sKmX8U,115
|
|
61
|
+
jaclang/utils/sly/docparse.py,sha256=YfDcZCuL1-5AIymgPPXsghdZuD7qSSIpiTUeQSRCFH0,1957
|
|
62
|
+
jaclang/utils/sly/lex.py,sha256=EyK1PDut3uF22Mc60Kcpa58ybfmV02p8L7ylz_1UVuY,16846
|
|
63
|
+
jaclang/utils/sly/yacc.py,sha256=KKoDgnmAL6DRpRuatC3WpX2TTjvtcDA5SZ25uCudYvo,88197
|
|
64
|
+
jaclang/utils/tests/__init__.py,sha256=8uwVqMsc6cxBAM1DuHLuNuTnzLXqOqM-WRa4ixOMF6w,23
|
|
65
|
+
jaclang/utils/tests/test_fstring_parser.py,sha256=8nZPKhGZA0JNRQ1jhQkXRsjGV6pBK-jKEEf2nFevYK8,1887
|
|
66
|
+
jaclang-0.0.3.dist-info/METADATA,sha256=mn5IRS8lJs-xDIx7z9puVGbswF-_AMm53PE9Kq_DaLo,213
|
|
67
|
+
jaclang-0.0.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
68
|
+
jaclang-0.0.3.dist-info/entry_points.txt,sha256=aMcbIrHSMsY7_wwAjOWoW6F4RzOgrI49M9JYiOORss0,51
|
|
69
|
+
jaclang-0.0.3.dist-info/top_level.txt,sha256=ZOAoLpE67ozkUJd-v3C59wBNXiteRD8IWPbsYB3M08g,8
|
|
70
|
+
jaclang-0.0.3.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
jaclang
|
jaclang-0.0.1.dist-info/METADATA
DELETED
jaclang-0.0.1.dist-info/RECORD
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
jaclang-0.0.1.dist-info/METADATA,sha256=-rBbykWMsQiO1h_gqM9VI1O6_bhbxNMvwHvlSilp3wM,152
|
|
2
|
-
jaclang-0.0.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
|
3
|
-
jaclang-0.0.1.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
4
|
-
jaclang-0.0.1.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|