zenstack 1.0.0 → 1.0.2

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 (300) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +194 -1
  3. package/bin/cli +3 -0
  4. package/bin/post-install.js +24 -0
  5. package/cli/actions/generate.d.ts +13 -0
  6. package/cli/actions/generate.js +71 -0
  7. package/cli/actions/generate.js.map +1 -0
  8. package/cli/actions/index.d.ts +3 -0
  9. package/cli/actions/index.js +20 -0
  10. package/cli/actions/index.js.map +1 -0
  11. package/cli/actions/info.d.ts +4 -0
  12. package/cli/actions/info.js +63 -0
  13. package/cli/actions/info.js.map +1 -0
  14. package/cli/actions/init.d.ts +12 -0
  15. package/cli/actions/init.js +83 -0
  16. package/cli/actions/init.js.map +1 -0
  17. package/cli/cli-error.d.ts +5 -0
  18. package/cli/cli-error.js +10 -0
  19. package/cli/cli-error.js.map +1 -0
  20. package/cli/cli-util.d.ts +21 -0
  21. package/cli/cli-util.js +211 -0
  22. package/cli/cli-util.js.map +1 -0
  23. package/cli/config.d.ts +10 -0
  24. package/cli/config.js +62 -0
  25. package/cli/config.js.map +1 -0
  26. package/cli/index.d.ts +7 -0
  27. package/cli/index.js +128 -0
  28. package/cli/index.js.map +1 -0
  29. package/cli/plugin-runner.d.ts +24 -0
  30. package/cli/plugin-runner.js +229 -0
  31. package/cli/plugin-runner.js.map +1 -0
  32. package/constants.d.ts +1 -0
  33. package/constants.js +6 -0
  34. package/constants.js.map +1 -0
  35. package/language-server/constants.d.ts +22 -0
  36. package/language-server/constants.js +27 -0
  37. package/language-server/constants.js.map +1 -0
  38. package/language-server/main.d.ts +1 -0
  39. package/language-server/main.js +13 -0
  40. package/language-server/main.js.map +1 -0
  41. package/language-server/types.d.ts +10 -0
  42. package/language-server/types.js +3 -0
  43. package/language-server/types.js.map +1 -0
  44. package/language-server/utils.d.ts +5 -0
  45. package/language-server/utils.js +22 -0
  46. package/language-server/utils.js.map +1 -0
  47. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  48. package/language-server/validator/attribute-application-validator.js +246 -0
  49. package/language-server/validator/attribute-application-validator.js.map +1 -0
  50. package/language-server/validator/attribute-validator.d.ts +9 -0
  51. package/language-server/validator/attribute-validator.js +14 -0
  52. package/language-server/validator/attribute-validator.js.map +1 -0
  53. package/language-server/validator/datamodel-validator.d.ts +22 -0
  54. package/language-server/validator/datamodel-validator.js +329 -0
  55. package/language-server/validator/datamodel-validator.js.map +1 -0
  56. package/language-server/validator/datasource-validator.d.ts +12 -0
  57. package/language-server/validator/datasource-validator.js +66 -0
  58. package/language-server/validator/datasource-validator.js.map +1 -0
  59. package/language-server/validator/enum-validator.d.ts +11 -0
  60. package/language-server/validator/enum-validator.js +25 -0
  61. package/language-server/validator/enum-validator.js.map +1 -0
  62. package/language-server/validator/expression-validator.d.ts +10 -0
  63. package/language-server/validator/expression-validator.js +135 -0
  64. package/language-server/validator/expression-validator.js.map +1 -0
  65. package/language-server/validator/function-decl-validator.d.ts +9 -0
  66. package/language-server/validator/function-decl-validator.js +13 -0
  67. package/language-server/validator/function-decl-validator.js.map +1 -0
  68. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  69. package/language-server/validator/function-invocation-validator.js +135 -0
  70. package/language-server/validator/function-invocation-validator.js.map +1 -0
  71. package/language-server/validator/schema-validator.d.ts +13 -0
  72. package/language-server/validator/schema-validator.js +49 -0
  73. package/language-server/validator/schema-validator.js.map +1 -0
  74. package/language-server/validator/utils.d.ts +24 -0
  75. package/language-server/validator/utils.js +154 -0
  76. package/language-server/validator/utils.js.map +1 -0
  77. package/language-server/validator/zmodel-validator.d.ts +25 -0
  78. package/language-server/validator/zmodel-validator.js +83 -0
  79. package/language-server/validator/zmodel-validator.js.map +1 -0
  80. package/language-server/zmodel-code-action.d.ts +15 -0
  81. package/language-server/zmodel-code-action.js +118 -0
  82. package/language-server/zmodel-code-action.js.map +1 -0
  83. package/language-server/zmodel-definition.d.ts +7 -0
  84. package/language-server/zmodel-definition.js +31 -0
  85. package/language-server/zmodel-definition.js.map +1 -0
  86. package/language-server/zmodel-formatter.d.ts +9 -0
  87. package/language-server/zmodel-formatter.js +76 -0
  88. package/language-server/zmodel-formatter.js.map +1 -0
  89. package/language-server/zmodel-linker.d.ts +32 -0
  90. package/language-server/zmodel-linker.js +447 -0
  91. package/language-server/zmodel-linker.js.map +1 -0
  92. package/language-server/zmodel-module.d.ts +41 -0
  93. package/language-server/zmodel-module.js +83 -0
  94. package/language-server/zmodel-module.js.map +1 -0
  95. package/language-server/zmodel-scope.d.ts +16 -0
  96. package/language-server/zmodel-scope.js +100 -0
  97. package/language-server/zmodel-scope.js.map +1 -0
  98. package/language-server/zmodel-workspace-manager.d.ts +12 -0
  99. package/language-server/zmodel-workspace-manager.js +138 -0
  100. package/language-server/zmodel-workspace-manager.js.map +1 -0
  101. package/package.json +140 -8
  102. package/plugins/access-policy/expression-writer.d.ts +46 -0
  103. package/plugins/access-policy/expression-writer.js +580 -0
  104. package/plugins/access-policy/expression-writer.js.map +1 -0
  105. package/plugins/access-policy/index.d.ts +4 -0
  106. package/plugins/access-policy/index.js +22 -0
  107. package/plugins/access-policy/index.js.map +1 -0
  108. package/plugins/access-policy/policy-guard-generator.d.ts +22 -0
  109. package/plugins/access-policy/policy-guard-generator.js +634 -0
  110. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  111. package/plugins/model-meta/index.d.ts +4 -0
  112. package/plugins/model-meta/index.js +232 -0
  113. package/plugins/model-meta/index.js.map +1 -0
  114. package/plugins/plugin-utils.d.ts +17 -0
  115. package/plugins/plugin-utils.js +80 -0
  116. package/plugins/plugin-utils.js.map +1 -0
  117. package/plugins/prisma/indent-string.d.ts +4 -0
  118. package/plugins/prisma/indent-string.js +12 -0
  119. package/plugins/prisma/indent-string.js.map +1 -0
  120. package/plugins/prisma/index.d.ts +4 -0
  121. package/plugins/prisma/index.js +22 -0
  122. package/plugins/prisma/index.js.map +1 -0
  123. package/plugins/prisma/prisma-builder.d.ts +145 -0
  124. package/plugins/prisma/prisma-builder.js +358 -0
  125. package/plugins/prisma/prisma-builder.js.map +1 -0
  126. package/plugins/prisma/schema-generator.d.ts +29 -0
  127. package/plugins/prisma/schema-generator.js +336 -0
  128. package/plugins/prisma/schema-generator.js.map +1 -0
  129. package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
  130. package/plugins/prisma/zmodel-code-generator.js +124 -0
  131. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  132. package/plugins/zod/generator.d.ts +4 -0
  133. package/plugins/zod/generator.js +254 -0
  134. package/plugins/zod/generator.js.map +1 -0
  135. package/plugins/zod/index.d.ts +4 -0
  136. package/plugins/zod/index.js +24 -0
  137. package/plugins/zod/index.js.map +1 -0
  138. package/plugins/zod/transformer.d.ts +68 -0
  139. package/plugins/zod/transformer.js +554 -0
  140. package/plugins/zod/transformer.js.map +1 -0
  141. package/plugins/zod/types.d.ts +25 -0
  142. package/plugins/zod/types.js +3 -0
  143. package/plugins/zod/types.js.map +1 -0
  144. package/plugins/zod/utils/removeDir.d.ts +1 -0
  145. package/plugins/zod/utils/removeDir.js +30 -0
  146. package/plugins/zod/utils/removeDir.js.map +1 -0
  147. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  148. package/plugins/zod/utils/schema-gen.js +188 -0
  149. package/plugins/zod/utils/schema-gen.js.map +1 -0
  150. package/res/prism-zmodel.js +20 -0
  151. package/res/starter.zmodel +51 -0
  152. package/res/stdlib.zmodel +506 -0
  153. package/telemetry.d.ts +21 -0
  154. package/telemetry.js +129 -0
  155. package/telemetry.js.map +1 -0
  156. package/utils/ast-utils.d.ts +13 -0
  157. package/utils/ast-utils.js +136 -0
  158. package/utils/ast-utils.js.map +1 -0
  159. package/utils/exec-utils.d.ts +6 -0
  160. package/utils/exec-utils.js +13 -0
  161. package/utils/exec-utils.js.map +1 -0
  162. package/utils/pkg-utils.d.ts +3 -0
  163. package/utils/pkg-utils.js +64 -0
  164. package/utils/pkg-utils.js.map +1 -0
  165. package/utils/typescript-expression-transformer.d.ts +54 -0
  166. package/utils/typescript-expression-transformer.js +326 -0
  167. package/utils/typescript-expression-transformer.js.map +1 -0
  168. package/utils/version-utils.d.ts +1 -0
  169. package/utils/version-utils.js +20 -0
  170. package/utils/version-utils.js.map +1 -0
  171. package/.vscode/extensions.json +0 -7
  172. package/.vscode/launch.json +0 -49
  173. package/.vscode/settings.json +0 -4
  174. package/packages/internal/jest.config.ts +0 -32
  175. package/packages/internal/package.json +0 -42
  176. package/packages/internal/src/constants.ts +0 -1
  177. package/packages/internal/src/handler/data/guard-utils.ts +0 -7
  178. package/packages/internal/src/handler/data/handler.ts +0 -415
  179. package/packages/internal/src/handler/data/query-processor.ts +0 -504
  180. package/packages/internal/src/handler/index.ts +0 -1
  181. package/packages/internal/src/handler/types.ts +0 -20
  182. package/packages/internal/src/index.ts +0 -3
  183. package/packages/internal/src/request-handler.ts +0 -27
  184. package/packages/internal/src/request.ts +0 -101
  185. package/packages/internal/src/types.ts +0 -40
  186. package/packages/internal/tests/query-processor.test.ts +0 -172
  187. package/packages/internal/tsconfig.json +0 -21
  188. package/packages/runtime/auth.d.ts +0 -1
  189. package/packages/runtime/auth.js +0 -3
  190. package/packages/runtime/hooks.d.ts +0 -10
  191. package/packages/runtime/hooks.js +0 -3
  192. package/packages/runtime/index.d.ts +0 -3
  193. package/packages/runtime/index.js +0 -1
  194. package/packages/runtime/package-lock.json +0 -512
  195. package/packages/runtime/package.json +0 -16
  196. package/packages/runtime/server.d.ts +0 -1
  197. package/packages/runtime/server.js +0 -3
  198. package/packages/runtime/types.d.ts +0 -1
  199. package/packages/runtime/types.js +0 -3
  200. package/packages/schema/.eslintrc.json +0 -13
  201. package/packages/schema/.vscodeignore +0 -4
  202. package/packages/schema/asset/logo-dark.png +0 -0
  203. package/packages/schema/asset/logo-light.png +0 -0
  204. package/packages/schema/bin/cli +0 -3
  205. package/packages/schema/jest.config.ts +0 -32
  206. package/packages/schema/langium-config.json +0 -14
  207. package/packages/schema/langium-quickstart.md +0 -41
  208. package/packages/schema/language-configuration.json +0 -30
  209. package/packages/schema/package.json +0 -96
  210. package/packages/schema/src/cli/cli-util.ts +0 -80
  211. package/packages/schema/src/cli/index.ts +0 -64
  212. package/packages/schema/src/extension.ts +0 -76
  213. package/packages/schema/src/generator/constants.ts +0 -5
  214. package/packages/schema/src/generator/index.ts +0 -92
  215. package/packages/schema/src/generator/next-auth/index.ts +0 -197
  216. package/packages/schema/src/generator/package.template.json +0 -9
  217. package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
  218. package/packages/schema/src/generator/prisma/index.ts +0 -32
  219. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
  220. package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
  221. package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
  222. package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
  223. package/packages/schema/src/generator/react-hooks/index.ts +0 -181
  224. package/packages/schema/src/generator/service/index.ts +0 -107
  225. package/packages/schema/src/generator/tsconfig.template.json +0 -17
  226. package/packages/schema/src/generator/types.ts +0 -17
  227. package/packages/schema/src/generator/utils.ts +0 -9
  228. package/packages/schema/src/language-server/generated/ast.ts +0 -603
  229. package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
  230. package/packages/schema/src/language-server/generated/module.ts +0 -24
  231. package/packages/schema/src/language-server/main.ts +0 -12
  232. package/packages/schema/src/language-server/stdlib.zmodel +0 -22
  233. package/packages/schema/src/language-server/types.ts +0 -9
  234. package/packages/schema/src/language-server/zmodel-index.ts +0 -33
  235. package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
  236. package/packages/schema/src/language-server/zmodel-module.ts +0 -90
  237. package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
  238. package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
  239. package/packages/schema/src/language-server/zmodel.langium +0 -186
  240. package/packages/schema/src/utils/exec-utils.ts +0 -5
  241. package/packages/schema/src/utils/indent-string.ts +0 -6
  242. package/packages/schema/syntaxes/zmodel.json +0 -57
  243. package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
  244. package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
  245. package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
  246. package/packages/schema/tests/schema/parser.test.ts +0 -423
  247. package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
  248. package/packages/schema/tests/utils.ts +0 -38
  249. package/packages/schema/tsconfig.json +0 -23
  250. package/pnpm-workspace.yaml +0 -3
  251. package/samples/todo/.env +0 -2
  252. package/samples/todo/.eslintrc.json +0 -3
  253. package/samples/todo/.vscode/launch.json +0 -11
  254. package/samples/todo/README.md +0 -34
  255. package/samples/todo/components/AuthGuard.tsx +0 -17
  256. package/samples/todo/components/Avatar.tsx +0 -22
  257. package/samples/todo/components/BreadCrumb.tsx +0 -44
  258. package/samples/todo/components/ManageMembers.tsx +0 -134
  259. package/samples/todo/components/NavBar.tsx +0 -57
  260. package/samples/todo/components/SpaceMembers.tsx +0 -76
  261. package/samples/todo/components/Spaces.tsx +0 -28
  262. package/samples/todo/components/TimeInfo.tsx +0 -17
  263. package/samples/todo/components/Todo.tsx +0 -72
  264. package/samples/todo/components/TodoList.tsx +0 -77
  265. package/samples/todo/lib/context.ts +0 -31
  266. package/samples/todo/next.config.js +0 -10
  267. package/samples/todo/package-lock.json +0 -7527
  268. package/samples/todo/package.json +0 -45
  269. package/samples/todo/pages/_app.tsx +0 -50
  270. package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
  271. package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
  272. package/samples/todo/pages/create-space.tsx +0 -114
  273. package/samples/todo/pages/index.tsx +0 -32
  274. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
  275. package/samples/todo/pages/space/[slug]/index.tsx +0 -169
  276. package/samples/todo/postcss.config.js +0 -6
  277. package/samples/todo/public/avatar.jpg +0 -0
  278. package/samples/todo/public/favicon.ico +0 -0
  279. package/samples/todo/public/logo.png +0 -0
  280. package/samples/todo/public/vercel.svg +0 -4
  281. package/samples/todo/styles/globals.css +0 -7
  282. package/samples/todo/tailwind.config.js +0 -11
  283. package/samples/todo/tsconfig.json +0 -28
  284. package/samples/todo/types/next-auth.d.ts +0 -14
  285. package/samples/todo/types/next.d.ts +0 -16
  286. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
  287. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
  288. package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
  289. package/samples/todo/zenstack/schema.prisma +0 -126
  290. package/samples/todo/zenstack/schema.zmodel +0 -161
  291. package/tests/integration/jest.config.ts +0 -16
  292. package/tests/integration/package-lock.json +0 -1081
  293. package/tests/integration/package.json +0 -27
  294. package/tests/integration/tests/operation-coverate.test.ts +0 -563
  295. package/tests/integration/tests/operations.zmodel +0 -69
  296. package/tests/integration/tests/todo-e2e.test.ts +0 -577
  297. package/tests/integration/tests/todo.zmodel +0 -123
  298. package/tests/integration/tests/tsconfig.template.json +0 -10
  299. package/tests/integration/tests/utils.ts +0 -133
  300. package/tests/integration/tsconfig.json +0 -10
@@ -1,2190 +0,0 @@
1
- /******************************************************************************
2
- * This file was generated by langium-cli 0.4.0.
3
- * DO NOT EDIT MANUALLY!
4
- ******************************************************************************/
5
-
6
- import { loadGrammar, Grammar } from 'langium';
7
-
8
- let loadedZModelGrammar: Grammar | undefined;
9
- export const ZModelGrammar = (): Grammar => loadedZModelGrammar ||(loadedZModelGrammar = loadGrammar(`{
10
- "$type": "Grammar",
11
- "isDeclared": true,
12
- "name": "ZModel",
13
- "rules": [
14
- {
15
- "$type": "ParserRule",
16
- "name": "Model",
17
- "entry": true,
18
- "alternatives": {
19
- "$type": "Assignment",
20
- "feature": "declarations",
21
- "operator": "+=",
22
- "terminal": {
23
- "$type": "RuleCall",
24
- "rule": {
25
- "$refText": "AbstractDeclaration"
26
- },
27
- "arguments": []
28
- },
29
- "cardinality": "*"
30
- },
31
- "definesHiddenTokens": false,
32
- "fragment": false,
33
- "hiddenTokens": [],
34
- "parameters": [],
35
- "wildcard": false
36
- },
37
- {
38
- "$type": "ParserRule",
39
- "name": "AbstractDeclaration",
40
- "alternatives": {
41
- "$type": "Alternatives",
42
- "elements": [
43
- {
44
- "$type": "RuleCall",
45
- "rule": {
46
- "$refText": "DataSource"
47
- },
48
- "arguments": []
49
- },
50
- {
51
- "$type": "RuleCall",
52
- "rule": {
53
- "$refText": "DataModel"
54
- },
55
- "arguments": []
56
- },
57
- {
58
- "$type": "RuleCall",
59
- "rule": {
60
- "$refText": "Enum"
61
- },
62
- "arguments": []
63
- },
64
- {
65
- "$type": "RuleCall",
66
- "rule": {
67
- "$refText": "Function"
68
- },
69
- "arguments": []
70
- },
71
- {
72
- "$type": "RuleCall",
73
- "rule": {
74
- "$refText": "Attribute"
75
- },
76
- "arguments": []
77
- }
78
- ]
79
- },
80
- "definesHiddenTokens": false,
81
- "entry": false,
82
- "fragment": false,
83
- "hiddenTokens": [],
84
- "parameters": [],
85
- "wildcard": false
86
- },
87
- {
88
- "$type": "ParserRule",
89
- "name": "DataSource",
90
- "alternatives": {
91
- "$type": "Group",
92
- "elements": [
93
- {
94
- "$type": "Keyword",
95
- "value": "datasource"
96
- },
97
- {
98
- "$type": "Assignment",
99
- "feature": "name",
100
- "operator": "=",
101
- "terminal": {
102
- "$type": "RuleCall",
103
- "rule": {
104
- "$refText": "ID"
105
- },
106
- "arguments": []
107
- }
108
- },
109
- {
110
- "$type": "Keyword",
111
- "value": "{"
112
- },
113
- {
114
- "$type": "Assignment",
115
- "feature": "fields",
116
- "operator": "+=",
117
- "terminal": {
118
- "$type": "RuleCall",
119
- "rule": {
120
- "$refText": "DataSourceField"
121
- },
122
- "arguments": []
123
- },
124
- "cardinality": "+"
125
- },
126
- {
127
- "$type": "Keyword",
128
- "value": "}"
129
- }
130
- ]
131
- },
132
- "definesHiddenTokens": false,
133
- "entry": false,
134
- "fragment": false,
135
- "hiddenTokens": [],
136
- "parameters": [],
137
- "wildcard": false
138
- },
139
- {
140
- "$type": "ParserRule",
141
- "name": "DataSourceField",
142
- "alternatives": {
143
- "$type": "Group",
144
- "elements": [
145
- {
146
- "$type": "Assignment",
147
- "feature": "name",
148
- "operator": "=",
149
- "terminal": {
150
- "$type": "RuleCall",
151
- "rule": {
152
- "$refText": "ID"
153
- },
154
- "arguments": []
155
- }
156
- },
157
- {
158
- "$type": "Keyword",
159
- "value": "="
160
- },
161
- {
162
- "$type": "Assignment",
163
- "feature": "value",
164
- "operator": "=",
165
- "terminal": {
166
- "$type": "Alternatives",
167
- "elements": [
168
- {
169
- "$type": "RuleCall",
170
- "rule": {
171
- "$refText": "LiteralExpr"
172
- },
173
- "arguments": []
174
- },
175
- {
176
- "$type": "RuleCall",
177
- "rule": {
178
- "$refText": "InvocationExpr"
179
- },
180
- "arguments": []
181
- }
182
- ]
183
- }
184
- }
185
- ]
186
- },
187
- "definesHiddenTokens": false,
188
- "entry": false,
189
- "fragment": false,
190
- "hiddenTokens": [],
191
- "parameters": [],
192
- "wildcard": false
193
- },
194
- {
195
- "$type": "ParserRule",
196
- "name": "Expression",
197
- "alternatives": {
198
- "$type": "RuleCall",
199
- "rule": {
200
- "$refText": "LogicalExpr"
201
- },
202
- "arguments": []
203
- },
204
- "definesHiddenTokens": false,
205
- "entry": false,
206
- "fragment": false,
207
- "hiddenTokens": [],
208
- "parameters": [],
209
- "wildcard": false
210
- },
211
- {
212
- "$type": "ParserRule",
213
- "name": "LiteralExpr",
214
- "alternatives": {
215
- "$type": "Assignment",
216
- "feature": "value",
217
- "operator": "=",
218
- "terminal": {
219
- "$type": "Alternatives",
220
- "elements": [
221
- {
222
- "$type": "RuleCall",
223
- "rule": {
224
- "$refText": "BOOLEAN"
225
- },
226
- "arguments": []
227
- },
228
- {
229
- "$type": "RuleCall",
230
- "rule": {
231
- "$refText": "INT"
232
- },
233
- "arguments": []
234
- },
235
- {
236
- "$type": "RuleCall",
237
- "rule": {
238
- "$refText": "STRING"
239
- },
240
- "arguments": []
241
- }
242
- ]
243
- }
244
- },
245
- "definesHiddenTokens": false,
246
- "entry": false,
247
- "fragment": false,
248
- "hiddenTokens": [],
249
- "parameters": [],
250
- "wildcard": false
251
- },
252
- {
253
- "$type": "ParserRule",
254
- "name": "ArrayExpr",
255
- "alternatives": {
256
- "$type": "Group",
257
- "elements": [
258
- {
259
- "$type": "Keyword",
260
- "value": "["
261
- },
262
- {
263
- "$type": "Group",
264
- "elements": [
265
- {
266
- "$type": "Assignment",
267
- "feature": "items",
268
- "operator": "+=",
269
- "terminal": {
270
- "$type": "RuleCall",
271
- "rule": {
272
- "$refText": "Expression"
273
- },
274
- "arguments": []
275
- }
276
- },
277
- {
278
- "$type": "Group",
279
- "elements": [
280
- {
281
- "$type": "Keyword",
282
- "value": ","
283
- },
284
- {
285
- "$type": "Assignment",
286
- "feature": "items",
287
- "operator": "+=",
288
- "terminal": {
289
- "$type": "RuleCall",
290
- "rule": {
291
- "$refText": "Expression"
292
- },
293
- "arguments": []
294
- }
295
- }
296
- ],
297
- "cardinality": "*"
298
- }
299
- ],
300
- "cardinality": "?"
301
- },
302
- {
303
- "$type": "Keyword",
304
- "value": "]"
305
- }
306
- ]
307
- },
308
- "definesHiddenTokens": false,
309
- "entry": false,
310
- "fragment": false,
311
- "hiddenTokens": [],
312
- "parameters": [],
313
- "wildcard": false
314
- },
315
- {
316
- "$type": "ParserRule",
317
- "name": "ThisExpr",
318
- "alternatives": {
319
- "$type": "Assignment",
320
- "feature": "value",
321
- "operator": "=",
322
- "terminal": {
323
- "$type": "RuleCall",
324
- "rule": {
325
- "$refText": "THIS"
326
- },
327
- "arguments": []
328
- }
329
- },
330
- "definesHiddenTokens": false,
331
- "entry": false,
332
- "fragment": false,
333
- "hiddenTokens": [],
334
- "parameters": [],
335
- "wildcard": false
336
- },
337
- {
338
- "$type": "ParserRule",
339
- "name": "NullExpr",
340
- "alternatives": {
341
- "$type": "Assignment",
342
- "feature": "value",
343
- "operator": "=",
344
- "terminal": {
345
- "$type": "RuleCall",
346
- "rule": {
347
- "$refText": "NULL"
348
- },
349
- "arguments": []
350
- }
351
- },
352
- "definesHiddenTokens": false,
353
- "entry": false,
354
- "fragment": false,
355
- "hiddenTokens": [],
356
- "parameters": [],
357
- "wildcard": false
358
- },
359
- {
360
- "$type": "ParserRule",
361
- "name": "ReferenceExpr",
362
- "alternatives": {
363
- "$type": "Group",
364
- "elements": [
365
- {
366
- "$type": "Assignment",
367
- "feature": "target",
368
- "operator": "=",
369
- "terminal": {
370
- "$type": "CrossReference",
371
- "type": {
372
- "$refText": "ReferenceTarget"
373
- },
374
- "terminal": {
375
- "$type": "RuleCall",
376
- "rule": {
377
- "$refText": "ID"
378
- },
379
- "arguments": []
380
- },
381
- "deprecatedSyntax": false
382
- }
383
- },
384
- {
385
- "$type": "Group",
386
- "elements": [
387
- {
388
- "$type": "Keyword",
389
- "value": "("
390
- },
391
- {
392
- "$type": "RuleCall",
393
- "rule": {
394
- "$refText": "ReferenceArgList"
395
- },
396
- "arguments": []
397
- },
398
- {
399
- "$type": "Keyword",
400
- "value": ")"
401
- }
402
- ],
403
- "cardinality": "?"
404
- }
405
- ]
406
- },
407
- "definesHiddenTokens": false,
408
- "entry": false,
409
- "fragment": false,
410
- "hiddenTokens": [],
411
- "parameters": [],
412
- "wildcard": false
413
- },
414
- {
415
- "$type": "ParserRule",
416
- "name": "ReferenceArgList",
417
- "fragment": true,
418
- "alternatives": {
419
- "$type": "Group",
420
- "elements": [
421
- {
422
- "$type": "Assignment",
423
- "feature": "args",
424
- "operator": "+=",
425
- "terminal": {
426
- "$type": "RuleCall",
427
- "rule": {
428
- "$refText": "ReferenceArg"
429
- },
430
- "arguments": []
431
- }
432
- },
433
- {
434
- "$type": "Group",
435
- "elements": [
436
- {
437
- "$type": "Keyword",
438
- "value": ","
439
- },
440
- {
441
- "$type": "Assignment",
442
- "feature": "args",
443
- "operator": "+=",
444
- "terminal": {
445
- "$type": "RuleCall",
446
- "rule": {
447
- "$refText": "ReferenceArg"
448
- },
449
- "arguments": []
450
- }
451
- }
452
- ],
453
- "cardinality": "*"
454
- }
455
- ]
456
- },
457
- "definesHiddenTokens": false,
458
- "entry": false,
459
- "hiddenTokens": [],
460
- "parameters": [],
461
- "wildcard": false
462
- },
463
- {
464
- "$type": "ParserRule",
465
- "name": "ReferenceArg",
466
- "alternatives": {
467
- "$type": "Group",
468
- "elements": [
469
- {
470
- "$type": "Assignment",
471
- "feature": "name",
472
- "operator": "=",
473
- "terminal": {
474
- "$type": "Keyword",
475
- "value": "sort"
476
- }
477
- },
478
- {
479
- "$type": "Keyword",
480
- "value": ":"
481
- },
482
- {
483
- "$type": "Assignment",
484
- "feature": "value",
485
- "operator": "=",
486
- "terminal": {
487
- "$type": "Alternatives",
488
- "elements": [
489
- {
490
- "$type": "Keyword",
491
- "value": "Asc"
492
- },
493
- {
494
- "$type": "Keyword",
495
- "value": "Desc"
496
- }
497
- ]
498
- }
499
- }
500
- ]
501
- },
502
- "definesHiddenTokens": false,
503
- "entry": false,
504
- "fragment": false,
505
- "hiddenTokens": [],
506
- "parameters": [],
507
- "wildcard": false
508
- },
509
- {
510
- "$type": "ParserRule",
511
- "name": "InvocationExpr",
512
- "alternatives": {
513
- "$type": "Group",
514
- "elements": [
515
- {
516
- "$type": "Assignment",
517
- "feature": "function",
518
- "operator": "=",
519
- "terminal": {
520
- "$type": "CrossReference",
521
- "type": {
522
- "$refText": "Function"
523
- },
524
- "deprecatedSyntax": false
525
- }
526
- },
527
- {
528
- "$type": "Keyword",
529
- "value": "("
530
- },
531
- {
532
- "$type": "RuleCall",
533
- "rule": {
534
- "$refText": "ArgumentList"
535
- },
536
- "arguments": [],
537
- "cardinality": "?"
538
- },
539
- {
540
- "$type": "Keyword",
541
- "value": ")"
542
- }
543
- ]
544
- },
545
- "definesHiddenTokens": false,
546
- "entry": false,
547
- "fragment": false,
548
- "hiddenTokens": [],
549
- "parameters": [],
550
- "wildcard": false
551
- },
552
- {
553
- "$type": "ParserRule",
554
- "name": "UnaryExpr",
555
- "alternatives": {
556
- "$type": "Group",
557
- "elements": [
558
- {
559
- "$type": "Assignment",
560
- "feature": "operator",
561
- "operator": "=",
562
- "terminal": {
563
- "$type": "Keyword",
564
- "value": "!"
565
- }
566
- },
567
- {
568
- "$type": "Assignment",
569
- "feature": "operand",
570
- "operator": "=",
571
- "terminal": {
572
- "$type": "RuleCall",
573
- "rule": {
574
- "$refText": "Expression"
575
- },
576
- "arguments": []
577
- }
578
- }
579
- ]
580
- },
581
- "definesHiddenTokens": false,
582
- "entry": false,
583
- "fragment": false,
584
- "hiddenTokens": [],
585
- "parameters": [],
586
- "wildcard": false
587
- },
588
- {
589
- "$type": "ParserRule",
590
- "name": "MemberAccessExpr",
591
- "inferredType": {
592
- "$type": "InferredType",
593
- "name": "Expression"
594
- },
595
- "alternatives": {
596
- "$type": "Group",
597
- "elements": [
598
- {
599
- "$type": "RuleCall",
600
- "rule": {
601
- "$refText": "PrimaryExpr"
602
- },
603
- "arguments": []
604
- },
605
- {
606
- "$type": "Group",
607
- "elements": [
608
- {
609
- "$type": "Action",
610
- "inferredType": {
611
- "$type": "InferredType",
612
- "name": "MemberAccessExpr"
613
- },
614
- "feature": "operand",
615
- "operator": "="
616
- },
617
- {
618
- "$type": "Group",
619
- "elements": [
620
- {
621
- "$type": "Keyword",
622
- "value": "."
623
- },
624
- {
625
- "$type": "Assignment",
626
- "feature": "member",
627
- "operator": "=",
628
- "terminal": {
629
- "$type": "CrossReference",
630
- "type": {
631
- "$refText": "DataModelField"
632
- },
633
- "deprecatedSyntax": false
634
- }
635
- }
636
- ]
637
- }
638
- ],
639
- "cardinality": "*"
640
- }
641
- ]
642
- },
643
- "definesHiddenTokens": false,
644
- "entry": false,
645
- "fragment": false,
646
- "hiddenTokens": [],
647
- "parameters": [],
648
- "wildcard": false
649
- },
650
- {
651
- "$type": "ParserRule",
652
- "name": "CollectionPredicateExpr",
653
- "inferredType": {
654
- "$type": "InferredType",
655
- "name": "Expression"
656
- },
657
- "alternatives": {
658
- "$type": "Group",
659
- "elements": [
660
- {
661
- "$type": "RuleCall",
662
- "rule": {
663
- "$refText": "MemberAccessExpr"
664
- },
665
- "arguments": []
666
- },
667
- {
668
- "$type": "Group",
669
- "elements": [
670
- {
671
- "$type": "Action",
672
- "inferredType": {
673
- "$type": "InferredType",
674
- "name": "BinaryExpr"
675
- },
676
- "feature": "left",
677
- "operator": "="
678
- },
679
- {
680
- "$type": "Assignment",
681
- "feature": "operator",
682
- "operator": "=",
683
- "terminal": {
684
- "$type": "Alternatives",
685
- "elements": [
686
- {
687
- "$type": "Keyword",
688
- "value": "?"
689
- },
690
- {
691
- "$type": "Keyword",
692
- "value": "!"
693
- },
694
- {
695
- "$type": "Keyword",
696
- "value": "^"
697
- }
698
- ]
699
- }
700
- },
701
- {
702
- "$type": "Keyword",
703
- "value": "["
704
- },
705
- {
706
- "$type": "Assignment",
707
- "feature": "right",
708
- "operator": "=",
709
- "terminal": {
710
- "$type": "RuleCall",
711
- "rule": {
712
- "$refText": "Expression"
713
- },
714
- "arguments": []
715
- }
716
- },
717
- {
718
- "$type": "Keyword",
719
- "value": "]"
720
- }
721
- ],
722
- "cardinality": "*"
723
- }
724
- ]
725
- },
726
- "definesHiddenTokens": false,
727
- "entry": false,
728
- "fragment": false,
729
- "hiddenTokens": [],
730
- "parameters": [],
731
- "wildcard": false
732
- },
733
- {
734
- "$type": "ParserRule",
735
- "name": "ComparisonExpr",
736
- "inferredType": {
737
- "$type": "InferredType",
738
- "name": "Expression"
739
- },
740
- "alternatives": {
741
- "$type": "Group",
742
- "elements": [
743
- {
744
- "$type": "RuleCall",
745
- "rule": {
746
- "$refText": "CollectionPredicateExpr"
747
- },
748
- "arguments": []
749
- },
750
- {
751
- "$type": "Group",
752
- "elements": [
753
- {
754
- "$type": "Action",
755
- "inferredType": {
756
- "$type": "InferredType",
757
- "name": "BinaryExpr"
758
- },
759
- "feature": "left",
760
- "operator": "="
761
- },
762
- {
763
- "$type": "Assignment",
764
- "feature": "operator",
765
- "operator": "=",
766
- "terminal": {
767
- "$type": "Alternatives",
768
- "elements": [
769
- {
770
- "$type": "Keyword",
771
- "value": ">"
772
- },
773
- {
774
- "$type": "Keyword",
775
- "value": "<"
776
- },
777
- {
778
- "$type": "Keyword",
779
- "value": ">="
780
- },
781
- {
782
- "$type": "Keyword",
783
- "value": "<="
784
- }
785
- ]
786
- }
787
- },
788
- {
789
- "$type": "Assignment",
790
- "feature": "right",
791
- "operator": "=",
792
- "terminal": {
793
- "$type": "RuleCall",
794
- "rule": {
795
- "$refText": "CollectionPredicateExpr"
796
- },
797
- "arguments": []
798
- }
799
- }
800
- ],
801
- "cardinality": "*"
802
- }
803
- ]
804
- },
805
- "definesHiddenTokens": false,
806
- "entry": false,
807
- "fragment": false,
808
- "hiddenTokens": [],
809
- "parameters": [],
810
- "wildcard": false
811
- },
812
- {
813
- "$type": "ParserRule",
814
- "name": "EqualityExpr",
815
- "inferredType": {
816
- "$type": "InferredType",
817
- "name": "Expression"
818
- },
819
- "alternatives": {
820
- "$type": "Group",
821
- "elements": [
822
- {
823
- "$type": "RuleCall",
824
- "rule": {
825
- "$refText": "ComparisonExpr"
826
- },
827
- "arguments": []
828
- },
829
- {
830
- "$type": "Group",
831
- "elements": [
832
- {
833
- "$type": "Action",
834
- "inferredType": {
835
- "$type": "InferredType",
836
- "name": "BinaryExpr"
837
- },
838
- "feature": "left",
839
- "operator": "="
840
- },
841
- {
842
- "$type": "Assignment",
843
- "feature": "operator",
844
- "operator": "=",
845
- "terminal": {
846
- "$type": "Alternatives",
847
- "elements": [
848
- {
849
- "$type": "Keyword",
850
- "value": "=="
851
- },
852
- {
853
- "$type": "Keyword",
854
- "value": "!="
855
- }
856
- ]
857
- }
858
- },
859
- {
860
- "$type": "Assignment",
861
- "feature": "right",
862
- "operator": "=",
863
- "terminal": {
864
- "$type": "RuleCall",
865
- "rule": {
866
- "$refText": "ComparisonExpr"
867
- },
868
- "arguments": []
869
- }
870
- }
871
- ],
872
- "cardinality": "*"
873
- }
874
- ]
875
- },
876
- "definesHiddenTokens": false,
877
- "entry": false,
878
- "fragment": false,
879
- "hiddenTokens": [],
880
- "parameters": [],
881
- "wildcard": false
882
- },
883
- {
884
- "$type": "ParserRule",
885
- "name": "LogicalExpr",
886
- "inferredType": {
887
- "$type": "InferredType",
888
- "name": "Expression"
889
- },
890
- "alternatives": {
891
- "$type": "Group",
892
- "elements": [
893
- {
894
- "$type": "RuleCall",
895
- "rule": {
896
- "$refText": "EqualityExpr"
897
- },
898
- "arguments": []
899
- },
900
- {
901
- "$type": "Group",
902
- "elements": [
903
- {
904
- "$type": "Action",
905
- "inferredType": {
906
- "$type": "InferredType",
907
- "name": "BinaryExpr"
908
- },
909
- "feature": "left",
910
- "operator": "="
911
- },
912
- {
913
- "$type": "Assignment",
914
- "feature": "operator",
915
- "operator": "=",
916
- "terminal": {
917
- "$type": "Alternatives",
918
- "elements": [
919
- {
920
- "$type": "Keyword",
921
- "value": "&&"
922
- },
923
- {
924
- "$type": "Keyword",
925
- "value": "||"
926
- }
927
- ]
928
- }
929
- },
930
- {
931
- "$type": "Assignment",
932
- "feature": "right",
933
- "operator": "=",
934
- "terminal": {
935
- "$type": "RuleCall",
936
- "rule": {
937
- "$refText": "EqualityExpr"
938
- },
939
- "arguments": []
940
- }
941
- }
942
- ],
943
- "cardinality": "*"
944
- }
945
- ]
946
- },
947
- "definesHiddenTokens": false,
948
- "entry": false,
949
- "fragment": false,
950
- "hiddenTokens": [],
951
- "parameters": [],
952
- "wildcard": false
953
- },
954
- {
955
- "$type": "ParserRule",
956
- "name": "PrimaryExpr",
957
- "inferredType": {
958
- "$type": "InferredType",
959
- "name": "Expression"
960
- },
961
- "alternatives": {
962
- "$type": "Alternatives",
963
- "elements": [
964
- {
965
- "$type": "Group",
966
- "elements": [
967
- {
968
- "$type": "Keyword",
969
- "value": "("
970
- },
971
- {
972
- "$type": "RuleCall",
973
- "rule": {
974
- "$refText": "Expression"
975
- },
976
- "arguments": []
977
- },
978
- {
979
- "$type": "Keyword",
980
- "value": ")"
981
- }
982
- ]
983
- },
984
- {
985
- "$type": "RuleCall",
986
- "rule": {
987
- "$refText": "ThisExpr"
988
- },
989
- "arguments": []
990
- },
991
- {
992
- "$type": "RuleCall",
993
- "rule": {
994
- "$refText": "NullExpr"
995
- },
996
- "arguments": []
997
- },
998
- {
999
- "$type": "RuleCall",
1000
- "rule": {
1001
- "$refText": "LiteralExpr"
1002
- },
1003
- "arguments": []
1004
- },
1005
- {
1006
- "$type": "RuleCall",
1007
- "rule": {
1008
- "$refText": "InvocationExpr"
1009
- },
1010
- "arguments": []
1011
- },
1012
- {
1013
- "$type": "RuleCall",
1014
- "rule": {
1015
- "$refText": "ArrayExpr"
1016
- },
1017
- "arguments": []
1018
- },
1019
- {
1020
- "$type": "RuleCall",
1021
- "rule": {
1022
- "$refText": "ReferenceExpr"
1023
- },
1024
- "arguments": []
1025
- },
1026
- {
1027
- "$type": "RuleCall",
1028
- "rule": {
1029
- "$refText": "UnaryExpr"
1030
- },
1031
- "arguments": []
1032
- }
1033
- ]
1034
- },
1035
- "definesHiddenTokens": false,
1036
- "entry": false,
1037
- "fragment": false,
1038
- "hiddenTokens": [],
1039
- "parameters": [],
1040
- "wildcard": false
1041
- },
1042
- {
1043
- "$type": "ParserRule",
1044
- "name": "ArgumentList",
1045
- "fragment": true,
1046
- "alternatives": {
1047
- "$type": "Group",
1048
- "elements": [
1049
- {
1050
- "$type": "Assignment",
1051
- "feature": "args",
1052
- "operator": "+=",
1053
- "terminal": {
1054
- "$type": "RuleCall",
1055
- "rule": {
1056
- "$refText": "Argument"
1057
- },
1058
- "arguments": []
1059
- }
1060
- },
1061
- {
1062
- "$type": "Group",
1063
- "elements": [
1064
- {
1065
- "$type": "Keyword",
1066
- "value": ","
1067
- },
1068
- {
1069
- "$type": "Assignment",
1070
- "feature": "args",
1071
- "operator": "+=",
1072
- "terminal": {
1073
- "$type": "RuleCall",
1074
- "rule": {
1075
- "$refText": "Argument"
1076
- },
1077
- "arguments": []
1078
- }
1079
- }
1080
- ],
1081
- "cardinality": "*"
1082
- }
1083
- ]
1084
- },
1085
- "definesHiddenTokens": false,
1086
- "entry": false,
1087
- "hiddenTokens": [],
1088
- "parameters": [],
1089
- "wildcard": false
1090
- },
1091
- {
1092
- "$type": "ParserRule",
1093
- "name": "Argument",
1094
- "alternatives": {
1095
- "$type": "Group",
1096
- "elements": [
1097
- {
1098
- "$type": "Group",
1099
- "elements": [
1100
- {
1101
- "$type": "Assignment",
1102
- "feature": "name",
1103
- "operator": "=",
1104
- "terminal": {
1105
- "$type": "RuleCall",
1106
- "rule": {
1107
- "$refText": "ID"
1108
- },
1109
- "arguments": []
1110
- }
1111
- },
1112
- {
1113
- "$type": "Keyword",
1114
- "value": ":"
1115
- }
1116
- ],
1117
- "cardinality": "?"
1118
- },
1119
- {
1120
- "$type": "Assignment",
1121
- "feature": "value",
1122
- "operator": "=",
1123
- "terminal": {
1124
- "$type": "RuleCall",
1125
- "rule": {
1126
- "$refText": "Expression"
1127
- },
1128
- "arguments": []
1129
- }
1130
- }
1131
- ]
1132
- },
1133
- "definesHiddenTokens": false,
1134
- "entry": false,
1135
- "fragment": false,
1136
- "hiddenTokens": [],
1137
- "parameters": [],
1138
- "wildcard": false
1139
- },
1140
- {
1141
- "$type": "ParserRule",
1142
- "name": "DataModel",
1143
- "alternatives": {
1144
- "$type": "Group",
1145
- "elements": [
1146
- {
1147
- "$type": "Keyword",
1148
- "value": "model"
1149
- },
1150
- {
1151
- "$type": "Assignment",
1152
- "feature": "name",
1153
- "operator": "=",
1154
- "terminal": {
1155
- "$type": "RuleCall",
1156
- "rule": {
1157
- "$refText": "ID"
1158
- },
1159
- "arguments": []
1160
- }
1161
- },
1162
- {
1163
- "$type": "Keyword",
1164
- "value": "{"
1165
- },
1166
- {
1167
- "$type": "Alternatives",
1168
- "elements": [
1169
- {
1170
- "$type": "Assignment",
1171
- "feature": "fields",
1172
- "operator": "+=",
1173
- "terminal": {
1174
- "$type": "RuleCall",
1175
- "rule": {
1176
- "$refText": "DataModelField"
1177
- },
1178
- "arguments": []
1179
- }
1180
- },
1181
- {
1182
- "$type": "Assignment",
1183
- "feature": "attributes",
1184
- "operator": "+=",
1185
- "terminal": {
1186
- "$type": "RuleCall",
1187
- "rule": {
1188
- "$refText": "DataModelAttribute"
1189
- },
1190
- "arguments": []
1191
- }
1192
- }
1193
- ],
1194
- "cardinality": "+"
1195
- },
1196
- {
1197
- "$type": "Keyword",
1198
- "value": "}"
1199
- }
1200
- ]
1201
- },
1202
- "definesHiddenTokens": false,
1203
- "entry": false,
1204
- "fragment": false,
1205
- "hiddenTokens": [],
1206
- "parameters": [],
1207
- "wildcard": false
1208
- },
1209
- {
1210
- "$type": "ParserRule",
1211
- "name": "DataModelField",
1212
- "alternatives": {
1213
- "$type": "Group",
1214
- "elements": [
1215
- {
1216
- "$type": "Assignment",
1217
- "feature": "name",
1218
- "operator": "=",
1219
- "terminal": {
1220
- "$type": "RuleCall",
1221
- "rule": {
1222
- "$refText": "ID"
1223
- },
1224
- "arguments": []
1225
- }
1226
- },
1227
- {
1228
- "$type": "Assignment",
1229
- "feature": "type",
1230
- "operator": "=",
1231
- "terminal": {
1232
- "$type": "RuleCall",
1233
- "rule": {
1234
- "$refText": "DataModelFieldType"
1235
- },
1236
- "arguments": []
1237
- }
1238
- },
1239
- {
1240
- "$type": "Assignment",
1241
- "feature": "attributes",
1242
- "operator": "+=",
1243
- "terminal": {
1244
- "$type": "RuleCall",
1245
- "rule": {
1246
- "$refText": "DataModelFieldAttribute"
1247
- },
1248
- "arguments": []
1249
- },
1250
- "cardinality": "*"
1251
- }
1252
- ]
1253
- },
1254
- "definesHiddenTokens": false,
1255
- "entry": false,
1256
- "fragment": false,
1257
- "hiddenTokens": [],
1258
- "parameters": [],
1259
- "wildcard": false
1260
- },
1261
- {
1262
- "$type": "ParserRule",
1263
- "name": "DataModelFieldType",
1264
- "alternatives": {
1265
- "$type": "Group",
1266
- "elements": [
1267
- {
1268
- "$type": "Alternatives",
1269
- "elements": [
1270
- {
1271
- "$type": "RuleCall",
1272
- "rule": {
1273
- "$refText": "BuiltinType"
1274
- },
1275
- "arguments": []
1276
- },
1277
- {
1278
- "$type": "Assignment",
1279
- "feature": "reference",
1280
- "operator": "=",
1281
- "terminal": {
1282
- "$type": "CrossReference",
1283
- "type": {
1284
- "$refText": "TypeDeclaration"
1285
- },
1286
- "terminal": {
1287
- "$type": "RuleCall",
1288
- "rule": {
1289
- "$refText": "ID"
1290
- },
1291
- "arguments": []
1292
- },
1293
- "deprecatedSyntax": false
1294
- }
1295
- }
1296
- ]
1297
- },
1298
- {
1299
- "$type": "Assignment",
1300
- "feature": "array",
1301
- "operator": "?=",
1302
- "terminal": {
1303
- "$type": "Keyword",
1304
- "value": "[]"
1305
- },
1306
- "cardinality": "?"
1307
- },
1308
- {
1309
- "$type": "Assignment",
1310
- "feature": "optional",
1311
- "operator": "?=",
1312
- "terminal": {
1313
- "$type": "Keyword",
1314
- "value": "?"
1315
- },
1316
- "cardinality": "?"
1317
- }
1318
- ]
1319
- },
1320
- "definesHiddenTokens": false,
1321
- "entry": false,
1322
- "fragment": false,
1323
- "hiddenTokens": [],
1324
- "parameters": [],
1325
- "wildcard": false
1326
- },
1327
- {
1328
- "$type": "ParserRule",
1329
- "name": "Enum",
1330
- "alternatives": {
1331
- "$type": "Group",
1332
- "elements": [
1333
- {
1334
- "$type": "Keyword",
1335
- "value": "enum"
1336
- },
1337
- {
1338
- "$type": "Assignment",
1339
- "feature": "name",
1340
- "operator": "=",
1341
- "terminal": {
1342
- "$type": "RuleCall",
1343
- "rule": {
1344
- "$refText": "ID"
1345
- },
1346
- "arguments": []
1347
- }
1348
- },
1349
- {
1350
- "$type": "Keyword",
1351
- "value": "{"
1352
- },
1353
- {
1354
- "$type": "Assignment",
1355
- "feature": "fields",
1356
- "operator": "+=",
1357
- "terminal": {
1358
- "$type": "RuleCall",
1359
- "rule": {
1360
- "$refText": "EnumField"
1361
- },
1362
- "arguments": []
1363
- },
1364
- "cardinality": "+"
1365
- },
1366
- {
1367
- "$type": "Keyword",
1368
- "value": "}"
1369
- }
1370
- ]
1371
- },
1372
- "definesHiddenTokens": false,
1373
- "entry": false,
1374
- "fragment": false,
1375
- "hiddenTokens": [],
1376
- "parameters": [],
1377
- "wildcard": false
1378
- },
1379
- {
1380
- "$type": "ParserRule",
1381
- "name": "EnumField",
1382
- "alternatives": {
1383
- "$type": "Assignment",
1384
- "feature": "name",
1385
- "operator": "=",
1386
- "terminal": {
1387
- "$type": "RuleCall",
1388
- "rule": {
1389
- "$refText": "ID"
1390
- },
1391
- "arguments": []
1392
- }
1393
- },
1394
- "definesHiddenTokens": false,
1395
- "entry": false,
1396
- "fragment": false,
1397
- "hiddenTokens": [],
1398
- "parameters": [],
1399
- "wildcard": false
1400
- },
1401
- {
1402
- "$type": "ParserRule",
1403
- "name": "Function",
1404
- "alternatives": {
1405
- "$type": "Group",
1406
- "elements": [
1407
- {
1408
- "$type": "Keyword",
1409
- "value": "function"
1410
- },
1411
- {
1412
- "$type": "Assignment",
1413
- "feature": "name",
1414
- "operator": "=",
1415
- "terminal": {
1416
- "$type": "RuleCall",
1417
- "rule": {
1418
- "$refText": "ID"
1419
- },
1420
- "arguments": []
1421
- }
1422
- },
1423
- {
1424
- "$type": "Keyword",
1425
- "value": "("
1426
- },
1427
- {
1428
- "$type": "Group",
1429
- "elements": [
1430
- {
1431
- "$type": "Assignment",
1432
- "feature": "params",
1433
- "operator": "+=",
1434
- "terminal": {
1435
- "$type": "RuleCall",
1436
- "rule": {
1437
- "$refText": "FunctionParam"
1438
- },
1439
- "arguments": []
1440
- }
1441
- },
1442
- {
1443
- "$type": "Group",
1444
- "elements": [
1445
- {
1446
- "$type": "Keyword",
1447
- "value": ","
1448
- },
1449
- {
1450
- "$type": "Assignment",
1451
- "feature": "params",
1452
- "operator": "+=",
1453
- "terminal": {
1454
- "$type": "RuleCall",
1455
- "rule": {
1456
- "$refText": "FunctionParam"
1457
- },
1458
- "arguments": []
1459
- }
1460
- }
1461
- ],
1462
- "cardinality": "*"
1463
- }
1464
- ],
1465
- "cardinality": "?"
1466
- },
1467
- {
1468
- "$type": "Keyword",
1469
- "value": ")"
1470
- },
1471
- {
1472
- "$type": "Assignment",
1473
- "feature": "returnType",
1474
- "operator": "=",
1475
- "terminal": {
1476
- "$type": "RuleCall",
1477
- "rule": {
1478
- "$refText": "FunctionParamType"
1479
- },
1480
- "arguments": []
1481
- }
1482
- },
1483
- {
1484
- "$type": "Keyword",
1485
- "value": "{"
1486
- },
1487
- {
1488
- "$type": "Assignment",
1489
- "feature": "expression",
1490
- "operator": "=",
1491
- "terminal": {
1492
- "$type": "RuleCall",
1493
- "rule": {
1494
- "$refText": "Expression"
1495
- },
1496
- "arguments": []
1497
- },
1498
- "cardinality": "?"
1499
- },
1500
- {
1501
- "$type": "Keyword",
1502
- "value": "}"
1503
- }
1504
- ]
1505
- },
1506
- "definesHiddenTokens": false,
1507
- "entry": false,
1508
- "fragment": false,
1509
- "hiddenTokens": [],
1510
- "parameters": [],
1511
- "wildcard": false
1512
- },
1513
- {
1514
- "$type": "ParserRule",
1515
- "name": "FunctionParam",
1516
- "alternatives": {
1517
- "$type": "Group",
1518
- "elements": [
1519
- {
1520
- "$type": "Assignment",
1521
- "feature": "name",
1522
- "operator": "=",
1523
- "terminal": {
1524
- "$type": "RuleCall",
1525
- "rule": {
1526
- "$refText": "ID"
1527
- },
1528
- "arguments": []
1529
- }
1530
- },
1531
- {
1532
- "$type": "Assignment",
1533
- "feature": "type",
1534
- "operator": "=",
1535
- "terminal": {
1536
- "$type": "RuleCall",
1537
- "rule": {
1538
- "$refText": "FunctionParamType"
1539
- },
1540
- "arguments": []
1541
- }
1542
- }
1543
- ]
1544
- },
1545
- "definesHiddenTokens": false,
1546
- "entry": false,
1547
- "fragment": false,
1548
- "hiddenTokens": [],
1549
- "parameters": [],
1550
- "wildcard": false
1551
- },
1552
- {
1553
- "$type": "ParserRule",
1554
- "name": "FunctionParamType",
1555
- "alternatives": {
1556
- "$type": "Group",
1557
- "elements": [
1558
- {
1559
- "$type": "Alternatives",
1560
- "elements": [
1561
- {
1562
- "$type": "RuleCall",
1563
- "rule": {
1564
- "$refText": "BuiltinType"
1565
- },
1566
- "arguments": []
1567
- },
1568
- {
1569
- "$type": "Assignment",
1570
- "feature": "reference",
1571
- "operator": "=",
1572
- "terminal": {
1573
- "$type": "CrossReference",
1574
- "type": {
1575
- "$refText": "TypeDeclaration"
1576
- },
1577
- "deprecatedSyntax": false
1578
- }
1579
- }
1580
- ]
1581
- },
1582
- {
1583
- "$type": "Assignment",
1584
- "feature": "array",
1585
- "operator": "?=",
1586
- "terminal": {
1587
- "$type": "Keyword",
1588
- "value": "[]"
1589
- },
1590
- "cardinality": "?"
1591
- }
1592
- ]
1593
- },
1594
- "definesHiddenTokens": false,
1595
- "entry": false,
1596
- "fragment": false,
1597
- "hiddenTokens": [],
1598
- "parameters": [],
1599
- "wildcard": false
1600
- },
1601
- {
1602
- "$type": "ParserRule",
1603
- "name": "Attribute",
1604
- "alternatives": {
1605
- "$type": "Group",
1606
- "elements": [
1607
- {
1608
- "$type": "Keyword",
1609
- "value": "attribute"
1610
- },
1611
- {
1612
- "$type": "Assignment",
1613
- "feature": "name",
1614
- "operator": "=",
1615
- "terminal": {
1616
- "$type": "RuleCall",
1617
- "rule": {
1618
- "$refText": "ID"
1619
- },
1620
- "arguments": []
1621
- }
1622
- },
1623
- {
1624
- "$type": "Keyword",
1625
- "value": "("
1626
- },
1627
- {
1628
- "$type": "Group",
1629
- "elements": [
1630
- {
1631
- "$type": "Assignment",
1632
- "feature": "params",
1633
- "operator": "+=",
1634
- "terminal": {
1635
- "$type": "RuleCall",
1636
- "rule": {
1637
- "$refText": "AttributeParam"
1638
- },
1639
- "arguments": []
1640
- }
1641
- },
1642
- {
1643
- "$type": "Group",
1644
- "elements": [
1645
- {
1646
- "$type": "Keyword",
1647
- "value": ","
1648
- },
1649
- {
1650
- "$type": "Assignment",
1651
- "feature": "params",
1652
- "operator": "+=",
1653
- "terminal": {
1654
- "$type": "RuleCall",
1655
- "rule": {
1656
- "$refText": "AttributeParam"
1657
- },
1658
- "arguments": []
1659
- }
1660
- }
1661
- ],
1662
- "cardinality": "*"
1663
- }
1664
- ],
1665
- "cardinality": "?"
1666
- },
1667
- {
1668
- "$type": "Keyword",
1669
- "value": ")"
1670
- }
1671
- ]
1672
- },
1673
- "definesHiddenTokens": false,
1674
- "entry": false,
1675
- "fragment": false,
1676
- "hiddenTokens": [],
1677
- "parameters": [],
1678
- "wildcard": false
1679
- },
1680
- {
1681
- "$type": "ParserRule",
1682
- "name": "AttributeParam",
1683
- "alternatives": {
1684
- "$type": "Group",
1685
- "elements": [
1686
- {
1687
- "$type": "Assignment",
1688
- "feature": "positional",
1689
- "operator": "?=",
1690
- "terminal": {
1691
- "$type": "Keyword",
1692
- "value": "_"
1693
- }
1694
- },
1695
- {
1696
- "$type": "Assignment",
1697
- "feature": "name",
1698
- "operator": "=",
1699
- "terminal": {
1700
- "$type": "RuleCall",
1701
- "rule": {
1702
- "$refText": "ID"
1703
- },
1704
- "arguments": []
1705
- }
1706
- },
1707
- {
1708
- "$type": "Assignment",
1709
- "feature": "type",
1710
- "operator": "=",
1711
- "terminal": {
1712
- "$type": "RuleCall",
1713
- "rule": {
1714
- "$refText": "AttributeParamType"
1715
- },
1716
- "arguments": []
1717
- }
1718
- }
1719
- ]
1720
- },
1721
- "definesHiddenTokens": false,
1722
- "entry": false,
1723
- "fragment": false,
1724
- "hiddenTokens": [],
1725
- "parameters": [],
1726
- "wildcard": false
1727
- },
1728
- {
1729
- "$type": "ParserRule",
1730
- "name": "AttributeParamType",
1731
- "alternatives": {
1732
- "$type": "Group",
1733
- "elements": [
1734
- {
1735
- "$type": "Alternatives",
1736
- "elements": [
1737
- {
1738
- "$type": "RuleCall",
1739
- "rule": {
1740
- "$refText": "BuiltinType"
1741
- },
1742
- "arguments": []
1743
- },
1744
- {
1745
- "$type": "Assignment",
1746
- "feature": "type",
1747
- "operator": "=",
1748
- "terminal": {
1749
- "$type": "Keyword",
1750
- "value": "FieldReference"
1751
- }
1752
- }
1753
- ]
1754
- },
1755
- {
1756
- "$type": "Assignment",
1757
- "feature": "array",
1758
- "operator": "?=",
1759
- "terminal": {
1760
- "$type": "Keyword",
1761
- "value": "[]"
1762
- }
1763
- },
1764
- {
1765
- "$type": "Assignment",
1766
- "feature": "optional",
1767
- "operator": "?=",
1768
- "terminal": {
1769
- "$type": "Keyword",
1770
- "value": "?"
1771
- }
1772
- }
1773
- ]
1774
- },
1775
- "definesHiddenTokens": false,
1776
- "entry": false,
1777
- "fragment": false,
1778
- "hiddenTokens": [],
1779
- "parameters": [],
1780
- "wildcard": false
1781
- },
1782
- {
1783
- "$type": "ParserRule",
1784
- "name": "DataModelFieldAttribute",
1785
- "alternatives": {
1786
- "$type": "Group",
1787
- "elements": [
1788
- {
1789
- "$type": "Keyword",
1790
- "value": "@"
1791
- },
1792
- {
1793
- "$type": "Assignment",
1794
- "feature": "decl",
1795
- "operator": "=",
1796
- "terminal": {
1797
- "$type": "CrossReference",
1798
- "type": {
1799
- "$refText": "Attribute"
1800
- },
1801
- "deprecatedSyntax": false
1802
- }
1803
- },
1804
- {
1805
- "$type": "Group",
1806
- "elements": [
1807
- {
1808
- "$type": "Keyword",
1809
- "value": "("
1810
- },
1811
- {
1812
- "$type": "RuleCall",
1813
- "rule": {
1814
- "$refText": "AttributeArgList"
1815
- },
1816
- "arguments": [],
1817
- "cardinality": "?"
1818
- },
1819
- {
1820
- "$type": "Keyword",
1821
- "value": ")"
1822
- }
1823
- ],
1824
- "cardinality": "?"
1825
- }
1826
- ]
1827
- },
1828
- "definesHiddenTokens": false,
1829
- "entry": false,
1830
- "fragment": false,
1831
- "hiddenTokens": [],
1832
- "parameters": [],
1833
- "wildcard": false
1834
- },
1835
- {
1836
- "$type": "ParserRule",
1837
- "name": "DataModelAttribute",
1838
- "alternatives": {
1839
- "$type": "Group",
1840
- "elements": [
1841
- {
1842
- "$type": "Keyword",
1843
- "value": "@@"
1844
- },
1845
- {
1846
- "$type": "Assignment",
1847
- "feature": "decl",
1848
- "operator": "=",
1849
- "terminal": {
1850
- "$type": "CrossReference",
1851
- "type": {
1852
- "$refText": "Attribute"
1853
- },
1854
- "deprecatedSyntax": false
1855
- }
1856
- },
1857
- {
1858
- "$type": "Group",
1859
- "elements": [
1860
- {
1861
- "$type": "Keyword",
1862
- "value": "("
1863
- },
1864
- {
1865
- "$type": "RuleCall",
1866
- "rule": {
1867
- "$refText": "AttributeArgList"
1868
- },
1869
- "arguments": [],
1870
- "cardinality": "?"
1871
- },
1872
- {
1873
- "$type": "Keyword",
1874
- "value": ")"
1875
- }
1876
- ],
1877
- "cardinality": "?"
1878
- }
1879
- ]
1880
- },
1881
- "definesHiddenTokens": false,
1882
- "entry": false,
1883
- "fragment": false,
1884
- "hiddenTokens": [],
1885
- "parameters": [],
1886
- "wildcard": false
1887
- },
1888
- {
1889
- "$type": "ParserRule",
1890
- "name": "AttributeArgList",
1891
- "fragment": true,
1892
- "alternatives": {
1893
- "$type": "Group",
1894
- "elements": [
1895
- {
1896
- "$type": "Assignment",
1897
- "feature": "args",
1898
- "operator": "+=",
1899
- "terminal": {
1900
- "$type": "RuleCall",
1901
- "rule": {
1902
- "$refText": "AttributeArg"
1903
- },
1904
- "arguments": []
1905
- }
1906
- },
1907
- {
1908
- "$type": "Group",
1909
- "elements": [
1910
- {
1911
- "$type": "Keyword",
1912
- "value": ","
1913
- },
1914
- {
1915
- "$type": "Assignment",
1916
- "feature": "args",
1917
- "operator": "+=",
1918
- "terminal": {
1919
- "$type": "RuleCall",
1920
- "rule": {
1921
- "$refText": "AttributeArg"
1922
- },
1923
- "arguments": []
1924
- }
1925
- }
1926
- ],
1927
- "cardinality": "*"
1928
- }
1929
- ]
1930
- },
1931
- "definesHiddenTokens": false,
1932
- "entry": false,
1933
- "hiddenTokens": [],
1934
- "parameters": [],
1935
- "wildcard": false
1936
- },
1937
- {
1938
- "$type": "ParserRule",
1939
- "name": "AttributeArg",
1940
- "alternatives": {
1941
- "$type": "Group",
1942
- "elements": [
1943
- {
1944
- "$type": "Group",
1945
- "elements": [
1946
- {
1947
- "$type": "Assignment",
1948
- "feature": "name",
1949
- "operator": "=",
1950
- "terminal": {
1951
- "$type": "RuleCall",
1952
- "rule": {
1953
- "$refText": "ID"
1954
- },
1955
- "arguments": []
1956
- }
1957
- },
1958
- {
1959
- "$type": "Keyword",
1960
- "value": ":"
1961
- }
1962
- ],
1963
- "cardinality": "?"
1964
- },
1965
- {
1966
- "$type": "Assignment",
1967
- "feature": "value",
1968
- "operator": "=",
1969
- "terminal": {
1970
- "$type": "RuleCall",
1971
- "rule": {
1972
- "$refText": "Expression"
1973
- },
1974
- "arguments": []
1975
- }
1976
- }
1977
- ]
1978
- },
1979
- "definesHiddenTokens": false,
1980
- "entry": false,
1981
- "fragment": false,
1982
- "hiddenTokens": [],
1983
- "parameters": [],
1984
- "wildcard": false
1985
- },
1986
- {
1987
- "$type": "ParserRule",
1988
- "name": "BuiltinType",
1989
- "fragment": true,
1990
- "alternatives": {
1991
- "$type": "Assignment",
1992
- "feature": "type",
1993
- "operator": "=",
1994
- "terminal": {
1995
- "$type": "Alternatives",
1996
- "elements": [
1997
- {
1998
- "$type": "Keyword",
1999
- "value": "String"
2000
- },
2001
- {
2002
- "$type": "Keyword",
2003
- "value": "Boolean"
2004
- },
2005
- {
2006
- "$type": "Keyword",
2007
- "value": "Int"
2008
- },
2009
- {
2010
- "$type": "Keyword",
2011
- "value": "DateTime"
2012
- },
2013
- {
2014
- "$type": "Keyword",
2015
- "value": "JSON"
2016
- }
2017
- ]
2018
- }
2019
- },
2020
- "definesHiddenTokens": false,
2021
- "entry": false,
2022
- "hiddenTokens": [],
2023
- "parameters": [],
2024
- "wildcard": false
2025
- },
2026
- {
2027
- "$type": "TerminalRule",
2028
- "hidden": true,
2029
- "name": "WS",
2030
- "terminal": {
2031
- "$type": "RegexToken",
2032
- "regex": "\\\\s+"
2033
- },
2034
- "fragment": false
2035
- },
2036
- {
2037
- "$type": "TerminalRule",
2038
- "name": "BOOLEAN",
2039
- "type": {
2040
- "$type": "ReturnType",
2041
- "name": "boolean"
2042
- },
2043
- "terminal": {
2044
- "$type": "RegexToken",
2045
- "regex": "true|false"
2046
- },
2047
- "fragment": false,
2048
- "hidden": false
2049
- },
2050
- {
2051
- "$type": "TerminalRule",
2052
- "name": "NULL",
2053
- "terminal": {
2054
- "$type": "CharacterRange",
2055
- "left": {
2056
- "$type": "Keyword",
2057
- "value": "null"
2058
- }
2059
- },
2060
- "fragment": false,
2061
- "hidden": false
2062
- },
2063
- {
2064
- "$type": "TerminalRule",
2065
- "name": "THIS",
2066
- "terminal": {
2067
- "$type": "CharacterRange",
2068
- "left": {
2069
- "$type": "Keyword",
2070
- "value": "this"
2071
- }
2072
- },
2073
- "fragment": false,
2074
- "hidden": false
2075
- },
2076
- {
2077
- "$type": "TerminalRule",
2078
- "name": "ID",
2079
- "terminal": {
2080
- "$type": "RegexToken",
2081
- "regex": "[_a-zA-Z][\\\\w_]*"
2082
- },
2083
- "fragment": false,
2084
- "hidden": false
2085
- },
2086
- {
2087
- "$type": "TerminalRule",
2088
- "name": "STRING",
2089
- "terminal": {
2090
- "$type": "RegexToken",
2091
- "regex": "\\"[^\\"]*\\"|'[^']*'"
2092
- },
2093
- "fragment": false,
2094
- "hidden": false
2095
- },
2096
- {
2097
- "$type": "TerminalRule",
2098
- "name": "INT",
2099
- "type": {
2100
- "$type": "ReturnType",
2101
- "name": "number"
2102
- },
2103
- "terminal": {
2104
- "$type": "RegexToken",
2105
- "regex": "[+-]?[0-9]+"
2106
- },
2107
- "fragment": false,
2108
- "hidden": false
2109
- },
2110
- {
2111
- "$type": "TerminalRule",
2112
- "hidden": true,
2113
- "name": "ML_COMMENT",
2114
- "terminal": {
2115
- "$type": "RegexToken",
2116
- "regex": "\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/"
2117
- },
2118
- "fragment": false
2119
- },
2120
- {
2121
- "$type": "TerminalRule",
2122
- "hidden": true,
2123
- "name": "SL_COMMENT",
2124
- "terminal": {
2125
- "$type": "RegexToken",
2126
- "regex": "\\\\/\\\\/[^\\\\n\\\\r]*"
2127
- },
2128
- "fragment": false
2129
- }
2130
- ],
2131
- "types": [
2132
- {
2133
- "$type": "Type",
2134
- "typeAlternatives": [
2135
- {
2136
- "$type": "AtomType",
2137
- "refType": {
2138
- "$refText": "FunctionParam"
2139
- },
2140
- "isArray": false,
2141
- "isRef": false
2142
- },
2143
- {
2144
- "$type": "AtomType",
2145
- "refType": {
2146
- "$refText": "DataModelField"
2147
- },
2148
- "isArray": false,
2149
- "isRef": false
2150
- },
2151
- {
2152
- "$type": "AtomType",
2153
- "refType": {
2154
- "$refText": "EnumField"
2155
- },
2156
- "isArray": false,
2157
- "isRef": false
2158
- }
2159
- ],
2160
- "name": "ReferenceTarget"
2161
- },
2162
- {
2163
- "$type": "Type",
2164
- "typeAlternatives": [
2165
- {
2166
- "$type": "AtomType",
2167
- "refType": {
2168
- "$refText": "DataModel"
2169
- },
2170
- "isArray": false,
2171
- "isRef": false
2172
- },
2173
- {
2174
- "$type": "AtomType",
2175
- "refType": {
2176
- "$refText": "Enum"
2177
- },
2178
- "isArray": false,
2179
- "isRef": false
2180
- }
2181
- ],
2182
- "name": "TypeDeclaration"
2183
- }
2184
- ],
2185
- "definesHiddenTokens": false,
2186
- "hiddenTokens": [],
2187
- "imports": [],
2188
- "interfaces": [],
2189
- "usedGrammars": []
2190
- }`));