pycep-parser 0.7.0.dev1__tar.gz → 0.7.0.dev3__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.
Files changed (289) hide show
  1. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/PKG-INFO +1 -1
  2. pycep_parser-0.7.0.dev3/pycep/bicep.lark +208 -0
  3. pycep_parser-0.7.0.dev3/pycep/rules/functions.py +1179 -0
  4. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/transformer.py +30 -998
  5. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/typing.py +56 -21
  6. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pyproject.toml +1 -1
  7. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/01-param/result.json +42 -21
  8. pycep_parser-0.7.0.dev3/tests/examples/basic/02-var/result.json +128 -0
  9. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/03-output/result.json +14 -7
  10. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/04-resource/result.json +14 -7
  11. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complete/playground/result-line-numbers.json +14 -7
  12. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complete/playground/result.json +14 -7
  13. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/02-resource-module-decorator/result.json +25 -12
  14. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/04-child-resource/result.json +14 -7
  15. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/08-var-decorator/main.bicep +3 -0
  16. pycep_parser-0.7.0.dev3/tests/examples/complex/08-var-decorator/result.json +51 -0
  17. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/11-typed-var/result.json +28 -14
  18. pycep_parser-0.7.0.dev3/tests/examples/complex/14-type-decorator/main.bicep +5 -0
  19. pycep_parser-0.7.0.dev3/tests/examples/complex/14-type-decorator/result.json +20 -0
  20. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/array/main.bicep +1 -0
  21. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/array/result.json +24 -0
  22. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/array-index/main.bicep +1 -0
  23. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/array-index/result.json +53 -14
  24. pycep_parser-0.7.0.dev3/tests/examples/loop/array-w-newline/result.json +181 -0
  25. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/condition/result.json +11 -5
  26. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/object/result.json +18 -4
  27. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/subscription/result.json +26 -12
  28. pycep_parser-0.7.0.dev3/tests/test_function/__init__.py +0 -0
  29. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/first/result.json +13 -6
  30. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/flatten/result.json +13 -6
  31. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/intersection/result.json +14 -7
  32. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/last/result.json +13 -6
  33. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/union/result.json +14 -7
  34. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/deployment/deployment/result.json +10 -3
  35. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/deployment/environment/result.json +10 -3
  36. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_json_content/result.json +77 -24
  37. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_yaml_content/result.json +77 -24
  38. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/lambda/filter/result.json +58 -38
  39. pycep_parser-0.7.0.dev3/tests/test_function/examples/object/json/result.json +189 -0
  40. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/reference/result.json +10 -3
  41. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/management_group/result.json +26 -12
  42. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/resource_group/result.json +28 -14
  43. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/subscription/result.json +26 -12
  44. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/tenant/result.json +24 -14
  45. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/split/result.json +14 -7
  46. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/function/result.json +8 -15
  47. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/not/main.bicep +2 -4
  48. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/not/result.json +19 -0
  49. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/safe_dereference/result.json +11 -5
  50. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_parse_general.py +13 -0
  51. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_parse_loop.py +0 -13
  52. pycep_parser-0.7.0.dev1/pycep/bicep.lark +0 -409
  53. pycep_parser-0.7.0.dev1/tests/examples/basic/02-var/result.json +0 -100
  54. pycep_parser-0.7.0.dev1/tests/examples/complex/08-var-decorator/result.json +0 -36
  55. pycep_parser-0.7.0.dev1/tests/examples/loop/array-w-newline/result.json +0 -167
  56. pycep_parser-0.7.0.dev1/tests/examples/loop/range/main.bicep +0 -28
  57. pycep_parser-0.7.0.dev1/tests/examples/loop/range/result.json +0 -177
  58. pycep_parser-0.7.0.dev1/tests/test_function/examples/object/json/result.json +0 -136
  59. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/LICENSE +0 -0
  60. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/README.md +0 -0
  61. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/__init__.py +0 -0
  62. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/main.py +0 -0
  63. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/py.typed +0 -0
  64. {pycep_parser-0.7.0.dev1/tests → pycep_parser-0.7.0.dev3/pycep/rules}/__init__.py +0 -0
  65. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/pycep/validator.py +0 -0
  66. {pycep_parser-0.7.0.dev1/tests/test_function → pycep_parser-0.7.0.dev3/tests}/__init__.py +0 -0
  67. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/01-param/main.bicep +0 -0
  68. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/02-var/main.bicep +0 -0
  69. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/03-output/main.bicep +0 -0
  70. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/04-resource/main.bicep +0 -0
  71. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/05-module/main.bicep +0 -0
  72. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/05-module/result.json +0 -0
  73. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/06-type/main.bicep +0 -0
  74. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/basic/06-type/result.json +0 -0
  75. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complete/playground/main.bicep +0 -0
  76. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/01-param-decorator/main.bicep +0 -0
  77. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/01-param-decorator/result.json +0 -0
  78. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/02-resource-module-decorator/main.bicep +0 -0
  79. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/03-resource-existing/main.bicep +0 -0
  80. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/03-resource-existing/result.json +0 -0
  81. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/04-child-resource/main.bicep +0 -0
  82. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/05-deploy-condition/main.bicep +0 -0
  83. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/05-deploy-condition/result.json +0 -0
  84. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/06-output-decorator/main.bicep +0 -0
  85. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/06-output-decorator/result.json +0 -0
  86. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/07-module-alias/main.bicep +0 -0
  87. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/07-module-alias/result.json +0 -0
  88. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/09-metadata/main.bicep +0 -0
  89. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/09-metadata/result.json +0 -0
  90. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/10-extension/main.bicep +0 -0
  91. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/10-extension/result.json +0 -0
  92. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/11-typed-var/main.bicep +0 -0
  93. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/12-nullable-type/main.bicep +0 -0
  94. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/12-nullable-type/result.json +0 -0
  95. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/13-import/main.bicep +0 -0
  96. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/complex/13-import/result.json +0 -0
  97. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/invalid/invalid_multi_line.bicep +0 -0
  98. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/array-w-newline/main.bicep +0 -0
  99. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/child/main.bicep +0 -0
  100. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/child/result.json +0 -0
  101. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/condition/main.bicep +0 -0
  102. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/loop/object/main.bicep +0 -0
  103. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/management_group/main.bicep +0 -0
  104. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/management_group/result.json +0 -0
  105. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/resource_group/main.bicep +0 -0
  106. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/resource_group/result.json +0 -0
  107. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/subscription/main.bicep +0 -0
  108. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/tenant/main.bicep +0 -0
  109. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/examples/scope/tenant/result.json +0 -0
  110. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/any/any/main.bicep +0 -0
  111. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/any/any/result.json +0 -0
  112. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/array/main.bicep +0 -0
  113. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/array/result.json +0 -0
  114. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/concat/main.bicep +0 -0
  115. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/concat/result.json +0 -0
  116. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/contains/main.bicep +0 -0
  117. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/contains/result.json +0 -0
  118. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/empty/main.bicep +0 -0
  119. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/empty/result.json +0 -0
  120. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/first/main.bicep +0 -0
  121. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/flatten/main.bicep +0 -0
  122. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/intersection/main.bicep +0 -0
  123. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/last/main.bicep +0 -0
  124. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/length/main.bicep +0 -0
  125. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/length/result.json +0 -0
  126. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/max/main.bicep +0 -0
  127. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/max/result.json +0 -0
  128. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/min/main.bicep +0 -0
  129. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/min/result.json +0 -0
  130. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/skip/main.bicep +0 -0
  131. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/skip/result.json +0 -0
  132. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/take/main.bicep +0 -0
  133. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/take/result.json +0 -0
  134. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/array/union/main.bicep +0 -0
  135. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_add/main.bicep +0 -0
  136. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_add/result.json +0 -0
  137. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_from_epoch/main.bicep +0 -0
  138. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_from_epoch/result.json +0 -0
  139. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_to_epoch/main.bicep +0 -0
  140. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/date_time_to_epoch/result.json +0 -0
  141. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/utc_now/main.bicep +0 -0
  142. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/date/utc_now/result.json +0 -0
  143. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/deployment/deployment/main.bicep +0 -0
  144. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/deployment/environment/main.bicep +0 -0
  145. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_file_as_base64/main.bicep +0 -0
  146. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_file_as_base64/result.json +0 -0
  147. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_json_content/main.bicep +0 -0
  148. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_text_content/main.bicep +0 -0
  149. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_text_content/result.json +0 -0
  150. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/file/load_yaml_content/main.bicep +0 -0
  151. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/lambda/filter/main.bicep +0 -0
  152. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/logical/bool/main.bicep +0 -0
  153. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/logical/bool/result.json +0 -0
  154. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/numeric/int/main.bicep +0 -0
  155. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/numeric/int/result.json +0 -0
  156. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/object/json/main.bicep +0 -0
  157. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/extension_resource_id/main.bicep +0 -0
  158. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/extension_resource_id/result.json +0 -0
  159. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/list_keys/main.bicep +0 -0
  160. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/list_keys/result.json +0 -0
  161. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/management_group_resource_id/main.bicep +0 -0
  162. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/management_group_resource_id/result.json +0 -0
  163. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/pick_zones/main.bicep +0 -0
  164. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/pick_zones/result.json +0 -0
  165. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/reference/main.bicep +0 -0
  166. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/resource_id/main.bicep +0 -0
  167. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/resource_id/result.json +0 -0
  168. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/subscription_resource_id/main.bicep +0 -0
  169. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/subscription_resource_id/result.json +0 -0
  170. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/tenant_resource_id/main.bicep +0 -0
  171. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/resource/tenant_resource_id/result.json +0 -0
  172. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/management_group/main.bicep +0 -0
  173. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/resource_group/main.bicep +0 -0
  174. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/subscription/main.bicep +0 -0
  175. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/scope/tenant/main.bicep +0 -0
  176. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64/main.bicep +0 -0
  177. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64/result.json +0 -0
  178. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64_to_json/main.bicep +0 -0
  179. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64_to_json/result.json +0 -0
  180. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64_to_string/main.bicep +0 -0
  181. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/base64_to_string/result.json +0 -0
  182. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/data_uri/main.bicep +0 -0
  183. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/data_uri/result.json +0 -0
  184. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/data_uri_to_string/main.bicep +0 -0
  185. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/data_uri_to_string/result.json +0 -0
  186. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/ends_with/main.bicep +0 -0
  187. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/ends_with/result.json +0 -0
  188. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/format/main.bicep +0 -0
  189. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/format/result.json +0 -0
  190. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/guid/main.bicep +0 -0
  191. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/guid/result.json +0 -0
  192. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/index_of/main.bicep +0 -0
  193. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/index_of/result.json +0 -0
  194. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/join/main.bicep +0 -0
  195. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/join/result.json +0 -0
  196. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/last_index_of/main.bicep +0 -0
  197. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/last_index_of/result.json +0 -0
  198. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/new_guid/main.bicep +0 -0
  199. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/new_guid/result.json +0 -0
  200. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/pad_left/main.bicep +0 -0
  201. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/pad_left/result.json +0 -0
  202. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/replace/main.bicep +0 -0
  203. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/replace/result.json +0 -0
  204. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/split/main.bicep +0 -0
  205. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/starts_with/main.bicep +0 -0
  206. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/starts_with/result.json +0 -0
  207. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/string/main.bicep +0 -0
  208. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/string/result.json +0 -0
  209. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/substring/main.bicep +0 -0
  210. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/substring/result.json +0 -0
  211. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/to_lower/main.bicep +0 -0
  212. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/to_lower/result.json +0 -0
  213. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/to_upper/main.bicep +0 -0
  214. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/to_upper/result.json +0 -0
  215. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/trim/main.bicep +0 -0
  216. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/trim/result.json +0 -0
  217. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/unique_string/main.bicep +0 -0
  218. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/unique_string/result.json +0 -0
  219. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri/main.bicep +0 -0
  220. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri/result.json +0 -0
  221. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri_component/main.bicep +0 -0
  222. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri_component/result.json +0 -0
  223. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri_component_to_string/main.bicep +0 -0
  224. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/examples/string/uri_component_to_string/result.json +0 -0
  225. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_any.py +0 -0
  226. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_array.py +0 -0
  227. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_date.py +0 -0
  228. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_deployment.py +0 -0
  229. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_file.py +0 -0
  230. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_lambda.py +0 -0
  231. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_logical.py +0 -0
  232. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_numeric.py +0 -0
  233. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_object.py +0 -0
  234. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_resource.py +0 -0
  235. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_scope.py +0 -0
  236. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_function/test_parse_string.py +0 -0
  237. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_main.py +0 -0
  238. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/function/main.bicep +0 -0
  239. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/index/main.bicep +0 -0
  240. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/index/result.json +0 -0
  241. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/nested_resource/main.bicep +0 -0
  242. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/nested_resource/result.json +0 -0
  243. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/non_null/main.bicep +0 -0
  244. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/non_null/result.json +0 -0
  245. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/property/main.bicep +0 -0
  246. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/accessor/property/result.json +0 -0
  247. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/equals/main.bicep +0 -0
  248. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/equals/result.json +0 -0
  249. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/equals_case_insensitive/main.bicep +0 -0
  250. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/equals_case_insensitive/result.json +0 -0
  251. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/greater_than/main.bicep +0 -0
  252. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/greater_than/result.json +0 -0
  253. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/greater_than_or_equals/main.bicep +0 -0
  254. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/greater_than_or_equals/result.json +0 -0
  255. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/less_than/main.bicep +0 -0
  256. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/less_than/result.json +0 -0
  257. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/less_than_or_equals/main.bicep +0 -0
  258. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/less_than_or_equals/result.json +0 -0
  259. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/not_equals/main.bicep +0 -0
  260. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/not_equals/result.json +0 -0
  261. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/not_equals_case_insensitive/main.bicep +0 -0
  262. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/comparison/not_equals_case_insensitive/result.json +0 -0
  263. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/and/main.bicep +0 -0
  264. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/and/result.json +0 -0
  265. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/coalesce/main.bicep +0 -0
  266. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/coalesce/result.json +0 -0
  267. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/conditional/main.bicep +0 -0
  268. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/conditional/result.json +0 -0
  269. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/or/main.bicep +0 -0
  270. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/logical/or/result.json +0 -0
  271. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/add/main.bicep +0 -0
  272. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/add/result.json +0 -0
  273. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/divide/main.bicep +0 -0
  274. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/divide/result.json +0 -0
  275. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/minus/main.bicep +0 -0
  276. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/minus/result.json +0 -0
  277. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/modulo/main.bicep +0 -0
  278. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/modulo/result.json +0 -0
  279. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/multiply/main.bicep +0 -0
  280. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/multiply/result.json +0 -0
  281. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/substract/main.bicep +0 -0
  282. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/numeric/substract/result.json +0 -0
  283. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/examples/safe_dereference/main.bicep +0 -0
  284. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/test_parse_accessor.py +0 -0
  285. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/test_parse_comparison.py +0 -0
  286. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/test_parse_logical.py +0 -0
  287. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/test_parse_numeric.py +0 -0
  288. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_operator/test_parse_safe_dereference.py +0 -0
  289. {pycep_parser-0.7.0.dev1 → pycep_parser-0.7.0.dev3}/tests/test_parse_scope.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycep-parser
3
- Version: 0.7.0.dev1
3
+ Version: 0.7.0.dev3
4
4
  Summary: A Python based Bicep parser
5
5
  Keywords: bicep,parser,lark
6
6
  Author: Anton Grübel
@@ -0,0 +1,208 @@
1
+ start: ((element _CPP_COMMENT_NL?) | _CPP_COMMENT_NL)*
2
+
3
+ element: "targetScope" "=" QUOTED_INTERPOLATION -> scope
4
+ | "import" _import_statement -> custom_import
5
+ | "extension" STRING ["with" object] ["as" STRING] -> extension
6
+ | "metadata" STRING "=" metadata_value -> metadata
7
+ | [decorator] "param" STRING data_type "?"? ["=" value_brackets] -> param
8
+ | [decorator] "var" STRING [data_type "?"?] "=" var_value -> var
9
+ | [decorator] "output" STRING data_type "?"? "=" output_value -> output
10
+ | [decorator] "resource" STRING type_api_pair [EXISTING] "=" resource_value -> resource
11
+ | [decorator] "module" STRING module_path "=" module_value -> module
12
+ | [decorator] "type" STRING "=" type_value -> custom_type
13
+
14
+ ?value: _NEWLINE? "null" -> null
15
+ | _NEWLINE? "true" -> true
16
+ | _NEWLINE? "false" -> false
17
+ | _NEWLINE? INT -> int
18
+ | _NEWLINE? STRING -> string
19
+ | _NEWLINE? QUOTED_INTERPOLATION -> string
20
+ | MULTI_LINE_STRING -> multi_line_string
21
+ | array
22
+ | object
23
+ | _NEWLINE? function
24
+ | operator
25
+ | lambda_expression
26
+
27
+ ?value_brackets: (value | "(" value ")") "!"?
28
+
29
+ // aliases
30
+
31
+ _import_statement: (("{" import_alias ("," import_alias)* "}" | import_alias) "from" QUOTED_INTERPOLATION | QUOTED_INTERPOLATION)
32
+
33
+ // element values
34
+
35
+ ?var_value: value_brackets | loop
36
+
37
+ ?metadata_value: QUOTED_INTERPOLATION -> string
38
+
39
+ ?output_value: value_brackets | loop
40
+
41
+ ?resource_value: object | loop | deploy_condition
42
+
43
+ ?module_value: object | loop | deploy_condition
44
+
45
+ child_resource: "resource" STRING QUOTED_INTERPOLATION [EXISTING] "=" (object | loop | deploy_condition) _CPP_COMMENT_NL+
46
+
47
+ ?type_value: value_brackets ("|" value_brackets)*
48
+
49
+ // element type extras
50
+
51
+ data_type: STRING
52
+
53
+ type_api_pair: QUOTED_INTERPOLATION
54
+
55
+ module_path: QUOTED_INTERPOLATION
56
+
57
+ import_alias: (STRING | /\*/) ["as" STRING]
58
+
59
+ // loops
60
+
61
+ loop: "[" _CPP_COMMENT_NL? "for" (loop_array | loop_array_index | loop_object) ":" [value_brackets] value_brackets _CPP_COMMENT_NL? "]"
62
+
63
+ loop_array: STRING "in" value_brackets
64
+
65
+ loop_array_index: "(" STRING "," STRING ")" "in" value_brackets
66
+
67
+ loop_object: STRING "in" "items" "(" value_brackets ")"
68
+
69
+ // deploy condition
70
+
71
+ deploy_condition: _CPP_COMMENT_NL? "if" "(" value_brackets ")" value_brackets
72
+
73
+ // data types
74
+
75
+ ?quoted_string: STRING | QUOTED_STRING | QUOTED_INTERPOLATION
76
+
77
+ array: "[" _CPP_COMMENT_NL~0..10 (value_brackets ("," value_brackets)* _CPP_COMMENT_NL~0..5)* "]"
78
+
79
+ object: "{" _CPP_COMMENT_NL~0..10 ((pair ("," pair)* | child_resource) _CPP_COMMENT_NL~0..5)* "}"
80
+
81
+ pair: key ":" (value_brackets | loop) "?"?
82
+
83
+ !key: "resource" | quoted_string
84
+
85
+ lambda_expression: (value_brackets | "(" value_brackets "," value_brackets ("," value_brackets)+ ")") "=>" value_brackets
86
+
87
+ // decorators
88
+
89
+ decorator: ("@" "sys."? (deco_allowed | deco_batch | deco_description | deco_export | deco_min_len | deco_max_len | deco_min_val | deco_max_val | deco_metadata | deco_secure) _CPP_COMMENT_NL~0..5)+
90
+
91
+ deco_allowed: "allowed" "(" array ")"
92
+
93
+ deco_batch: "batchSize" "(" /\d+/ ")"
94
+
95
+ deco_description: "description" "(" (QUOTED_INTERPOLATION | MULTI_LINE_STRING) ")"
96
+
97
+ deco_export: "export" "(" ")"
98
+
99
+ deco_min_len: "minLength" "(" /\d+/ ")"
100
+
101
+ deco_max_len: "maxLength" "(" /\d+/ ")"
102
+
103
+ deco_min_val: "minValue" "(" /-?\d+/ ")"
104
+
105
+ deco_max_val: "maxValue" "(" /\d+/ ")"
106
+
107
+ deco_metadata: "metadata" "(" _CPP_COMMENT_NL? object _CPP_COMMENT_NL? ")"
108
+
109
+ deco_secure: "secure" "(" ")"
110
+
111
+ // functions
112
+
113
+ FUNCTION.1: /((sys|az)\.)?[a-zA-Z0-9]+/ "("
114
+ function: FUNCTION _CPP_COMMENT_NL? value_brackets? ("," _CPP_COMMENT_NL? value_brackets)* _CPP_COMMENT_NL? ")"
115
+
116
+ // operators
117
+
118
+ operator: operator_comparison | operator_logical | operator_numeric | operator_accessor
119
+
120
+ // operators - comparison
121
+
122
+ ?operator_comparison: greater_than_or_equals | greater_than | less_than_or_equals | less_than
123
+ | equals | not_equals | equals_case_insens | not_equals_case_insens
124
+
125
+ greater_than_or_equals: value_brackets ">=" value_brackets
126
+
127
+ greater_than: value_brackets ">" value_brackets
128
+
129
+ less_than_or_equals: value_brackets "<=" value_brackets
130
+
131
+ less_than: value_brackets "<" value_brackets
132
+
133
+ equals: value_brackets "==" value_brackets
134
+
135
+ not_equals: value_brackets "!=" value_brackets
136
+
137
+ equals_case_insens: value_brackets "=~" value_brackets
138
+
139
+ not_equals_case_insens: value_brackets "!~" value_brackets
140
+
141
+ // operators - logical
142
+
143
+ ?operator_logical: and_op | or_op | not_op | coalesce | conditional
144
+
145
+ and_op: value_brackets "&&" value_brackets
146
+
147
+ or_op: value_brackets "||" value_brackets
148
+
149
+ not_op: "!" value_brackets
150
+
151
+ coalesce: value_brackets "??" value_brackets
152
+
153
+ conditional: value_brackets "?" value_brackets ":" value_brackets
154
+
155
+ // operators - numeric
156
+
157
+ ?operator_numeric: add | divide | minus | modulo | multiply | substract
158
+
159
+ add: value_brackets "+" value_brackets
160
+
161
+ divide: value_brackets "/" value_brackets
162
+
163
+ minus: "-" value_brackets
164
+
165
+ modulo: value_brackets "%" value_brackets
166
+
167
+ multiply: value_brackets "*" value_brackets
168
+
169
+ substract.1: value_brackets "-" value_brackets
170
+
171
+ // operators - accessor
172
+
173
+ ?operator_accessor: index_accessor | function_accessor | nested_resource_accessor | property_accessor
174
+
175
+ index_accessor: value_brackets "[" "?"? value_brackets "]"
176
+
177
+ function_accessor: value_brackets "." LIST_FUNC_NAME "(" value_brackets? ["," value_brackets]+ ")"
178
+
179
+ nested_resource_accessor: value_brackets "::" value_brackets
180
+
181
+ // 'sys.' and 'az.' have to be eliminated in 1st operand (see STRING definition regexp):
182
+ property_accessor: value_brackets "." "?"? value_brackets
183
+
184
+ // Terms
185
+
186
+ EXISTING: "existing"
187
+
188
+ STRING: /(?!(sys|az)\.)[a-zA-Z_]([\w_])*/
189
+ QUOTED_STRING: "'" /[a-zA-Z_]([\w_.])*/ "'"
190
+ INDEXED: /(?=[\w][\w_.]+(.(get|list)[a-zA-Z]*\(('[\w-]+'|[\w.]+)?\)|[\[\]])+)(.(get|list)[a-zA-Z]*\(('[\w-]+'|[\w.]+)?\)|\[[\w\[\]_().']+\]|[\w_\-\/.,'= ])+/
191
+ QUOTED_INTERPOLATION: /(?!.*''')'(\${(?:[^}'{]+|(?R))*+}|\\'|[^'])*'/
192
+ LIST_FUNC_NAME.2: /(?=([Ll]ist[A-za-z]*|getSecret)\()([A-Za-z]+)/
193
+
194
+ MULTI_LINE_STRING: "'''" (/.*?/ | NEWLINE)+ "'''"
195
+
196
+ _NEWLINE: NEWLINE
197
+ _CPP_COMMENT_NL: [CPP_COMMENT] NEWLINE
198
+
199
+ %import common.C_COMMENT
200
+ %import common.CPP_COMMENT
201
+ %import common.SH_COMMENT
202
+ %import common.INT
203
+ %import common.NEWLINE
204
+ %import common.WS_INLINE
205
+
206
+ %ignore C_COMMENT
207
+ %ignore SH_COMMENT
208
+ %ignore WS_INLINE