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.

Files changed (73) hide show
  1. jaclang/__init__.py +4 -0
  2. jaclang/cli/__init__.py +7 -0
  3. jaclang/cli/cli.jac +46 -0
  4. jaclang/cli/cmds.jac +14 -0
  5. jaclang/cli/impl/__init__.py +1 -0
  6. jaclang/cli/impl/cli_impl.jac +93 -0
  7. jaclang/cli/impl/cmds_impl.jac +26 -0
  8. jaclang/core/__init__.py +12 -0
  9. jaclang/core/impl/__init__.py +1 -0
  10. jaclang/core/impl/arch_impl.jac +112 -0
  11. jaclang/core/impl/element_impl.jac +95 -0
  12. jaclang/core/impl/exec_ctx_impl.jac +17 -0
  13. jaclang/core/impl/memory_impl.jac +57 -0
  14. jaclang/core/primitives.jac +104 -0
  15. jaclang/jac/__init__.py +1 -0
  16. jaclang/jac/absyntree.py +1787 -0
  17. jaclang/jac/constant.py +46 -0
  18. jaclang/jac/importer.py +130 -0
  19. jaclang/jac/lexer.py +538 -0
  20. jaclang/jac/parser.py +1474 -0
  21. jaclang/jac/passes/__init__.py +5 -0
  22. jaclang/jac/passes/blue/__init__.py +25 -0
  23. jaclang/jac/passes/blue/ast_build_pass.py +3190 -0
  24. jaclang/jac/passes/blue/blue_pygen_pass.py +1335 -0
  25. jaclang/jac/passes/blue/decl_def_match_pass.py +278 -0
  26. jaclang/jac/passes/blue/import_pass.py +75 -0
  27. jaclang/jac/passes/blue/sub_node_tab_pass.py +30 -0
  28. jaclang/jac/passes/blue/tests/__init__.py +1 -0
  29. jaclang/jac/passes/blue/tests/test_ast_build_pass.py +61 -0
  30. jaclang/jac/passes/blue/tests/test_blue_pygen_pass.py +117 -0
  31. jaclang/jac/passes/blue/tests/test_decl_def_match_pass.py +43 -0
  32. jaclang/jac/passes/blue/tests/test_import_pass.py +18 -0
  33. jaclang/jac/passes/blue/tests/test_sub_node_pass.py +26 -0
  34. jaclang/jac/passes/blue/tests/test_type_analyze_pass.py +53 -0
  35. jaclang/jac/passes/blue/type_analyze_pass.py +731 -0
  36. jaclang/jac/passes/ir_pass.py +154 -0
  37. jaclang/jac/passes/purple/__init__.py +17 -0
  38. jaclang/jac/passes/purple/impl/__init__.py +1 -0
  39. jaclang/jac/passes/purple/impl/purple_pygen_pass_impl.jac +289 -0
  40. jaclang/jac/passes/purple/purple_pygen_pass.jac +35 -0
  41. jaclang/jac/sym_table.py +127 -0
  42. jaclang/jac/tests/__init__.py +1 -0
  43. jaclang/jac/tests/fixtures/__init__.py +1 -0
  44. jaclang/jac/tests/fixtures/activity.py +10 -0
  45. jaclang/jac/tests/fixtures/fam.jac +68 -0
  46. jaclang/jac/tests/fixtures/hello_world.jac +5 -0
  47. jaclang/jac/tests/fixtures/lexer_fam.jac +61 -0
  48. jaclang/jac/tests/fixtures/stuff.jac +6 -0
  49. jaclang/jac/tests/test_importer.py +24 -0
  50. jaclang/jac/tests/test_lexer.py +57 -0
  51. jaclang/jac/tests/test_parser.py +50 -0
  52. jaclang/jac/tests/test_utils.py +12 -0
  53. jaclang/jac/transform.py +63 -0
  54. jaclang/jac/transpiler.py +69 -0
  55. jaclang/jac/utils.py +120 -0
  56. jaclang/utils/__init__.py +1 -0
  57. jaclang/utils/fstring_parser.py +73 -0
  58. jaclang/utils/log.py +9 -0
  59. jaclang/utils/sly/__init__.py +6 -0
  60. jaclang/utils/sly/docparse.py +62 -0
  61. jaclang/utils/sly/lex.py +510 -0
  62. jaclang/utils/sly/yacc.py +2398 -0
  63. jaclang/utils/test.py +81 -0
  64. jaclang/utils/tests/__init__.py +1 -0
  65. jaclang/utils/tests/test_fstring_parser.py +55 -0
  66. jaclang-0.0.3.dist-info/METADATA +12 -0
  67. jaclang-0.0.3.dist-info/RECORD +70 -0
  68. {jaclang-0.0.1.dist-info → jaclang-0.0.3.dist-info}/WHEEL +1 -1
  69. jaclang-0.0.3.dist-info/entry_points.txt +3 -0
  70. jaclang-0.0.3.dist-info/top_level.txt +1 -0
  71. jaclang-0.0.1.dist-info/METADATA +0 -7
  72. jaclang-0.0.1.dist-info/RECORD +0 -4
  73. jaclang-0.0.1.dist-info/top_level.txt +0 -1
@@ -0,0 +1,53 @@
1
+ """Test type analyze pass module."""
2
+ import inspect
3
+
4
+ from jaclang.jac.passes.blue import BluePygenPass, TypeAnalyzePass
5
+ from jaclang.jac.transpiler import jac_file_to_pass
6
+ from jaclang.jac.utils import get_ast_nodes_as_snake_case as ast_snakes
7
+ from jaclang.utils.test import TestCaseMicroSuite
8
+
9
+
10
+ class TypeAnalyzePassTests(TestCaseMicroSuite):
11
+ """Test pass module."""
12
+
13
+ def setUp(self) -> None:
14
+ """Set up test."""
15
+ return super().setUp()
16
+
17
+ def test_pygen_jac_cli(self) -> None:
18
+ """Basic test for pass."""
19
+ code_gen = jac_file_to_pass(
20
+ self.fixture_abs_path("../../../../../cli/cli.jac"), target=BluePygenPass
21
+ )
22
+ # print(code_gen.ir.meta["py_code"])
23
+ self.assertFalse(code_gen.errors_had)
24
+ self.assertGreater(len(code_gen.ir.meta["py_code"]), 200)
25
+
26
+ def test_pass_ast_complete(self) -> None:
27
+ """Test for enter/exit name diffs with parser."""
28
+ ast_func_names = [
29
+ x for x in ast_snakes() if x not in ["ast_node", "o_o_p_access_node"]
30
+ ]
31
+ pygen_func_names = []
32
+ for name, value in inspect.getmembers(TypeAnalyzePass):
33
+ if (
34
+ (name.startswith("enter_") or name.startswith("exit_"))
35
+ and inspect.isfunction(value)
36
+ and not getattr(TypeAnalyzePass.__base__, value.__name__, False)
37
+ and value.__qualname__.split(".")[0]
38
+ == TypeAnalyzePass.__name__.replace("enter_", "").replace("exit_", "")
39
+ ):
40
+ pygen_func_names.append(name.replace("enter_", "").replace("exit_", ""))
41
+ for name in pygen_func_names:
42
+ self.assertIn(name, ast_func_names)
43
+ for name in ast_func_names:
44
+ self.assertIn(name, pygen_func_names)
45
+
46
+ def micro_suite_test(self, filename: str) -> None:
47
+ """Parse micro jac file."""
48
+ ast = jac_file_to_pass(filename, "", target=BluePygenPass).ir
49
+ typed_ast = TypeAnalyzePass(mod_path=filename, input_ir=ast).ir
50
+ self.assertGreater(len(str(typed_ast.to_dict())), 10)
51
+
52
+
53
+ TypeAnalyzePassTests.self_attach_micro_tests()