@intend-it/parser 1.1.1 → 1.1.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 (2) hide show
  1. package/dist/index.js +23 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -9167,6 +9167,7 @@ var Is = createToken({ name: "Is", pattern: /is/ });
9167
9167
  var Defined = createToken({ name: "Defined", pattern: /defined/ });
9168
9168
  var Entry = createToken({ name: "Entry", pattern: /entry/ });
9169
9169
  var Let = createToken({ name: "Let", pattern: /let/ });
9170
+ var Return = createToken({ name: "Return", pattern: /return/ });
9170
9171
  var LCurly = createToken({ name: "LCurly", pattern: /{/ });
9171
9172
  var RCurly = createToken({ name: "RCurly", pattern: /}/ });
9172
9173
  var LParen = createToken({ name: "LParen", pattern: /\(/ });
@@ -9207,6 +9208,7 @@ var allTokens = [
9207
9208
  Defined,
9208
9209
  Entry,
9209
9210
  Let,
9211
+ Return,
9210
9212
  Arrow,
9211
9213
  FatArrow,
9212
9214
  GreaterThanEquals,
@@ -9311,7 +9313,8 @@ class IntendParser extends CstParser {
9311
9313
  this.OR([
9312
9314
  { ALT: () => this.SUBRULE(this.invariantStatement) },
9313
9315
  { ALT: () => this.SUBRULE(this.stepStatement) },
9314
- { ALT: () => this.SUBRULE(this.ensureStatement) }
9316
+ { ALT: () => this.SUBRULE(this.ensureStatement) },
9317
+ { ALT: () => this.SUBRULE(this.returnStatement) }
9315
9318
  ]);
9316
9319
  });
9317
9320
  invariantStatement = this.RULE("invariantStatement", () => {
@@ -9347,6 +9350,13 @@ class IntendParser extends CstParser {
9347
9350
  ]);
9348
9351
  });
9349
9352
  });
9353
+ returnStatement = this.RULE("returnStatement", () => {
9354
+ this.CONSUME(Return);
9355
+ this.CONSUME(Identifier);
9356
+ this.OPTION(() => {
9357
+ this.CONSUME(Semicolon);
9358
+ });
9359
+ });
9350
9360
  }
9351
9361
 
9352
9362
  // src/ast/visitor.ts
@@ -9410,6 +9420,7 @@ class IntendASTVisitor extends BaseIntendVisitor {
9410
9420
  const invariants = [];
9411
9421
  const steps = [];
9412
9422
  const ensures = [];
9423
+ let returnStmt;
9413
9424
  if (ctx.statement) {
9414
9425
  ctx.statement.forEach((stmt) => {
9415
9426
  const result = this.visit(stmt);
@@ -9419,10 +9430,12 @@ class IntendASTVisitor extends BaseIntendVisitor {
9419
9430
  steps.push(result);
9420
9431
  } else if (result.type === "Ensure") {
9421
9432
  ensures.push(result);
9433
+ } else if (result.type === "Return") {
9434
+ returnStmt = result;
9422
9435
  }
9423
9436
  });
9424
9437
  }
9425
- return { invariants, steps, ensures };
9438
+ return { invariants, steps, ensures, returnStmt };
9426
9439
  }
9427
9440
  statement(ctx) {
9428
9441
  if (ctx.invariantStatement) {
@@ -9431,6 +9444,8 @@ class IntendASTVisitor extends BaseIntendVisitor {
9431
9444
  return this.visit(ctx.stepStatement);
9432
9445
  } else if (ctx.ensureStatement) {
9433
9446
  return this.visit(ctx.ensureStatement);
9447
+ } else if (ctx.returnStatement) {
9448
+ return this.visit(ctx.returnStatement);
9434
9449
  }
9435
9450
  throw new Error("Unknown statement type");
9436
9451
  }
@@ -9454,6 +9469,12 @@ class IntendASTVisitor extends BaseIntendVisitor {
9454
9469
  variableKind
9455
9470
  };
9456
9471
  }
9472
+ returnStatement(ctx) {
9473
+ return {
9474
+ type: "Return",
9475
+ identifier: ctx.Identifier[0].image
9476
+ };
9477
+ }
9457
9478
  ensureStatement(ctx) {
9458
9479
  const tokens = [
9459
9480
  ...ctx.Identifier || [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intend-it/parser",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Parser for the Intend programming language",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",