spex-parser 0.6.2 → 0.7.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.
package/dist/visitor.js CHANGED
@@ -18,7 +18,7 @@ export function parseConstraint(raw) {
18
18
  if (match.index > lastIndex) {
19
19
  parts.push({ kind: 'ConstraintText', text: raw.slice(lastIndex, match.index) });
20
20
  }
21
- parts.push({ kind: 'ConstraintReference', name: match[1] });
21
+ parts.push({ kind: 'ReferenceDirective', name: match[1] });
22
22
  lastIndex = match.index + match[0].length;
23
23
  }
24
24
  if (lastIndex < raw.length) {
@@ -26,6 +26,33 @@ export function parseConstraint(raw) {
26
26
  }
27
27
  return { raw, parts };
28
28
  }
29
+ function extractCodeLanguage(image) {
30
+ const langEnd = image.indexOf('\n');
31
+ if (langEnd === -1)
32
+ return '';
33
+ return image.slice(3, langEnd).trim();
34
+ }
35
+ function extractCodeBody(image) {
36
+ const firstNewline = image.indexOf('\n');
37
+ return image.slice(firstNewline + 1, -3).trimEnd();
38
+ }
39
+ function codeConstraint(image) {
40
+ const language = extractCodeLanguage(image);
41
+ const body = extractCodeBody(image);
42
+ if (language === '') {
43
+ return {
44
+ type: 'Structured',
45
+ raw: body,
46
+ parts: parseConstraint(body).parts,
47
+ };
48
+ }
49
+ return {
50
+ type: 'Code',
51
+ language,
52
+ body,
53
+ parts: parseConstraint(body).parts,
54
+ };
55
+ }
29
56
  export class SpexParserVisitor extends BaseSpexVisitor {
30
57
  constructor() {
31
58
  super();
@@ -39,29 +66,17 @@ export class SpexParserVisitor extends BaseSpexVisitor {
39
66
  if (ctx.realizeDeclaration) {
40
67
  return this.visit(ctx.realizeDeclaration);
41
68
  }
42
- if (ctx.packageDeclaration) {
43
- return this.visit(ctx.packageDeclaration);
44
- }
45
69
  if (ctx.objectDeclaration) {
46
70
  return this.visit(ctx.objectDeclaration);
47
71
  }
48
72
  if (ctx.importDeclaration) {
49
73
  return this.visit(ctx.importDeclaration);
50
74
  }
51
- if (ctx.exportDeclaration) {
52
- return this.visit(ctx.exportDeclaration);
53
- }
54
75
  if (ctx.includeDeclaration) {
55
76
  return this.visit(ctx.includeDeclaration);
56
77
  }
57
78
  return this.visit(ctx.generateDeclaration);
58
79
  }
59
- enumObject(ctx) {
60
- return {
61
- kind: 'EnumObject',
62
- values: ctx.StringLiteral.map((s) => stringLiteralValue(s.image)),
63
- };
64
- }
65
80
  literalObject(ctx) {
66
81
  if (ctx.StringLiteral) {
67
82
  return {
@@ -131,15 +146,9 @@ export class SpexParserVisitor extends BaseSpexVisitor {
131
146
  else if (ctx.productObject) {
132
147
  expr = this.visit(ctx.productObject);
133
148
  }
134
- else if (ctx.enumObject) {
135
- expr = this.visit(ctx.enumObject);
136
- }
137
149
  else if (ctx.patternObject) {
138
150
  expr = this.visit(ctx.patternObject);
139
151
  }
140
- else if (ctx.lambdaObject) {
141
- expr = this.visit(ctx.lambdaObject);
142
- }
143
152
  else if (ctx.literalObject) {
144
153
  expr = this.visit(ctx.literalObject);
145
154
  }
@@ -179,6 +188,9 @@ export class SpexParserVisitor extends BaseSpexVisitor {
179
188
  else if (ctx.UnitTok) {
180
189
  parts = [ctx.UnitTok[0].image, ...(ctx.Identifier ?? []).map((id) => id.image)];
181
190
  }
191
+ else if (ctx.ArtifactTok) {
192
+ parts = [ctx.ArtifactTok[0].image, ...(ctx.Identifier ?? []).map((id) => id.image)];
193
+ }
182
194
  else if (ctx.ConceptTok) {
183
195
  parts = [ctx.ConceptTok[0].image, ...(ctx.Identifier ?? []).map((id) => id.image)];
184
196
  }
@@ -210,12 +222,24 @@ export class SpexParserVisitor extends BaseSpexVisitor {
210
222
  return { kind: 'ProductObject', fields };
211
223
  }
212
224
  subObject(ctx) {
225
+ const base = this.visit(ctx.base);
226
+ if (ctx.CodeBlock) {
227
+ return {
228
+ kind: 'SubObject',
229
+ base,
230
+ constraint: codeConstraint(ctx.CodeBlock[0].image),
231
+ };
232
+ }
213
233
  const rawText = ctx.SelectBlock[0].image;
214
234
  const rawConstraint = unescapeConstraint(rawText.slice(1, -1).trim());
215
235
  return {
216
236
  kind: 'SubObject',
217
- base: this.visit(ctx.base),
218
- constraint: parseConstraint(rawConstraint),
237
+ base,
238
+ constraint: {
239
+ type: 'NaturalLanguage',
240
+ raw: rawConstraint,
241
+ parts: parseConstraint(rawConstraint).parts,
242
+ },
219
243
  };
220
244
  }
221
245
  importDeclaration(ctx) {
@@ -245,26 +269,13 @@ export class SpexParserVisitor extends BaseSpexVisitor {
245
269
  alias,
246
270
  };
247
271
  }
248
- exportDeclaration(ctx) {
249
- return {
250
- kind: 'ExportDeclaration',
251
- name: ctx.Identifier[0].image,
252
- };
253
- }
254
- packageDeclaration(ctx) {
255
- const packageType = ctx.ExecutableTok ? 'EXECUTABLE' : 'MODULE';
256
- return {
257
- kind: 'PackageDeclaration',
258
- packageType,
259
- name: ctx.Identifier[0].image,
260
- objectName: this.visit(ctx.setObject),
261
- environment: this.visit(ctx.environment),
262
- };
263
- }
264
272
  generateDeclaration(ctx) {
265
273
  return {
266
274
  kind: 'GenerateDeclaration',
267
275
  name: ctx.Identifier[0].image,
276
+ environment: ctx.environment
277
+ ? this.visit(ctx.environment)
278
+ : { kind: 'NamedObject', name: 'environment' },
268
279
  };
269
280
  }
270
281
  realizeDeclaration(ctx) {
@@ -286,52 +297,6 @@ export class SpexParserVisitor extends BaseSpexVisitor {
286
297
  address,
287
298
  };
288
299
  }
289
- lambdaObject(ctx) {
290
- const image = ctx.CodeBlock[0].image;
291
- const firstNewline = image.indexOf('\n');
292
- const langEnd = image.indexOf('\n');
293
- const language = image.slice(3, langEnd);
294
- const body = image.slice(firstNewline + 1, -3).trimEnd();
295
- const patterns = [];
296
- let i = 0;
297
- while (i < body.length) {
298
- if (body[i] === '@' && body[i + 1] === '{') {
299
- const start = i;
300
- let depth = 1;
301
- i += 2;
302
- while (i < body.length && depth > 0) {
303
- if (body[i] === '\\') {
304
- i += 2;
305
- continue;
306
- }
307
- if (body[i] === '{')
308
- depth++;
309
- if (body[i] === '}')
310
- depth--;
311
- i++;
312
- }
313
- const end = i;
314
- const raw = body.slice(start + 2, end - 1).trim();
315
- patterns.push({
316
- raw,
317
- parts: parseConstraint(raw).parts,
318
- start,
319
- end,
320
- });
321
- }
322
- else {
323
- i++;
324
- }
325
- }
326
- return {
327
- kind: 'ExponentialPattern',
328
- base: this.visit(ctx.exponent),
329
- exponent: this.visit(ctx.base),
330
- language,
331
- body,
332
- patterns,
333
- };
334
- }
335
300
  }
336
301
  export function parseToAst(text) {
337
302
  const lexingResult = SpexLexer.tokenize(text);
@@ -1 +1 @@
1
- {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "spex-parser",
3
3
  "repository": "github:Freelansys/spex-parser",
4
- "version": "0.6.2",
4
+ "version": "0.7.0",
5
5
  "description": "A parser for Spex, a language designed for programming with LLMs",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
package/src/ast.ts CHANGED
@@ -6,22 +6,10 @@ export type SpexFile = {
6
6
  export type Declaration =
7
7
  | ObjectDeclaration
8
8
  | ImportDeclaration
9
- | ExportDeclaration
10
9
  | GenerateDeclaration
11
- | PackageDeclaration
12
10
  | RealizeDeclaration
13
11
  | IncludeDeclaration
14
12
 
15
- export type PackageKind = 'EXECUTABLE' | 'MODULE'
16
-
17
- export type PackageDeclaration = {
18
- kind: 'PackageDeclaration'
19
- packageType: PackageKind
20
- name: string
21
- objectName: ObjectExpression
22
- environment: ObjectExpression
23
- }
24
-
25
13
  export type ObjectDeclaration = {
26
14
  kind: 'ObjectDeclaration'
27
15
  name: string
@@ -35,14 +23,14 @@ export type ImportDeclaration = {
35
23
  alias: string | null
36
24
  }
37
25
 
38
- export type ExportDeclaration = {
39
- kind: 'ExportDeclaration'
40
- name: string
41
- }
42
-
26
+ // A `generate` command asks the compiler to produce realizations of the named
27
+ // concept or artifact. Without an environment, realizations are produced in
28
+ // every environment in which the object is realized; the optional `in` clause
29
+ // focuses generation on a single environment.
43
30
  export type GenerateDeclaration = {
44
31
  kind: 'GenerateDeclaration'
45
32
  name: string
33
+ environment: ObjectExpression
46
34
  }
47
35
 
48
36
  export type RealizeDeclaration = {
@@ -64,12 +52,10 @@ export type ObjectExpression =
64
52
  | ExponentialObject
65
53
  | SubObject
66
54
  | ArrayObject
67
- | EnumObject
68
55
  | LiteralObject
69
56
  | SetObject
70
57
  | CoproductObject
71
58
  | PatternLiteralObject
72
- | ExponentialPattern
73
59
 
74
60
  export type NamedObject = {
75
61
  kind: 'NamedObject'
@@ -87,8 +73,11 @@ export type ExponentialObject = {
87
73
  exponent: ObjectExpression
88
74
  }
89
75
 
90
- export type ConstraintReference = {
91
- kind: 'ConstraintReference'
76
+ // A `@ref` directive in a constraint brings the named object into the
77
+ // generation context. It applies to natural-language, structured, and code
78
+ // constraints alike.
79
+ export type ReferenceDirective = {
80
+ kind: 'ReferenceDirective'
92
81
  name: string
93
82
  }
94
83
 
@@ -97,17 +86,43 @@ export type ConstraintText = {
97
86
  text: string
98
87
  }
99
88
 
100
- export type ConstraintPart = ConstraintReference | ConstraintText
89
+ export type ConstraintPart = ReferenceDirective | ConstraintText
101
90
 
91
+ // A constraint with its `@ref` directives parsed out into parts.
102
92
  export type Constraint = {
103
93
  raw: string
104
94
  parts: ConstraintPart[]
105
95
  }
106
96
 
97
+ // Subobjects refine an object by selecting members that satisfy a
98
+ // constraint. Base objects are constrained in three ways:
99
+ // - natural language: SELECT { ... }
100
+ // - structured: SELECT ``` ... ```
101
+ // - code: SELECT ```lang ... ```
102
+ export type ConstraintType = 'NaturalLanguage' | 'Structured' | 'Code'
103
+
104
+ export type SubObjectConstraint =
105
+ | {
106
+ type: 'NaturalLanguage'
107
+ raw: string
108
+ parts: ConstraintPart[]
109
+ }
110
+ | {
111
+ type: 'Structured'
112
+ raw: string
113
+ parts: ConstraintPart[]
114
+ }
115
+ | {
116
+ type: 'Code'
117
+ language: string
118
+ body: string
119
+ parts: ConstraintPart[]
120
+ }
121
+
107
122
  export type SubObject = {
108
123
  kind: 'SubObject'
109
124
  base: ObjectExpression
110
- constraint: Constraint
125
+ constraint: SubObjectConstraint
111
126
  }
112
127
 
113
128
  export type ArrayObject = {
@@ -115,11 +130,6 @@ export type ArrayObject = {
115
130
  base: ObjectExpression
116
131
  }
117
132
 
118
- export type EnumObject = {
119
- kind: 'EnumObject'
120
- values: string[]
121
- }
122
-
123
133
  export type LiteralObject = StringLiteralObject | NumberLiteralObject | BoolLiteralObject
124
134
 
125
135
  export type StringLiteralObject = {
@@ -170,19 +180,3 @@ export type PatternLiteralObject = {
170
180
  source: string
171
181
  flags: string
172
182
  }
173
-
174
- export type PatternBlock = {
175
- raw: string
176
- parts: ConstraintPart[]
177
- start: number
178
- end: number
179
- }
180
-
181
- export type ExponentialPattern = {
182
- kind: 'ExponentialPattern'
183
- base: ObjectExpression
184
- exponent: ObjectExpression
185
- language: string
186
- body: string
187
- patterns: PatternBlock[]
188
- }
package/src/index.ts CHANGED
@@ -8,17 +8,13 @@ export type {
8
8
  Declaration,
9
9
  ObjectDeclaration,
10
10
  ImportDeclaration,
11
- ExportDeclaration,
12
- EnumObject,
13
11
  GenerateDeclaration,
14
- PackageDeclaration,
15
12
  RealizeDeclaration,
16
13
  IncludeDeclaration,
17
14
  ObjectExpression,
18
15
  NamedObject,
19
16
  ProductObject,
20
17
  ExponentialObject,
21
- ExponentialPattern,
22
18
  SubObject,
23
19
  ArrayObject,
24
20
  LiteralObject,
@@ -31,10 +27,10 @@ export type {
31
27
  SetDifferenceObject,
32
28
  CoproductObject,
33
29
  PatternLiteralObject,
34
- PatternBlock,
35
- PackageKind,
36
30
  Constraint,
31
+ ConstraintType,
32
+ SubObjectConstraint,
37
33
  ConstraintPart,
38
- ConstraintReference,
34
+ ReferenceDirective,
39
35
  ConstraintText,
40
36
  } from './ast.js'
package/src/lexer.ts CHANGED
@@ -43,26 +43,6 @@ export const ImportTok = createToken({
43
43
  name: 'ImportTok',
44
44
  pattern: /import\b/i,
45
45
  })
46
- export const ExportTok = createToken({
47
- name: 'ExportTok',
48
- pattern: /export\b/i,
49
- })
50
- export const PackageTok = createToken({
51
- name: 'PackageTok',
52
- pattern: /package\b/i,
53
- })
54
- export const ExecutableTok = createToken({
55
- name: 'ExecutableTok',
56
- pattern: /executable\b/i,
57
- })
58
- export const ModuleTok = createToken({
59
- name: 'ModuleTok',
60
- pattern: /module\b/i,
61
- })
62
- export const EnumTok = createToken({
63
- name: 'EnumTok',
64
- pattern: /enum\b/i,
65
- })
66
46
  export const UnionTok = createToken({
67
47
  name: 'UnionTok',
68
48
  pattern: /union\b/i,
@@ -87,10 +67,6 @@ export const IncludeTok = createToken({
87
67
  name: 'IncludeTok',
88
68
  pattern: /include\b/i,
89
69
  })
90
- export const LambdaTok = createToken({
91
- name: 'LambdaTok',
92
- pattern: /lambda\b/i,
93
- })
94
70
 
95
71
  // Symbols
96
72
  export const ArrowTok = createToken({ name: 'ArrowTok', pattern: /->/ })
@@ -155,7 +131,7 @@ export const PatternLiteral = createToken({
155
131
  },
156
132
  })
157
133
 
158
- // Code block: ```language\n...content...```
134
+ // Code block: ```\n...content...``` or ```language\n...content...```
159
135
  export const CodeBlock = createToken({
160
136
  name: 'CodeBlock',
161
137
  line_breaks: true,
@@ -163,11 +139,11 @@ export const CodeBlock = createToken({
163
139
  if (text[startOffset] !== '`' || text[startOffset + 1] !== '`' || text[startOffset + 2] !== '`')
164
140
  return null
165
141
  let i = startOffset + 3
166
- // require at least one language identifier character
167
- if (i >= text.length || !/[a-zA-Z0-9_]/.test(text[i]!)) return null
142
+ // optional language identifier on the opening fence line
168
143
  const langStart = i
169
144
  while (i < text.length && text[i] !== '\n' && text[i] !== '\r') i++
170
- if (i === langStart) return null // no language identifier
145
+ const language = text.slice(langStart, i).trim()
146
+ if (language !== '' && !/^[a-zA-Z0-9_]+$/.test(language)) return null
171
147
  if (i >= text.length) return null
172
148
  // skip line ending
173
149
  if (text[i] === '\r' && text[i + 1] === '\n') i += 2
@@ -205,6 +181,20 @@ export const FalseTok = createToken({
205
181
  pattern: /false\b/i,
206
182
  })
207
183
 
184
+ // Base objects (native types)
185
+ export const ArtifactTok = createToken({
186
+ name: 'ArtifactTok',
187
+ pattern: /artifact\b/i,
188
+ })
189
+ export const ConceptTok = createToken({
190
+ name: 'ConceptTok',
191
+ pattern: /concept\b/i,
192
+ })
193
+ export const EnvironmentTok = createToken({
194
+ name: 'EnvironmentTok',
195
+ pattern: /environment\b/i,
196
+ })
197
+
208
198
  // Basic objects (native types)
209
199
  export const StringTok = createToken({
210
200
  name: 'StringTok',
@@ -222,14 +212,6 @@ export const UnitTok = createToken({
222
212
  name: 'UnitTok',
223
213
  pattern: /unit\b/i,
224
214
  })
225
- export const ConceptTok = createToken({
226
- name: 'ConceptTok',
227
- pattern: /concept\b/i,
228
- })
229
- export const EnvironmentTok = createToken({
230
- name: 'EnvironmentTok',
231
- pattern: /environment\b/i,
232
- })
233
215
 
234
216
  // Identifiers
235
217
  export const Identifier = createToken({
@@ -248,18 +230,12 @@ export const allTokens = [
248
230
  SelectTok,
249
231
  GenerateTok,
250
232
  ImportTok,
251
- ExportTok,
252
- PackageTok,
253
- ExecutableTok,
254
- ModuleTok,
255
- EnumTok,
256
233
  UnionTok,
257
234
  IntersectTok,
258
235
  ExceptTok,
259
236
  RealizeTok,
260
237
  InTok,
261
238
  IncludeTok,
262
- LambdaTok,
263
239
 
264
240
  ArrowTok,
265
241
  PipeTok,
@@ -281,12 +257,13 @@ export const allTokens = [
281
257
  PatternLiteral,
282
258
  CodeBlock,
283
259
 
260
+ ArtifactTok,
261
+ ConceptTok,
262
+ EnvironmentTok,
284
263
  StringTok,
285
264
  NumberTok,
286
265
  BoolTok,
287
266
  UnitTok,
288
- ConceptTok,
289
- EnvironmentTok,
290
267
 
291
268
  Identifier,
292
269
  ]