@words-lang/parser 0.1.0

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 (41) hide show
  1. package/dist/analyser/analyser.d.ts +106 -0
  2. package/dist/analyser/analyser.d.ts.map +1 -0
  3. package/dist/analyser/analyser.js +291 -0
  4. package/dist/analyser/analyser.js.map +1 -0
  5. package/dist/analyser/diagnostics.d.ts +166 -0
  6. package/dist/analyser/diagnostics.d.ts.map +1 -0
  7. package/dist/analyser/diagnostics.js +139 -0
  8. package/dist/analyser/diagnostics.js.map +1 -0
  9. package/dist/analyser/workspace.d.ts +198 -0
  10. package/dist/analyser/workspace.d.ts.map +1 -0
  11. package/dist/analyser/workspace.js +403 -0
  12. package/dist/analyser/workspace.js.map +1 -0
  13. package/dist/index.d.ts +8 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +31 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lexer/lexer.d.ts +120 -0
  18. package/dist/lexer/lexer.d.ts.map +1 -0
  19. package/dist/lexer/lexer.js +365 -0
  20. package/dist/lexer/lexer.js.map +1 -0
  21. package/dist/lexer/token.d.ts +247 -0
  22. package/dist/lexer/token.d.ts.map +1 -0
  23. package/dist/lexer/token.js +250 -0
  24. package/dist/lexer/token.js.map +1 -0
  25. package/dist/parser/ast.d.ts +685 -0
  26. package/dist/parser/ast.d.ts.map +1 -0
  27. package/dist/parser/ast.js +3 -0
  28. package/dist/parser/ast.js.map +1 -0
  29. package/dist/parser/parser.d.ts +411 -0
  30. package/dist/parser/parser.d.ts.map +1 -0
  31. package/dist/parser/parser.js +1600 -0
  32. package/dist/parser/parser.js.map +1 -0
  33. package/package.json +23 -0
  34. package/src/analyser/analyser.ts +403 -0
  35. package/src/analyser/diagnostics.ts +232 -0
  36. package/src/analyser/workspace.ts +457 -0
  37. package/src/index.ts +7 -0
  38. package/src/lexer/lexer.ts +379 -0
  39. package/src/lexer/token.ts +331 -0
  40. package/src/parser/ast.ts +798 -0
  41. package/src/parser/parser.ts +1815 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@words-lang/parser",
3
+ "version": "0.1.0",
4
+ "description": "Standalone parser and semantic analyser for the WORDS specification language",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "src"
10
+ ],
11
+ "license": "MIT",
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "build:watch": "tsc --watch",
15
+ "test": "vitest run",
16
+ "test:watch": "vitest"
17
+ },
18
+ "devDependencies": {
19
+ "@types/node": "^25.5.0",
20
+ "typescript": "^5.3.0",
21
+ "vitest": "^1.0.0"
22
+ }
23
+ }
@@ -0,0 +1,403 @@
1
+ /**
2
+ * analyser.ts
3
+ *
4
+ * The WORDS semantic analyser. Walks the Workspace index and validates the
5
+ * rules that cannot be checked by the parser alone — rules that require
6
+ * cross-file knowledge of the full project.
7
+ *
8
+ * The analyser never reads files. It works entirely from the Workspace index
9
+ * built by `Workspace.load()`. All diagnostics are collected and returned
10
+ * as an array — nothing is thrown.
11
+ *
12
+ * Rules validated (first milestone):
13
+ *
14
+ * A001 — Every module listed in system.modules has a ModuleNode definition.
15
+ * A002 — Every state referenced in a when rule exists as a StateNode.
16
+ * A003 — Every context referenced in a when rule exists as a ContextNode.
17
+ * A004 — Every context in a state's returns has a when rule in the process.
18
+ * A005 — Every state defined is reachable (referenced in a when rule or start).
19
+ * A006 — state.return(x) in a screen references a context in the state's returns.
20
+ * A007 — The module ownership declaration matches the construct's declared module.
21
+ */
22
+
23
+ import { Workspace } from './workspace'
24
+ import {
25
+ Diagnostic,
26
+ DiagnosticCode,
27
+ analyserDiagnostic,
28
+ rangeFromToken,
29
+ } from './diagnostics'
30
+ import {
31
+ StateNode,
32
+ ScreenNode,
33
+ SimpleReturnsNode,
34
+ ExpandedReturnsNode,
35
+ UseEntryNode,
36
+ BlockExpressionNode,
37
+ StateReturnStatementNode,
38
+ ArgumentNode,
39
+ } from '../parser/ast'
40
+
41
+ // ── AnalysisResult ────────────────────────────────────────────────────────────
42
+
43
+ /**
44
+ * The value returned by `Analyser.analyse()`.
45
+ * Contains all semantic diagnostics collected across the project, annotated
46
+ * with the file path that produced each one.
47
+ */
48
+ export interface AnalysisResult {
49
+ diagnostics: Array<{ filePath: string; diagnostic: Diagnostic }>
50
+ }
51
+
52
+ // ── Analyser ──────────────────────────────────────────────────────────────────
53
+
54
+ export class Analyser {
55
+ private workspace: Workspace
56
+ private diagnostics: Array<{ filePath: string; diagnostic: Diagnostic }> = []
57
+
58
+ constructor(workspace: Workspace) {
59
+ this.workspace = workspace
60
+ }
61
+
62
+ // ── Public API ─────────────────────────────────────────────────────────────
63
+
64
+ /**
65
+ * Runs all validation rules over the workspace index and returns the
66
+ * collected diagnostics. Never throws.
67
+ */
68
+ analyse(): AnalysisResult {
69
+ this.diagnostics = []
70
+
71
+ this.checkSystemModules()
72
+ this.checkProcessRules()
73
+ this.checkStateReturns()
74
+ this.checkStateReachability()
75
+ this.checkScreenStateReturns()
76
+ this.checkOwnershipDeclarations()
77
+
78
+ return { diagnostics: this.diagnostics }
79
+ }
80
+
81
+ // ── Rule A001 — System modules have definitions ────────────────────────────
82
+
83
+ /**
84
+ * Every module listed in system.modules must have a corresponding ModuleNode.
85
+ * Reports on the system file using the module name token position.
86
+ */
87
+ private checkSystemModules(): void {
88
+ const { system, systemFilePath } = this.workspace
89
+ if (!system || !systemFilePath) return
90
+
91
+ for (const moduleName of system.modules) {
92
+ if (!this.workspace.modules.has(moduleName)) {
93
+ this.report(
94
+ systemFilePath,
95
+ DiagnosticCode.A_UNDEFINED_MODULE,
96
+ `Module '${moduleName}' is listed in the system but has no definition`,
97
+ system.token
98
+ )
99
+ }
100
+ }
101
+ }
102
+
103
+ // ── Rules A002 + A003 — Process when rules reference valid constructs ───────
104
+
105
+ /**
106
+ * For every when rule in every process:
107
+ * - The currentState must exist as a StateNode in the same module (A002)
108
+ * - The nextState must exist as a StateNode in the same module (A002)
109
+ * - The producedContext must exist as a ContextNode in the same module (A003)
110
+ */
111
+ private checkProcessRules(): void {
112
+ for (const [moduleName, moduleNode] of this.workspace.modules) {
113
+ const filePath = this.workspace.modulePaths.get(moduleName)
114
+ if (!filePath) continue
115
+
116
+ for (const process of moduleNode.processes) {
117
+ for (const rule of process.rules) {
118
+
119
+ // Check currentState exists
120
+ if (!this.workspace.getState(moduleName, rule.currentState)) {
121
+ this.report(
122
+ filePath,
123
+ DiagnosticCode.A_UNDEFINED_STATE,
124
+ `State '${rule.currentState}' referenced in process '${process.name}' is not defined in module '${moduleName}'`,
125
+ rule.token
126
+ )
127
+ }
128
+
129
+ // Check nextState exists
130
+ if (!this.workspace.getState(moduleName, rule.nextState)) {
131
+ this.report(
132
+ filePath,
133
+ DiagnosticCode.A_UNDEFINED_STATE,
134
+ `State '${rule.nextState}' referenced in process '${process.name}' is not defined in module '${moduleName}'`,
135
+ rule.token
136
+ )
137
+ }
138
+
139
+ // Check producedContext exists
140
+ if (!this.workspace.getContext(moduleName, rule.producedContext)) {
141
+ this.report(
142
+ filePath,
143
+ DiagnosticCode.A_UNDEFINED_CONTEXT,
144
+ `Context '${rule.producedContext}' referenced in process '${process.name}' is not defined in module '${moduleName}'`,
145
+ rule.token
146
+ )
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ // ── Rule A004 — Every returned context has a when rule ─────────────────────
154
+
155
+ /**
156
+ * For every state, every context listed in its returns clause must have
157
+ * a corresponding when rule in at least one of the module's processes.
158
+ */
159
+ private checkStateReturns(): void {
160
+ for (const [moduleName, stateMap] of this.workspace.states) {
161
+ const moduleNode = this.workspace.modules.get(moduleName)
162
+ if (!moduleNode) continue
163
+
164
+ // Build a set of all (currentState, producedContext) pairs covered by when rules
165
+ const coveredReturns = new Set<string>()
166
+ for (const process of moduleNode.processes) {
167
+ for (const rule of process.rules) {
168
+ coveredReturns.add(`${rule.currentState}::${rule.producedContext}`)
169
+ }
170
+ }
171
+
172
+ for (const [stateName, stateNode] of stateMap) {
173
+ const filePath = this.workspace.constructPaths.get(`${moduleName}/${stateName}`)
174
+ if (!filePath) continue
175
+
176
+ const returnedContexts = this.extractReturnedContexts(stateNode)
177
+
178
+ for (const contextName of returnedContexts) {
179
+ if (!coveredReturns.has(`${stateName}::${contextName}`)) {
180
+ this.report(
181
+ filePath,
182
+ DiagnosticCode.A_UNHANDLED_RETURN,
183
+ `Context '${contextName}' is listed in state '${stateName}' returns but has no corresponding when rule in module '${moduleName}'`,
184
+ stateNode.token
185
+ )
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ // ── Rule A005 — Every state is reachable ───────────────────────────────────
193
+
194
+ /**
195
+ * Every state defined in a module must be either:
196
+ * - The module's start state, or
197
+ * - Referenced as the nextState in at least one when rule.
198
+ *
199
+ * States that are only currentState in when rules but never entered are
200
+ * considered unreachable entry points.
201
+ */
202
+ private checkStateReachability(): void {
203
+ for (const [moduleName, stateMap] of this.workspace.states) {
204
+ const moduleNode = this.workspace.modules.get(moduleName)
205
+ if (!moduleNode) continue
206
+
207
+ // Collect all states that are entered (nextState in any when rule or start)
208
+ const reachable = new Set<string>()
209
+ if (moduleNode.startState) {
210
+ reachable.add(moduleNode.startState)
211
+ }
212
+ for (const process of moduleNode.processes) {
213
+ for (const rule of process.rules) {
214
+ reachable.add(rule.nextState)
215
+ }
216
+ }
217
+
218
+ // Also collect all states referenced in implements branches
219
+ for (const impl of moduleNode.implements) {
220
+ for (const branch of impl.branches) {
221
+ reachable.add(branch.targetState)
222
+ }
223
+ }
224
+
225
+ for (const [stateName] of stateMap) {
226
+ if (!reachable.has(stateName)) {
227
+ const filePath = this.workspace.constructPaths.get(`${moduleName}/${stateName}`)
228
+ if (!filePath) continue
229
+ const stateNode = stateMap.get(stateName)!
230
+ this.report(
231
+ filePath,
232
+ DiagnosticCode.A_UNREACHABLE_STATE,
233
+ `State '${stateName}' in module '${moduleName}' is never entered — it is not the start state and no when rule transitions into it`,
234
+ stateNode.token
235
+ )
236
+ }
237
+ }
238
+ }
239
+ }
240
+
241
+ // ── Rule A006 — state.return() references valid contexts ──────────────────
242
+
243
+ /**
244
+ * For every screen, for every state.return(contextName) call found in its
245
+ * uses tree, the contextName must appear in the enclosing state's returns.
246
+ *
247
+ * To find the enclosing state we look up which state uses this screen.
248
+ */
249
+ private checkScreenStateReturns(): void {
250
+ for (const [moduleName, screenMap] of this.workspace.screens) {
251
+ for (const [screenName, screenNode] of screenMap) {
252
+ const filePath = this.workspace.constructPaths.get(`${moduleName}/${screenName}`)
253
+ if (!filePath) continue
254
+
255
+ // Find the state that uses this screen
256
+ const enclosingState = this.findStateUsingScreen(moduleName, screenName)
257
+ if (!enclosingState) continue
258
+
259
+ const validReturns = new Set(this.extractReturnedContexts(enclosingState))
260
+
261
+ // Walk the screen's uses tree and check every state.return()
262
+ this.checkStateReturnsInUses(screenNode.uses, validReturns, filePath, screenNode)
263
+ }
264
+ }
265
+ }
266
+
267
+ /**
268
+ * Recursively walks a uses tree and validates every state.return() call.
269
+ */
270
+ private checkStateReturnsInUses(
271
+ uses: UseEntryNode[],
272
+ validReturns: Set<string>,
273
+ filePath: string,
274
+ screenNode: ScreenNode
275
+ ): void {
276
+ for (const entry of uses) {
277
+ if (entry.kind === 'ComponentUse') {
278
+ this.checkStateReturnsInArgs(entry.args, validReturns, filePath)
279
+ this.checkStateReturnsInUses(entry.uses, validReturns, filePath, screenNode)
280
+ } else if (entry.kind === 'ConditionalBlock') {
281
+ this.checkStateReturnsInUses(entry.body, validReturns, filePath, screenNode)
282
+ } else if (entry.kind === 'IterationBlock') {
283
+ this.checkStateReturnsInUses(entry.body, validReturns, filePath, screenNode)
284
+ }
285
+ }
286
+ }
287
+
288
+ /**
289
+ * Checks arguments for block expressions containing state.return() calls.
290
+ */
291
+ private checkStateReturnsInArgs(
292
+ args: ArgumentNode[],
293
+ validReturns: Set<string>,
294
+ filePath: string
295
+ ): void {
296
+ for (const arg of args) {
297
+ if (arg.value.kind === 'BlockExpression') {
298
+ const block = arg.value as BlockExpressionNode
299
+ for (const stmt of block.statements) {
300
+ if (stmt.kind === 'StateReturnStatement') {
301
+ const returnStmt = stmt as StateReturnStatementNode
302
+ if (!validReturns.has(returnStmt.contextName)) {
303
+ this.report(
304
+ filePath,
305
+ DiagnosticCode.A_INVALID_STATE_RETURN,
306
+ `state.return('${returnStmt.contextName}') does not match any context in the enclosing state's returns clause`,
307
+ returnStmt.token
308
+ )
309
+ }
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+
316
+ // ── Rule A007 — Ownership declarations match construct modules ─────────────
317
+
318
+ /**
319
+ * For every file with an ownerModule declaration, every construct in that
320
+ * file must have its module field matching the ownerModule.
321
+ * (The module field is filled in by the Workspace during indexing.)
322
+ */
323
+ private checkOwnershipDeclarations(): void {
324
+ for (const [filePath, record] of this.workspace.files) {
325
+ const doc = record.parseResult.document
326
+ if (!doc.ownerModule) continue
327
+
328
+ for (const node of doc.nodes) {
329
+ if (!('module' in node)) continue
330
+ const nodeModule = (node as any).module as string
331
+ if (nodeModule && nodeModule !== doc.ownerModule) {
332
+ this.report(
333
+ filePath,
334
+ DiagnosticCode.A_MODULE_MISMATCH,
335
+ `Construct declares module '${nodeModule}' but the ownership declaration says '${doc.ownerModule}'`,
336
+ node.token
337
+ )
338
+ }
339
+ }
340
+ }
341
+ }
342
+
343
+ // ── Private helpers ────────────────────────────────────────────────────────
344
+
345
+ /**
346
+ * Extracts all context names from a state's returns clause,
347
+ * handling both simple and expanded forms.
348
+ */
349
+ private extractReturnedContexts(stateNode: StateNode): string[] {
350
+ if (!stateNode.returns) return []
351
+
352
+ if (stateNode.returns.kind === 'SimpleReturns') {
353
+ return (stateNode.returns as SimpleReturnsNode).contexts
354
+ }
355
+
356
+ if (stateNode.returns.kind === 'ExpandedReturns') {
357
+ return (stateNode.returns as ExpandedReturnsNode).entries.map(e => e.contextName)
358
+ }
359
+
360
+ return []
361
+ }
362
+
363
+ /**
364
+ * Finds the StateNode in `moduleName` that uses the given screen.
365
+ * Returns null if no state in the module uses this screen.
366
+ */
367
+ private findStateUsingScreen(moduleName: string, screenName: string): StateNode | null {
368
+ const stateMap = this.workspace.states.get(moduleName)
369
+ if (!stateMap) return null
370
+
371
+ for (const [, stateNode] of stateMap) {
372
+ for (const entry of stateNode.uses) {
373
+ if (
374
+ entry.kind === 'ComponentUse' &&
375
+ entry.componentKind === 'screen' &&
376
+ (entry.name.parts.length === 1
377
+ ? entry.name.parts[0] === screenName
378
+ : entry.name.parts[entry.name.parts.length - 1] === screenName)
379
+ ) {
380
+ return stateNode
381
+ }
382
+ }
383
+ }
384
+
385
+ return null
386
+ }
387
+
388
+ /**
389
+ * Emits a diagnostic at the position of the given token.
390
+ */
391
+ private report(
392
+ filePath: string,
393
+ code: DiagnosticCode,
394
+ message: string,
395
+ token: { line: number; column: number; value: string }
396
+ ): void {
397
+ const range = rangeFromToken(token.line, token.column, token.value.length || 1)
398
+ this.diagnostics.push({
399
+ filePath,
400
+ diagnostic: analyserDiagnostic(code, message, 'error', range),
401
+ })
402
+ }
403
+ }