pytest-dsl 0.5.0__py3-none-any.whl → 0.7.0__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.
Files changed (40) hide show
  1. pytest_dsl/cli.py +28 -33
  2. pytest_dsl/core/auto_decorator.py +72 -53
  3. pytest_dsl/core/auto_directory.py +8 -5
  4. pytest_dsl/core/dsl_executor.py +91 -23
  5. pytest_dsl/core/http_request.py +272 -221
  6. pytest_dsl/core/lexer.py +17 -17
  7. pytest_dsl/core/parser.py +52 -4
  8. pytest_dsl/core/parsetab.py +81 -70
  9. pytest_dsl/core/plugin_discovery.py +1 -8
  10. pytest_dsl/core/utils.py +43 -23
  11. pytest_dsl/core/variable_utils.py +215 -70
  12. pytest_dsl/core/yaml_loader.py +96 -19
  13. pytest_dsl/examples/assert/assertion_example.auto +1 -1
  14. pytest_dsl/examples/assert/boolean_test.auto +2 -2
  15. pytest_dsl/examples/assert/expression_test.auto +1 -1
  16. pytest_dsl/examples/custom/test_advanced_keywords.auto +2 -2
  17. pytest_dsl/examples/custom/test_custom_keywords.auto +2 -2
  18. pytest_dsl/examples/custom/test_default_values.auto +2 -2
  19. pytest_dsl/examples/http/file_reference_test.auto +1 -1
  20. pytest_dsl/examples/http/http_advanced.auto +1 -1
  21. pytest_dsl/examples/http/http_example.auto +1 -1
  22. pytest_dsl/examples/http/http_length_test.auto +1 -1
  23. pytest_dsl/examples/http/http_retry_assertions.auto +1 -1
  24. pytest_dsl/examples/http/http_retry_assertions_enhanced.auto +2 -2
  25. pytest_dsl/examples/http/http_with_yaml.auto +1 -1
  26. pytest_dsl/examples/quickstart/api_basics.auto +1 -1
  27. pytest_dsl/examples/quickstart/assertions.auto +1 -1
  28. pytest_dsl/examples/quickstart/loops.auto +2 -2
  29. pytest_dsl/keywords/assertion_keywords.py +76 -62
  30. pytest_dsl/keywords/global_keywords.py +43 -4
  31. pytest_dsl/keywords/http_keywords.py +58 -56
  32. pytest_dsl-0.7.0.dist-info/METADATA +1040 -0
  33. pytest_dsl-0.7.0.dist-info/RECORD +67 -0
  34. {pytest_dsl-0.5.0.dist-info → pytest_dsl-0.7.0.dist-info}/WHEEL +1 -1
  35. pytest_dsl/parsetab.py +0 -69
  36. pytest_dsl-0.5.0.dist-info/METADATA +0 -596
  37. pytest_dsl-0.5.0.dist-info/RECORD +0 -68
  38. {pytest_dsl-0.5.0.dist-info → pytest_dsl-0.7.0.dist-info}/entry_points.txt +0 -0
  39. {pytest_dsl-0.5.0.dist-info → pytest_dsl-0.7.0.dist-info}/licenses/LICENSE +0 -0
  40. {pytest_dsl-0.5.0.dist-info → pytest_dsl-0.7.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,67 @@
1
+ pytest_dsl/__init__.py,sha256=FzwXGvmuvMhRBKxvCdh1h-yJ2wUOnDxcTbU4Nt5fHn8,301
2
+ pytest_dsl/cli.py,sha256=rOkGrHaBJE0a0QmT1YTob-z8N5kpnzYowrgCdZrfVzE,4467
3
+ pytest_dsl/conftest_adapter.py,sha256=cevEb0oEZKTZfUrGe1-CmkFByxKhUtjuurBJP7kpLc0,149
4
+ pytest_dsl/main_adapter.py,sha256=pUIPN_EzY3JCDlYK7yF_OeLDVqni8vtG15G7gVzPJXg,181
5
+ pytest_dsl/plugin.py,sha256=MEQcdK0xdxwxCxPEDLNHX_kGF9Jc7bNxlNi4mx588DU,1190
6
+ pytest_dsl/core/__init__.py,sha256=ersUoxIWSrisxs9GX_STlH4XAbjNxAWUQB0NboaC5zI,322
7
+ pytest_dsl/core/auth_provider.py,sha256=IZfXXrr4Uuc8QHwRPvhHSzNa2fwrqhjYts1xh78D39Q,14861
8
+ pytest_dsl/core/auto_decorator.py,sha256=9Mga-GB4AzV5nkB6zpfaq8IuHa0KOH8LlFvnWyH_tnU,6623
9
+ pytest_dsl/core/auto_directory.py,sha256=egyTnVxtGs4P75EIivRauLRPJfN9aZpoGVvp_Ma72AM,2714
10
+ pytest_dsl/core/context.py,sha256=fXpVQon666Lz_PCexjkWMBBr-Xcd1SkDMp2vHar6eIs,664
11
+ pytest_dsl/core/custom_keyword_manager.py,sha256=QY-wXvzON2kkFwojBSXqWcQpo_aKixKhG-rsacV8gzE,7955
12
+ pytest_dsl/core/dsl_executor.py,sha256=cmddS97y9ABpdlmk6rE78dJqP9mec95GsYoPERoMoK0,27651
13
+ pytest_dsl/core/dsl_executor_utils.py,sha256=cFoR2p3qQ2pb-UhkoefleK-zbuFqf0aBLh2Rlp8Ebs4,2180
14
+ pytest_dsl/core/global_context.py,sha256=NcEcS2V61MT70tgAsGsFWQq0P3mKjtHQr1rgT3yTcyY,3535
15
+ pytest_dsl/core/http_client.py,sha256=1AHqtM_fkXf8JrM0ljMsJwUkyt-ysjR16NoyCckHfGc,15810
16
+ pytest_dsl/core/http_request.py,sha256=nGMlx0mFc7rDLIdp9GJ3e09OQH3ryUA56yJdRZ99dOQ,57445
17
+ pytest_dsl/core/keyword_manager.py,sha256=FtPsXlI7PxvVQMJfDN_nQYvRhkag5twvaHXjELQsCEo,4068
18
+ pytest_dsl/core/lexer.py,sha256=kHy5GDjthEG70Wt5meMgkJgbuVMUkT04H5Xfk1Gz-eE,4101
19
+ pytest_dsl/core/parser.py,sha256=myy5Kit4fVE2J48qgmtwqViQCU-uIvkQn3MKOAaWce0,11462
20
+ pytest_dsl/core/parsetab.py,sha256=iIRdVySF85RDyVRscbTodpsTh6-OZK4E3dLGeBy6PPw,28433
21
+ pytest_dsl/core/plugin_discovery.py,sha256=vcO4-I9o4GSffLDd36idhOz6XUI1K7JhOQWwhpCDoNw,6523
22
+ pytest_dsl/core/utils.py,sha256=q0AMdw5HO33JvlA3UJeQ7IXh1Z_8K1QlwiM1_yiITrU,5350
23
+ pytest_dsl/core/variable_utils.py,sha256=sx5DFZAO_syi0E_0ACisiZUQL9yxGeOfNmMtV6w9V3E,13947
24
+ pytest_dsl/core/yaml_loader.py,sha256=IOzRP3iEaVJ-4UiZGkuwy5VAD8_pWQjKHD0tZhwIGb8,4858
25
+ pytest_dsl/core/yaml_vars.py,sha256=4Z0q9_ergpDjMrNUS0qU5oHrPPLYOL91bWoNxCioSLw,2551
26
+ pytest_dsl/docs/custom_keywords.md,sha256=03dA_GeHxoLixA8Sqch14bhTbxXQCSfz9Kvged2fMCo,4381
27
+ pytest_dsl/examples/__init__.py,sha256=FKkyLFOjxfC6XnJlW7iK_BUIX9dTIpXgoYN1pfs91ss,84
28
+ pytest_dsl/examples/test_assert.py,sha256=zJ9bflsbyyl7v5AKdLHYTVPI4pe8QiQoeym-ULAs0tk,343
29
+ pytest_dsl/examples/test_custom_keyword.py,sha256=4R8DPmlzRB9Aw_YPUWezxZSNG5eHb6y81tKPGgFsGNM,221
30
+ pytest_dsl/examples/test_http.py,sha256=bjOV5YUsi_2Sb2H8y8e4ClF0kYTuWbRkXY-nYyVX4Tc,666
31
+ pytest_dsl/examples/test_quickstart.py,sha256=LfEJ8UM7wDm6X-iZWA5Y70W3KAni-48aDe7aKX_DsyE,322
32
+ pytest_dsl/examples/assert/assertion_example.auto,sha256=i6uuuWTch5O3Ml4HOwK4LV-GM03HZoBtvVoNl8qXnmQ,1605
33
+ pytest_dsl/examples/assert/boolean_test.auto,sha256=TP3teJ6oVfC1sQifyuBXQGqxIb2gTH2CxCbd3kvfZa0,1364
34
+ pytest_dsl/examples/assert/expression_test.auto,sha256=eI4YTz2KGDG96qMiUOqB2Dza7MiCgaNZovyKHIcBP4o,1946
35
+ pytest_dsl/examples/custom/test_advanced_keywords.auto,sha256=2qWczeWKG6nSt4S76U89xmHwN9w1W8uf2LKnq4AHqzc,1220
36
+ pytest_dsl/examples/custom/test_custom_keywords.auto,sha256=1UWR35SnZqJyvYX49O-VClBjhHdF7Xct3Is2Uv1bMmU,1141
37
+ pytest_dsl/examples/custom/test_default_values.auto,sha256=OuxilIguf5wTnGqqxjnWthkR82kwq9h0c7e_-aHC-dE,1363
38
+ pytest_dsl/examples/http/__init__.py,sha256=TCV9NzLmBbPDwNpLQs4_s_LlX9T47ApQ5UAr0gHm0bE,40
39
+ pytest_dsl/examples/http/builtin_auth_test.auto,sha256=qZYpmxTBW018E5YQ4c8bbnoByEA3Y7BzpPfLJtDwMKQ,2374
40
+ pytest_dsl/examples/http/file_reference_test.auto,sha256=lHDxuR9NWp-DdASRUt5xNlcOn7FtmLu6oAGDvSsMpeo,3870
41
+ pytest_dsl/examples/http/http_advanced.auto,sha256=rVEtEY93rYcSrQJ7ntwW-GbHm8wltDobgd-KydIdVLU,2595
42
+ pytest_dsl/examples/http/http_example.auto,sha256=y_5g6p3ydUoksovJd-21uAfKzcvvIA7iFJhyxx64rLc,4988
43
+ pytest_dsl/examples/http/http_length_test.auto,sha256=GYlFtSj0Nfk_9aqQrCXvRlwvTJHOk9CIf8X1CV_VKJg,1972
44
+ pytest_dsl/examples/http/http_retry_assertions.auto,sha256=zn3a54Mk4tpwi9l7qy3D4UWeci5kZJmQjXOoKuSQIwo,3332
45
+ pytest_dsl/examples/http/http_retry_assertions_enhanced.auto,sha256=xIPGujQ1Oll1fi8LW1ZGuyAryu2RjK50_utA8cfKs88,3182
46
+ pytest_dsl/examples/http/http_with_yaml.auto,sha256=u6Bw4EqQuQAMV-g2xS_iPmZwL4WRTpTqsJhL3xMRyfo,1942
47
+ pytest_dsl/examples/http/new_retry_test.auto,sha256=XBTD3NnyVnKr23FVy6xa_5RJq76k8pUR3rFwZe30RRI,664
48
+ pytest_dsl/examples/http/retry_assertions_only.auto,sha256=l2MNtJVhJ4vt3jsue1QsoyEAZrNcwyeINmHDfSEOgyk,1867
49
+ pytest_dsl/examples/http/retry_config_only.auto,sha256=6zof7HvFdBG6SEZ_ZnHygsuu9hpRpFEj-z1uPwaCSSc,1479
50
+ pytest_dsl/examples/http/retry_debug.auto,sha256=wHIGtkCG8p7x4KP1A1nuz6usroU1Pwfep5wkIffgEQo,854
51
+ pytest_dsl/examples/http/retry_with_fix.auto,sha256=BU8HeFtY8xor9o9XV_h-yx45_ZP0iAS-Ec12FE_7fNA,649
52
+ pytest_dsl/examples/http/simple_retry.auto,sha256=Y7S8sR8VRjdk-iVJxcOD0Fb2tt_RO00BmA9eat3L0ks,569
53
+ pytest_dsl/examples/http/vars.yaml,sha256=GO0x6kpaUYk90TSOxtXh_3RYcacw8-ogBv5nG72Lr9Y,1186
54
+ pytest_dsl/examples/quickstart/api_basics.auto,sha256=SrDRBASqy5ZMXnmfczuKNCXoTijF54DChpeTrfsDtGQ,1544
55
+ pytest_dsl/examples/quickstart/assertions.auto,sha256=FWrwod3L8oxuKCnA-lnVO2fzs5bZsXWaVqd6zehKrzw,859
56
+ pytest_dsl/examples/quickstart/loops.auto,sha256=ZNZ6qP636v8QMY8QRyTUBB43gWCsqHbpPQw2RqamvOk,516
57
+ pytest_dsl/keywords/__init__.py,sha256=5aiyPU_t1UiB2MEZ6M9ffOKnV1mFT_2YHxnZvyWaBNI,372
58
+ pytest_dsl/keywords/assertion_keywords.py,sha256=WOCGP7WX2wZ6mQPDGmi38LWdG2NaThHoNU54xc8VpxI,23027
59
+ pytest_dsl/keywords/global_keywords.py,sha256=4yw5yeXoGf_4W26F39EA2Pp-mH9GiKGy2jKgFO9a_wM,2509
60
+ pytest_dsl/keywords/http_keywords.py,sha256=DY1SvUgOziN6Ga-QgE0q4XFd2qGGwvbv1B_k2gTdPLw,25554
61
+ pytest_dsl/keywords/system_keywords.py,sha256=n_jRrMvSv2v6Pm_amokfyLNVOLYP7CFWbBE3_dlO7h4,11299
62
+ pytest_dsl-0.7.0.dist-info/licenses/LICENSE,sha256=Rguy8cb9sYhK6cmrBdXvwh94rKVDh2tVZEWptsHIsVM,1071
63
+ pytest_dsl-0.7.0.dist-info/METADATA,sha256=Yk23qg5nm9IYqIKk-SFH6DoJc8rESXzHp7RgqyISsNk,25750
64
+ pytest_dsl-0.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
+ pytest_dsl-0.7.0.dist-info/entry_points.txt,sha256=qqxFwSHQtjoae8_WWiO6w8y0N9nC4H8eFRvOnr_OipE,152
66
+ pytest_dsl-0.7.0.dist-info/top_level.txt,sha256=4CrSx4uNqxj7NvK6k1y2JZrSrJSzi-UvPZdqpUhumWM,11
67
+ pytest_dsl-0.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
pytest_dsl/parsetab.py DELETED
@@ -1,69 +0,0 @@
1
-
2
- # parsetab.py
3
- # This file is automatically generated. Do not edit.
4
- # pylint: disable=W,C,R
5
- _tabversion = '3.10'
6
-
7
- _lr_method = 'LALR'
8
-
9
- _lr_signature = 'AUTHOR_KEYWORD COLON COMMA DATA_KEYWORD DATE DATE_KEYWORD DESCRIPTION_KEYWORD DO END EQUALS FALSE FOR ID IMPORT_KEYWORD IN KEYWORD_KEYWORD LBRACKET LPAREN NAME_KEYWORD NUMBER PLACEHOLDER RANGE RBRACKET RETURN RPAREN STRING TAGS_KEYWORD TEARDOWN_KEYWORD TRUE USINGstart : metadata keyword_definitionsmetadata : metadata_item metadata\n | metadata_itemmetadata_item : NAME_KEYWORD COLON STRING\n | NAME_KEYWORD COLON ID\n | DESCRIPTION_KEYWORD COLON STRING\n | DESCRIPTION_KEYWORD COLON ID\n | AUTHOR_KEYWORD COLON STRING\n | AUTHOR_KEYWORD COLON ID\n | DATE_KEYWORD COLON DATE\n | IMPORT_KEYWORD COLON STRINGkeyword_definitions : keyword_definition keyword_definitions\n | keyword_definitionkeyword_definition : KEYWORD_KEYWORD ID LPAREN param_list RPAREN keyword_body END\n | KEYWORD_KEYWORD ID LPAREN RPAREN keyword_body ENDkeyword_body : keyword_statementskeyword_statements : keyword_statement keyword_statements\n | keyword_statementkeyword_statement : assignment\n | keyword_call\n | return_statementassignment : ID EQUALS expression\n | ID EQUALS keyword_callexpression : NUMBER\n | STRING\n | PLACEHOLDER\n | IDparam_list : param\n | param COMMA param_listparam : ID\n | ID EQUALS STRING\n | ID EQUALS NUMBER\n | ID EQUALS IDkeyword_call : LBRACKET ID RBRACKET COMMA parameter_list\n | LBRACKET ID RBRACKETparameter_list : parameter_item\n | parameter_item COMMA parameter_listparameter_item : ID COLON expressionreturn_statement : RETURN expression'
10
-
11
- _lr_action_items = {'NAME_KEYWORD':([0,3,20,21,22,23,24,25,26,27,],[4,4,-4,-5,-6,-7,-8,-9,-10,-11,]),'DESCRIPTION_KEYWORD':([0,3,20,21,22,23,24,25,26,27,],[5,5,-4,-5,-6,-7,-8,-9,-10,-11,]),'AUTHOR_KEYWORD':([0,3,20,21,22,23,24,25,26,27,],[6,6,-4,-5,-6,-7,-8,-9,-10,-11,]),'DATE_KEYWORD':([0,3,20,21,22,23,24,25,26,27,],[7,7,-4,-5,-6,-7,-8,-9,-10,-11,]),'IMPORT_KEYWORD':([0,3,20,21,22,23,24,25,26,27,],[8,8,-4,-5,-6,-7,-8,-9,-10,-11,]),'$end':([1,9,10,18,50,59,],[0,-1,-13,-12,-15,-14,]),'KEYWORD_KEYWORD':([2,3,10,12,20,21,22,23,24,25,26,27,50,59,],[11,-3,11,-2,-4,-5,-6,-7,-8,-9,-10,-11,-15,-14,]),'COLON':([4,5,6,7,8,64,],[13,14,15,16,17,67,]),'ID':([11,13,14,15,28,31,33,34,38,39,40,41,42,43,44,49,53,54,55,56,57,60,61,62,63,65,66,67,68,69,70,],[19,21,23,25,29,35,45,35,35,-19,-20,-21,52,57,29,57,-39,-24,-25,-26,-27,-22,-23,-35,64,-34,-36,57,64,-38,-37,]),'STRING':([13,14,15,17,33,43,49,67,],[20,22,24,27,46,55,55,55,]),'DATE':([16,],[26,]),'LPAREN':([19,],[28,]),'RPAREN':([28,29,30,32,45,46,47,58,],[31,-30,34,-28,-33,-31,-32,-29,]),'COMMA':([29,32,45,46,47,54,55,56,57,62,66,69,],[-30,44,-33,-31,-32,-24,-25,-26,-27,63,68,-38,]),'EQUALS':([29,35,],[33,49,]),'LBRACKET':([31,34,38,39,40,41,49,53,54,55,56,57,60,61,62,65,66,69,70,],[42,42,42,-19,-20,-21,42,-39,-24,-25,-26,-27,-22,-23,-35,-34,-36,-38,-37,]),'RETURN':([31,34,38,39,40,41,53,54,55,56,57,60,61,62,65,66,69,70,],[43,43,43,-19,-20,-21,-39,-24,-25,-26,-27,-22,-23,-35,-34,-36,-38,-37,]),'NUMBER':([33,43,49,67,],[47,54,54,54,]),'END':([36,37,38,39,40,41,48,51,53,54,55,56,57,60,61,62,65,66,69,70,],[50,-16,-18,-19,-20,-21,59,-17,-39,-24,-25,-26,-27,-22,-23,-35,-34,-36,-38,-37,]),'PLACEHOLDER':([43,49,67,],[56,56,56,]),'RBRACKET':([52,],[62,]),}
12
-
13
- _lr_action = {}
14
- for _k, _v in _lr_action_items.items():
15
- for _x,_y in zip(_v[0],_v[1]):
16
- if not _x in _lr_action: _lr_action[_x] = {}
17
- _lr_action[_x][_k] = _y
18
- del _lr_action_items
19
-
20
- _lr_goto_items = {'start':([0,],[1,]),'metadata':([0,3,],[2,12,]),'metadata_item':([0,3,],[3,3,]),'keyword_definitions':([2,10,],[9,18,]),'keyword_definition':([2,10,],[10,10,]),'param_list':([28,44,],[30,58,]),'param':([28,44,],[32,32,]),'keyword_body':([31,34,],[36,48,]),'keyword_statements':([31,34,38,],[37,37,51,]),'keyword_statement':([31,34,38,],[38,38,38,]),'assignment':([31,34,38,],[39,39,39,]),'keyword_call':([31,34,38,49,],[40,40,40,61,]),'return_statement':([31,34,38,],[41,41,41,]),'expression':([43,49,67,],[53,60,69,]),'parameter_list':([63,68,],[65,70,]),'parameter_item':([63,68,],[66,66,]),}
21
-
22
- _lr_goto = {}
23
- for _k, _v in _lr_goto_items.items():
24
- for _x, _y in zip(_v[0], _v[1]):
25
- if not _x in _lr_goto: _lr_goto[_x] = {}
26
- _lr_goto[_x][_k] = _y
27
- del _lr_goto_items
28
- _lr_productions = [
29
- ("S' -> start","S'",1,None,None,None),
30
- ('start -> metadata keyword_definitions','start',2,'p_start','parser.py',11),
31
- ('metadata -> metadata_item metadata','metadata',2,'p_metadata','parser.py',15),
32
- ('metadata -> metadata_item','metadata',1,'p_metadata','parser.py',16),
33
- ('metadata_item -> NAME_KEYWORD COLON STRING','metadata_item',3,'p_metadata_item','parser.py',23),
34
- ('metadata_item -> NAME_KEYWORD COLON ID','metadata_item',3,'p_metadata_item','parser.py',24),
35
- ('metadata_item -> DESCRIPTION_KEYWORD COLON STRING','metadata_item',3,'p_metadata_item','parser.py',25),
36
- ('metadata_item -> DESCRIPTION_KEYWORD COLON ID','metadata_item',3,'p_metadata_item','parser.py',26),
37
- ('metadata_item -> AUTHOR_KEYWORD COLON STRING','metadata_item',3,'p_metadata_item','parser.py',27),
38
- ('metadata_item -> AUTHOR_KEYWORD COLON ID','metadata_item',3,'p_metadata_item','parser.py',28),
39
- ('metadata_item -> DATE_KEYWORD COLON DATE','metadata_item',3,'p_metadata_item','parser.py',29),
40
- ('metadata_item -> IMPORT_KEYWORD COLON STRING','metadata_item',3,'p_metadata_item','parser.py',30),
41
- ('keyword_definitions -> keyword_definition keyword_definitions','keyword_definitions',2,'p_keyword_definitions','parser.py',34),
42
- ('keyword_definitions -> keyword_definition','keyword_definitions',1,'p_keyword_definitions','parser.py',35),
43
- ('keyword_definition -> KEYWORD_KEYWORD ID LPAREN param_list RPAREN keyword_body END','keyword_definition',7,'p_keyword_definition','parser.py',42),
44
- ('keyword_definition -> KEYWORD_KEYWORD ID LPAREN RPAREN keyword_body END','keyword_definition',6,'p_keyword_definition','parser.py',43),
45
- ('keyword_body -> keyword_statements','keyword_body',1,'p_keyword_body','parser.py',50),
46
- ('keyword_statements -> keyword_statement keyword_statements','keyword_statements',2,'p_keyword_statements','parser.py',54),
47
- ('keyword_statements -> keyword_statement','keyword_statements',1,'p_keyword_statements','parser.py',55),
48
- ('keyword_statement -> assignment','keyword_statement',1,'p_keyword_statement','parser.py',62),
49
- ('keyword_statement -> keyword_call','keyword_statement',1,'p_keyword_statement','parser.py',63),
50
- ('keyword_statement -> return_statement','keyword_statement',1,'p_keyword_statement','parser.py',64),
51
- ('assignment -> ID EQUALS expression','assignment',3,'p_assignment','parser.py',68),
52
- ('assignment -> ID EQUALS keyword_call','assignment',3,'p_assignment','parser.py',69),
53
- ('expression -> NUMBER','expression',1,'p_expression','parser.py',76),
54
- ('expression -> STRING','expression',1,'p_expression','parser.py',77),
55
- ('expression -> PLACEHOLDER','expression',1,'p_expression','parser.py',78),
56
- ('expression -> ID','expression',1,'p_expression','parser.py',79),
57
- ('param_list -> param','param_list',1,'p_param_list','parser.py',83),
58
- ('param_list -> param COMMA param_list','param_list',3,'p_param_list','parser.py',84),
59
- ('param -> ID','param',1,'p_param','parser.py',91),
60
- ('param -> ID EQUALS STRING','param',3,'p_param','parser.py',92),
61
- ('param -> ID EQUALS NUMBER','param',3,'p_param','parser.py',93),
62
- ('param -> ID EQUALS ID','param',3,'p_param','parser.py',94),
63
- ('keyword_call -> LBRACKET ID RBRACKET COMMA parameter_list','keyword_call',5,'p_keyword_call','parser.py',103),
64
- ('keyword_call -> LBRACKET ID RBRACKET','keyword_call',3,'p_keyword_call','parser.py',104),
65
- ('parameter_list -> parameter_item','parameter_list',1,'p_parameter_list','parser.py',111),
66
- ('parameter_list -> parameter_item COMMA parameter_list','parameter_list',3,'p_parameter_list','parser.py',112),
67
- ('parameter_item -> ID COLON expression','parameter_item',3,'p_parameter_item','parser.py',119),
68
- ('return_statement -> RETURN expression','return_statement',2,'p_return_statement','parser.py',123),
69
- ]