@stevenvo780/st-lang 3.1.0 → 3.1.1

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 (55) hide show
  1. package/dist/api.d.ts.map +1 -1
  2. package/dist/api.js +44 -9
  3. package/dist/api.js.map +1 -1
  4. package/dist/parser/parser.d.ts +4 -0
  5. package/dist/parser/parser.d.ts.map +1 -1
  6. package/dist/parser/parser.js +213 -92
  7. package/dist/parser/parser.js.map +1 -1
  8. package/dist/profiles/classical/first-order.d.ts.map +1 -1
  9. package/dist/profiles/classical/first-order.js +12 -5
  10. package/dist/profiles/classical/first-order.js.map +1 -1
  11. package/dist/profiles/classical/propositional.d.ts.map +1 -1
  12. package/dist/profiles/classical/propositional.js +281 -35
  13. package/dist/profiles/classical/propositional.js.map +1 -1
  14. package/dist/profiles/shared/tableau-engine.d.ts +4 -3
  15. package/dist/profiles/shared/tableau-engine.d.ts.map +1 -1
  16. package/dist/profiles/shared/tableau-engine.js +101 -15
  17. package/dist/profiles/shared/tableau-engine.js.map +1 -1
  18. package/dist/protocol/handler.d.ts +4 -0
  19. package/dist/protocol/handler.d.ts.map +1 -1
  20. package/dist/protocol/handler.js +133 -41
  21. package/dist/protocol/handler.js.map +1 -1
  22. package/dist/repl/repl.d.ts +2 -0
  23. package/dist/repl/repl.d.ts.map +1 -1
  24. package/dist/repl/repl.js +39 -18
  25. package/dist/repl/repl.js.map +1 -1
  26. package/dist/runtime/compat.d.ts +29 -0
  27. package/dist/runtime/compat.d.ts.map +1 -0
  28. package/dist/runtime/compat.js +821 -0
  29. package/dist/runtime/compat.js.map +1 -0
  30. package/dist/runtime/interpreter.d.ts +3 -0
  31. package/dist/runtime/interpreter.d.ts.map +1 -1
  32. package/dist/runtime/interpreter.js +128 -28
  33. package/dist/runtime/interpreter.js.map +1 -1
  34. package/dist/tests/compat.test.d.ts +2 -0
  35. package/dist/tests/compat.test.d.ts.map +1 -0
  36. package/dist/tests/compat.test.js +247 -0
  37. package/dist/tests/compat.test.js.map +1 -0
  38. package/dist/tests/core.test.js +37 -0
  39. package/dist/tests/core.test.js.map +1 -1
  40. package/dist/tests/parser.test.js +38 -0
  41. package/dist/tests/parser.test.js.map +1 -1
  42. package/dist/tests/profiles.test.js +8 -0
  43. package/dist/tests/profiles.test.js.map +1 -1
  44. package/dist/tests/protocol-text-layer.test.d.ts +2 -0
  45. package/dist/tests/protocol-text-layer.test.d.ts.map +1 -0
  46. package/dist/tests/protocol-text-layer.test.js +54 -0
  47. package/dist/tests/protocol-text-layer.test.js.map +1 -0
  48. package/dist/text-layer/compiler.d.ts.map +1 -1
  49. package/dist/text-layer/compiler.js +35 -8
  50. package/dist/text-layer/compiler.js.map +1 -1
  51. package/dist/types/index.d.ts +27 -1
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/index.js +7 -0
  54. package/dist/types/index.js.map +1 -1
  55. package/package.json +2 -2
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -21,6 +21,7 @@ exports.completion = completion;
21
21
  exports.render = render;
22
22
  const parser_1 = require("./parser/parser");
23
23
  const interpreter_1 = require("./runtime/interpreter");
24
+ const compat_1 = require("./runtime/compat");
24
25
  const handler_1 = require("./protocol/handler");
25
26
  const interface_1 = require("./profiles/interface");
26
27
  // ── Funciones estateless (una sola invocación) ────────────────
@@ -97,23 +98,57 @@ function quickEval(expression) {
97
98
  function createInterpreter() {
98
99
  const inner = new interpreter_1.Interpreter();
99
100
  const history = [];
101
+ const replCompatState = (0, compat_1.createReplCompatState)();
102
+ const collectKnownPremises = () => {
103
+ const theory = inner.getTheory();
104
+ return Array.from(new Set([
105
+ ...inner.getLetBindings().keys(),
106
+ ...theory.axioms.keys(),
107
+ ...theory.theorems.keys(),
108
+ ]));
109
+ };
110
+ const toResult = (output) => ({
111
+ ok: output.exitCode === 0,
112
+ stdout: output.stdout,
113
+ stderr: output.stderr,
114
+ exitCode: output.exitCode,
115
+ results: output.results,
116
+ diagnostics: output.diagnostics,
117
+ });
100
118
  return {
101
119
  exec(source) {
102
- const output = inner.executeSingle(source);
103
- const result = {
104
- ok: output.exitCode === 0,
105
- stdout: output.stdout,
106
- stderr: output.stderr,
107
- exitCode: output.exitCode,
108
- results: output.results,
109
- diagnostics: output.diagnostics,
110
- };
120
+ const transformed = (0, compat_1.transformReplInput)(source, replCompatState, {
121
+ knownPremises: collectKnownPremises(),
122
+ });
123
+ let output;
124
+ if (transformed.kind === 'buffered') {
125
+ output = {
126
+ stdout: transformed.message,
127
+ stderr: '',
128
+ exitCode: 0,
129
+ diagnostics: [],
130
+ results: [],
131
+ };
132
+ }
133
+ else if (transformed.kind === 'execute') {
134
+ output = inner.execute(transformed.source, '<repl>');
135
+ }
136
+ else {
137
+ output = inner.executeSingle(transformed.source);
138
+ }
139
+ const result = toResult(output);
111
140
  history.push(result);
112
141
  return result;
113
142
  },
114
143
  reset() {
115
144
  inner.reset();
116
145
  history.length = 0;
146
+ replCompatState.nextId = 1;
147
+ replCompatState.pendingPremises = [];
148
+ replCompatState.pendingBlockLines = [];
149
+ replCompatState.pendingBlockBraceDepth = 0;
150
+ replCompatState.pendingBlockProofDepth = 0;
151
+ replCompatState.pendingBlockProofAwaitingShow = [];
117
152
  },
118
153
  getProfile() {
119
154
  const p = inner.getProfile();
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare class Parser {
8
8
  private pos;
9
9
  private file;
10
10
  diagnostics: Diagnostic[];
11
+ private contextStack;
11
12
  private knownFunctionNames;
12
13
  private knownTheoryNames;
13
14
  private currentProfile;
@@ -85,6 +86,9 @@ export declare class Parser {
85
86
  * (para soportar nombres como "Logic", "Theory", etc. que colisionan con keywords)
86
87
  */
87
88
  private expectName;
89
+ private contextualize;
90
+ private withContext;
91
+ private describeStatementContext;
88
92
  private loc;
89
93
  private skipNewlines;
90
94
  private advanceToNextStatement;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAW,UAAU,EAAkB,MAAM,UAAU,CAAC;AAC/D,OAAO,EACL,OAAO,EA0CR,MAAM,cAAc,CAAC;AAatB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,IAAI,CAAS;IACd,WAAW,EAAE,UAAU,EAAE,CAAM;IACtC,OAAO,CAAC,kBAAkB,CAUvB;IACH,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,cAAc,CAAqB;gBAE/B,IAAI,GAAE,MAAkB,EAAE,OAAO,CAAC,EAAE,MAAM;IAKtD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmC9B,OAAO,CAAC,cAAc;IAsGtB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IA0EpB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,eAAe;IA+DvB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,SAAS;IA4MjB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,eAAe;IA0EvB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,sBAAsB;CAoD/B"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Parser = void 0;
7
7
  const tokens_1 = require("../lexer/tokens");
8
8
  const lexer_1 = require("../lexer/lexer");
9
+ const compat_1 = require("../runtime/compat");
9
10
  // Modal aliases per profile: maps identifier names to modal formula types
10
11
  const MODAL_ALIASES = {
11
12
  'deontic.standard': { O: 'box', P: 'diamond', F: 'box_not' },
@@ -21,6 +22,7 @@ class Parser {
21
22
  pos = 0;
22
23
  file;
23
24
  diagnostics = [];
25
+ contextStack = [];
24
26
  knownFunctionNames = new Set([
25
27
  'typeof',
26
28
  'is_valid',
@@ -40,10 +42,12 @@ class Parser {
40
42
  this.initialProfile = profile;
41
43
  }
42
44
  parse(source) {
43
- const lexer = new lexer_1.Lexer(source, this.file, this.initialProfile);
45
+ const normalizedSource = (0, compat_1.normalizeSTSource)(source);
46
+ const lexer = new lexer_1.Lexer(normalizedSource, this.file, this.initialProfile);
44
47
  this.tokens = lexer.tokenize();
45
48
  this.diagnostics.push(...lexer.diagnostics);
46
49
  this.pos = 0;
50
+ this.contextStack = [];
47
51
  const statements = [];
48
52
  while (!this.isAtEnd()) {
49
53
  this.skipNewlines();
@@ -75,93 +79,95 @@ class Parser {
75
79
  // Detección de llamada a función: nombre(...)
76
80
  if (this.peek(1) === tokens_1.TokenType.LPAREN &&
77
81
  (tok.type === tokens_1.TokenType.IDENTIFIER || this.knownFunctionNames.has(tok.value))) {
78
- return this.parseFnCall();
82
+ return this.withContext(`llamada a funcion '${tok.value}'`, () => this.parseFnCall());
79
83
  }
80
84
  // Detección de llamada a método: objeto.metodo(...)
81
85
  if (tok.type === tokens_1.TokenType.IDENTIFIER &&
82
86
  this.peek(1) === tokens_1.TokenType.DOT &&
83
87
  this.peek(2) === tokens_1.TokenType.IDENTIFIER &&
84
88
  this.peek(3) === tokens_1.TokenType.LPAREN) {
85
- return this.parseMemberFnCall();
86
- }
87
- switch (tok.type) {
88
- case tokens_1.TokenType.LOGIC:
89
- return this.parseLogicDecl();
90
- case tokens_1.TokenType.AXIOM:
91
- return this.parseAxiomDecl();
92
- case tokens_1.TokenType.THEOREM:
93
- return this.parseTheoremDecl();
94
- case tokens_1.TokenType.DERIVE:
95
- return this.parseDeriveCmd();
96
- case tokens_1.TokenType.CHECK:
97
- return this.parseCheckCmd();
98
- case tokens_1.TokenType.PROVE:
99
- return this.parseProveCmd();
100
- case tokens_1.TokenType.COUNTERMODEL:
101
- case tokens_1.TokenType.REFUTE:
102
- return this.parseCountermodelCmd();
103
- case tokens_1.TokenType.TRUTH_TABLE:
104
- return this.parseTruthTableCmd();
105
- case tokens_1.TokenType.LET:
106
- return this.parseLetDecl();
107
- case tokens_1.TokenType.CLAIM:
108
- return this.parseClaimDecl();
109
- case tokens_1.TokenType.SUPPORT:
110
- return this.parseSupportDecl();
111
- case tokens_1.TokenType.CONFIDENCE:
112
- return this.parseConfidenceDecl();
113
- case tokens_1.TokenType.CONTEXT:
114
- return this.parseContextDecl();
115
- case tokens_1.TokenType.RENDER:
116
- return this.parseRenderCmd();
117
- case tokens_1.TokenType.ANALYZE:
118
- return this.parseAnalyzeCmd();
119
- case tokens_1.TokenType.EXPLAIN:
120
- return this.parseExplainCmd();
121
- case tokens_1.TokenType.IMPORT:
122
- return this.parseImportDecl();
123
- case tokens_1.TokenType.ASSUME:
124
- return this.parseProofBlock();
125
- case tokens_1.TokenType.THEORY:
126
- return this.parseTheoryDecl();
127
- case tokens_1.TokenType.PRINT:
128
- return this.parsePrintCmd();
129
- case tokens_1.TokenType.SET:
130
- return this.parseSetCmd();
131
- case tokens_1.TokenType.IF:
132
- return this.parseIfStmt();
133
- case tokens_1.TokenType.FOR:
134
- return this.parseForStmt();
135
- case tokens_1.TokenType.WHILE:
136
- return this.parseWhileStmt();
137
- case tokens_1.TokenType.FN:
138
- return this.parseFnDecl();
139
- case tokens_1.TokenType.RETURN:
140
- return this.parseReturnStmt();
141
- case tokens_1.TokenType.EXPORT:
142
- return this.parseExportDecl();
143
- case tokens_1.TokenType.DEFINE:
144
- return this.parseDefineDecl();
145
- case tokens_1.TokenType.UNFOLD:
146
- return this.parseUnfoldCmd();
147
- case tokens_1.TokenType.FOLD:
148
- return this.parseFoldCmd();
149
- case tokens_1.TokenType.SOURCE_KW:
150
- return this.parseSourceDecl();
151
- case tokens_1.TokenType.INTERPRET:
152
- return this.parseInterpretCmd();
153
- case tokens_1.TokenType.GLOSSARY:
154
- return this.parseGlossaryCmd();
155
- case tokens_1.TokenType.IDENTIFIER:
156
- throw new Error(`Statement inesperado: '${tok.value}' (${tok.type})`);
157
- case tokens_1.TokenType.NEWLINE:
158
- this.advance();
159
- return null;
160
- case tokens_1.TokenType.EOF:
161
- return null;
162
- default:
163
- throw new Error(`Statement inesperado: '${tok.value}' (${tok.type})`);
164
- }
89
+ return this.withContext(`llamada a metodo '${tok.value}'`, () => this.parseMemberFnCall());
90
+ }
91
+ return this.withContext(this.describeStatementContext(tok), () => {
92
+ switch (tok.type) {
93
+ case tokens_1.TokenType.LOGIC:
94
+ return this.parseLogicDecl();
95
+ case tokens_1.TokenType.AXIOM:
96
+ return this.parseAxiomDecl();
97
+ case tokens_1.TokenType.THEOREM:
98
+ return this.parseTheoremDecl();
99
+ case tokens_1.TokenType.DERIVE:
100
+ return this.parseDeriveCmd();
101
+ case tokens_1.TokenType.CHECK:
102
+ return this.parseCheckCmd();
103
+ case tokens_1.TokenType.PROVE:
104
+ return this.parseProveCmd();
105
+ case tokens_1.TokenType.COUNTERMODEL:
106
+ case tokens_1.TokenType.REFUTE:
107
+ return this.parseCountermodelCmd();
108
+ case tokens_1.TokenType.TRUTH_TABLE:
109
+ return this.parseTruthTableCmd();
110
+ case tokens_1.TokenType.LET:
111
+ return this.parseLetDecl();
112
+ case tokens_1.TokenType.CLAIM:
113
+ return this.parseClaimDecl();
114
+ case tokens_1.TokenType.SUPPORT:
115
+ return this.parseSupportDecl();
116
+ case tokens_1.TokenType.CONFIDENCE:
117
+ return this.parseConfidenceDecl();
118
+ case tokens_1.TokenType.CONTEXT:
119
+ return this.parseContextDecl();
120
+ case tokens_1.TokenType.RENDER:
121
+ return this.parseRenderCmd();
122
+ case tokens_1.TokenType.ANALYZE:
123
+ return this.parseAnalyzeCmd();
124
+ case tokens_1.TokenType.EXPLAIN:
125
+ return this.parseExplainCmd();
126
+ case tokens_1.TokenType.IMPORT:
127
+ return this.parseImportDecl();
128
+ case tokens_1.TokenType.ASSUME:
129
+ return this.parseProofBlock();
130
+ case tokens_1.TokenType.THEORY:
131
+ return this.parseTheoryDecl();
132
+ case tokens_1.TokenType.PRINT:
133
+ return this.parsePrintCmd();
134
+ case tokens_1.TokenType.SET:
135
+ return this.parseSetCmd();
136
+ case tokens_1.TokenType.IF:
137
+ return this.parseIfStmt();
138
+ case tokens_1.TokenType.FOR:
139
+ return this.parseForStmt();
140
+ case tokens_1.TokenType.WHILE:
141
+ return this.parseWhileStmt();
142
+ case tokens_1.TokenType.FN:
143
+ return this.parseFnDecl();
144
+ case tokens_1.TokenType.RETURN:
145
+ return this.parseReturnStmt();
146
+ case tokens_1.TokenType.EXPORT:
147
+ return this.parseExportDecl();
148
+ case tokens_1.TokenType.DEFINE:
149
+ return this.parseDefineDecl();
150
+ case tokens_1.TokenType.UNFOLD:
151
+ return this.parseUnfoldCmd();
152
+ case tokens_1.TokenType.FOLD:
153
+ return this.parseFoldCmd();
154
+ case tokens_1.TokenType.SOURCE_KW:
155
+ return this.parseSourceDecl();
156
+ case tokens_1.TokenType.INTERPRET:
157
+ return this.parseInterpretCmd();
158
+ case tokens_1.TokenType.GLOSSARY:
159
+ return this.parseGlossaryCmd();
160
+ case tokens_1.TokenType.IDENTIFIER:
161
+ throw new Error(this.contextualize(`Statement inesperado: '${tok.value}' (${tok.type})`));
162
+ case tokens_1.TokenType.NEWLINE:
163
+ this.advance();
164
+ return null;
165
+ case tokens_1.TokenType.EOF:
166
+ return null;
167
+ default:
168
+ throw new Error(this.contextualize(`Statement inesperado: '${tok.value}' (${tok.type})`));
169
+ }
170
+ });
165
171
  }
166
172
  // logic classical.propositional
167
173
  parseLogicDecl() {
@@ -547,12 +553,14 @@ class Parser {
547
553
  if (this.checkType(tokens_1.TokenType.QED))
548
554
  break;
549
555
  try {
550
- const stmt = this.parseStatement();
556
+ const stmt = this.checkType(tokens_1.TokenType.ASSUME)
557
+ ? this.parseProofBlock()
558
+ : this.parseStatement();
551
559
  if (stmt)
552
560
  body.push(stmt);
553
561
  }
554
562
  catch (e) {
555
- const message = e instanceof Error ? e.message : 'Error de parseo';
563
+ const message = e instanceof Error ? e.message : 'Error de parseo en bloque de prueba';
556
564
  this.diagnostics.push({
557
565
  severity: 'error',
558
566
  message,
@@ -563,6 +571,9 @@ class Parser {
563
571
  this.advanceToNextStatement();
564
572
  }
565
573
  }
574
+ if (this.isAtEnd()) {
575
+ throw new Error(`Se esperaba 'qed' para cerrar el bloque de prueba abierto en linea ${src.line}, columna ${src.column}`);
576
+ }
566
577
  this.expect(tokens_1.TokenType.QED);
567
578
  return { kind: 'proof_block', assumptions, goal, body, source: src };
568
579
  }
@@ -1428,8 +1439,8 @@ class Parser {
1428
1439
  if (this.checkType(type)) {
1429
1440
  return this.advance();
1430
1441
  }
1431
- throw new Error(`Se esperaba ${type}, encontrado '${this.current().value}' (${this.current().type}) ` +
1432
- `en linea ${this.current().line}, columna ${this.current().column}`);
1442
+ throw new Error(this.contextualize(`Se esperaba ${type}, encontrado '${this.current().value}' (${this.current().type}) ` +
1443
+ `en linea ${this.current().line}, columna ${this.current().column}`));
1433
1444
  }
1434
1445
  expectOneOf(...types) {
1435
1446
  for (const type of types) {
@@ -1437,8 +1448,8 @@ class Parser {
1437
1448
  return this.advance();
1438
1449
  }
1439
1450
  }
1440
- throw new Error(`Se esperaba ${types.join(' o ')}, encontrado '${this.current().value}' (${this.current().type}) ` +
1441
- `en linea ${this.current().line}, columna ${this.current().column}`);
1451
+ throw new Error(this.contextualize(`Se esperaba ${types.join(' o ')}, encontrado '${this.current().value}' (${this.current().type}) ` +
1452
+ `en linea ${this.current().line}, columna ${this.current().column}`));
1442
1453
  }
1443
1454
  expectIdent() {
1444
1455
  const tok = this.expect(tokens_1.TokenType.IDENTIFIER);
@@ -1474,8 +1485,95 @@ class Parser {
1474
1485
  this.advance();
1475
1486
  return tok.value;
1476
1487
  }
1477
- throw new Error(`Se esperaba nombre/identificador, encontrado '${tok.value}' (${tok.type}) ` +
1478
- `en linea ${tok.line}, columna ${tok.column}`);
1488
+ throw new Error(this.contextualize(`Se esperaba nombre/identificador, encontrado '${tok.value}' (${tok.type}) ` +
1489
+ `en linea ${tok.line}, columna ${tok.column}`));
1490
+ }
1491
+ contextualize(message) {
1492
+ if (this.contextStack.length === 0)
1493
+ return message;
1494
+ return `${message} mientras se parseaba ${this.contextStack.join(' > ')}`;
1495
+ }
1496
+ withContext(context, fn) {
1497
+ this.contextStack.push(context);
1498
+ try {
1499
+ return fn();
1500
+ }
1501
+ finally {
1502
+ this.contextStack.pop();
1503
+ }
1504
+ }
1505
+ describeStatementContext(tok) {
1506
+ switch (tok.type) {
1507
+ case tokens_1.TokenType.LOGIC:
1508
+ return 'declaracion logic';
1509
+ case tokens_1.TokenType.AXIOM:
1510
+ return 'declaracion de axioma';
1511
+ case tokens_1.TokenType.THEOREM:
1512
+ return 'declaracion de teorema';
1513
+ case tokens_1.TokenType.DERIVE:
1514
+ return 'comando derive';
1515
+ case tokens_1.TokenType.CHECK:
1516
+ return 'comando check';
1517
+ case tokens_1.TokenType.PROVE:
1518
+ return 'comando prove';
1519
+ case tokens_1.TokenType.COUNTERMODEL:
1520
+ case tokens_1.TokenType.REFUTE:
1521
+ return 'comando countermodel';
1522
+ case tokens_1.TokenType.TRUTH_TABLE:
1523
+ return 'comando truth_table';
1524
+ case tokens_1.TokenType.LET:
1525
+ return 'declaracion let';
1526
+ case tokens_1.TokenType.CLAIM:
1527
+ return 'declaracion claim';
1528
+ case tokens_1.TokenType.SUPPORT:
1529
+ return 'declaracion support';
1530
+ case tokens_1.TokenType.CONFIDENCE:
1531
+ return 'declaracion confidence';
1532
+ case tokens_1.TokenType.CONTEXT:
1533
+ return 'declaracion context';
1534
+ case tokens_1.TokenType.RENDER:
1535
+ return 'comando render';
1536
+ case tokens_1.TokenType.ANALYZE:
1537
+ return 'comando analyze';
1538
+ case tokens_1.TokenType.EXPLAIN:
1539
+ return 'comando explain';
1540
+ case tokens_1.TokenType.IMPORT:
1541
+ return 'declaracion import';
1542
+ case tokens_1.TokenType.ASSUME:
1543
+ return 'bloque de prueba';
1544
+ case tokens_1.TokenType.THEORY:
1545
+ return 'declaracion theory';
1546
+ case tokens_1.TokenType.PRINT:
1547
+ return 'comando print';
1548
+ case tokens_1.TokenType.SET:
1549
+ return 'comando set';
1550
+ case tokens_1.TokenType.IF:
1551
+ return 'sentencia if';
1552
+ case tokens_1.TokenType.FOR:
1553
+ return 'sentencia for';
1554
+ case tokens_1.TokenType.WHILE:
1555
+ return 'sentencia while';
1556
+ case tokens_1.TokenType.FN:
1557
+ return 'declaracion fn';
1558
+ case tokens_1.TokenType.RETURN:
1559
+ return 'sentencia return';
1560
+ case tokens_1.TokenType.EXPORT:
1561
+ return 'declaracion export';
1562
+ case tokens_1.TokenType.DEFINE:
1563
+ return 'declaracion define';
1564
+ case tokens_1.TokenType.UNFOLD:
1565
+ return 'comando unfold';
1566
+ case tokens_1.TokenType.FOLD:
1567
+ return 'comando fold';
1568
+ case tokens_1.TokenType.SOURCE_KW:
1569
+ return 'declaracion source';
1570
+ case tokens_1.TokenType.INTERPRET:
1571
+ return 'comando interpret';
1572
+ case tokens_1.TokenType.GLOSSARY:
1573
+ return 'comando glossary';
1574
+ default:
1575
+ return `statement '${tok.value}'`;
1576
+ }
1479
1577
  }
1480
1578
  loc() {
1481
1579
  const tok = this.current();
@@ -1527,14 +1625,37 @@ class Parser {
1527
1625
  tokens_1.TokenType.INTERPRET,
1528
1626
  tokens_1.TokenType.GLOSSARY,
1529
1627
  ]);
1628
+ let parenDepth = 0;
1629
+ let braceDepth = 0;
1630
+ let bracketDepth = 0;
1530
1631
  while (!this.isAtEnd()) {
1531
- if (this.checkType(tokens_1.TokenType.NEWLINE)) {
1632
+ if (this.checkType(tokens_1.TokenType.NEWLINE) &&
1633
+ parenDepth === 0 &&
1634
+ braceDepth === 0 &&
1635
+ bracketDepth === 0) {
1532
1636
  this.skipNewlines();
1533
1637
  return;
1534
1638
  }
1535
- if (statementStarters.has(this.current().type)) {
1639
+ if (parenDepth === 0 &&
1640
+ braceDepth === 0 &&
1641
+ bracketDepth === 0 &&
1642
+ statementStarters.has(this.current().type)) {
1536
1643
  return; // Encontramos el inicio del siguiente statement
1537
1644
  }
1645
+ if (this.checkType(tokens_1.TokenType.LPAREN))
1646
+ parenDepth += 1;
1647
+ else if (this.checkType(tokens_1.TokenType.RPAREN))
1648
+ parenDepth = Math.max(0, parenDepth - 1);
1649
+ else if (this.checkType(tokens_1.TokenType.LBRACE))
1650
+ braceDepth += 1;
1651
+ else if (this.checkType(tokens_1.TokenType.RBRACE))
1652
+ braceDepth = Math.max(0, braceDepth - 1);
1653
+ else if (this.checkType(tokens_1.TokenType.LBRACKET) || this.checkType(tokens_1.TokenType.LBRACKET_DOUBLE)) {
1654
+ bracketDepth += 1;
1655
+ }
1656
+ else if (this.checkType(tokens_1.TokenType.RBRACKET) || this.checkType(tokens_1.TokenType.RBRACKET_DOUBLE)) {
1657
+ bracketDepth = Math.max(0, bracketDepth - 1);
1658
+ }
1538
1659
  this.advance();
1539
1660
  }
1540
1661
  }