allang-compiler-base 0.0.1 → 0.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.
@@ -1,19 +1,29 @@
1
- import { token, token_type } from '../pre';
1
+ import { token } from '../pre';
2
2
  import { log } from '../../base/log';
3
3
  interface tools {
4
4
  peek(): token;
5
5
  now(): token;
6
6
  next(): token;
7
- match(data: token): boolean;
8
- match(data: token_type): boolean;
9
7
  backup(): void;
10
8
  restore(): void;
9
+ flush(): void;
10
+ add(token: token): void;
11
+ remove(): void;
12
+ get(): token[];
11
13
  }
14
+ declare function create_match(func: (tool: tools) => boolean, error: (log: log) => void): {
15
+ func: (tool: tools) => boolean;
16
+ error: (log: log) => void;
17
+ };
18
+ declare function root_match(tool: tools, log: log, parser: (token: token[][]) => Tree, ...match: {
19
+ func: ((tool: tools) => boolean);
20
+ error: (log: log) => void;
21
+ }[]): Tree;
22
+ declare function list_match(tool: tools, log: log, parser: (token: token[][]) => Tree, v?: (log: log, token: token[]) => void, ...match: {
23
+ func: ((tool: tools) => boolean);
24
+ error: (log: log) => void;
25
+ }[]): Tree;
12
26
  declare class Tree {
13
27
  }
14
- interface grammar {
15
- match(tool: tools, log: log): boolean;
16
- tree(): Tree;
17
- }
18
- export { tools, grammar, Tree };
28
+ export { tools, Tree, list_match, root_match, create_match };
19
29
  //# sourceMappingURL=grammar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../../src/core/parser/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAA;AAElC,UAAU,KAAK;IACX,IAAI,IAAG,KAAK,CAAA;IACZ,GAAG,IAAG,KAAK,CAAA;IACX,IAAI,IAAG,KAAK,CAAA;IACZ,KAAK,CAAC,IAAI,EAAC,KAAK,GAAE,OAAO,CAAA;IACzB,KAAK,CAAC,IAAI,EAAC,UAAU,GAAE,OAAO,CAAA;IAC9B,MAAM,IAAG,IAAI,CAAA;IACb,OAAO,IAAG,IAAI,CAAA;CACjB;AACD,cAAM,IAAI;CACT;AACD,UAAU,OAAO;IACb,KAAK,CAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,GAAE,OAAO,CAAA;IACjC,IAAI,IAAG,IAAI,CAAA;CACd;AACD,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAA"}
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../../src/core/parser/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAA;AAElC,UAAU,KAAK;IACX,IAAI,IAAG,KAAK,CAAA;IACZ,GAAG,IAAG,KAAK,CAAA;IACX,IAAI,IAAG,KAAK,CAAA;IACZ,MAAM,IAAG,IAAI,CAAA;IACb,OAAO,IAAG,IAAI,CAAA;IACd,KAAK,IAAG,IAAI,CAAA;IACZ,GAAG,CAAC,KAAK,EAAC,KAAK,GAAE,IAAI,CAAA;IACrB,MAAM,IAAG,IAAI,CAAA;IACb,GAAG,IAAG,KAAK,EAAE,CAAA;CAChB;AACD,iBAAS,YAAY,CAAC,IAAI,EAAC,CAAC,IAAI,EAAC,KAAK,KAAG,OAAO,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,GAAG,KAAG,IAAI,GAAE;IAAC,IAAI,EAAC,CAAC,IAAI,EAAC,KAAK,KAAG,OAAO,CAAC;IAChG,KAAK,EAAC,CAAC,GAAG,EAAC,GAAG,KAAG,IAAI,CAAA;CAAC,CAKzB;AACD,iBAAS,UAAU,CAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,MAAM,EAAC,CAAC,KAAK,EAAC,KAAK,EAAE,EAAE,KAAG,IAAI,EAAC,GAAG,KAAK,EAAC;IAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,KAAG,OAAO,CAAC,CACvG;IAAA,KAAK,EAAC,CAAC,GAAG,EAAC,GAAG,KAAG,IAAI,CAAA;CAAC,EAAE,GAAE,IAAI,CAUlC;AACD,iBAAS,UAAU,CAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,MAAM,EAAC,CAAC,KAAK,EAAC,KAAK,EAAE,EAAE,KAAG,IAAI,EAAC,CAAC,CAAC,EAAC,CAAC,GAAG,EAAC,GAAG,EAAC,KAAK,EAAC,KAAK,EAAE,KAAG,IAAI,EAClF,GAAG,KAAK,EAAC;IAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,KAAG,OAAO,CAAC,CAAC;IAAA,KAAK,EAAC,CAAC,GAAG,EAAC,GAAG,KAAG,IAAI,CAAA;CAAC,EAAE,GAAE,IAAI,CAWxF;AACD,cAAM,IAAI;CACT;AACD,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,UAAU,EAAC,UAAU,EAAC,YAAY,EAAC,CAAA"}
@@ -1,4 +1,36 @@
1
+ function create_match(func, error) {
2
+ return {
3
+ func: func,
4
+ error: error
5
+ };
6
+ }
7
+ function root_match(tool, log, parser, ...match) {
8
+ let matches = [];
9
+ for (let i = 0; i < match.length; i++) {
10
+ if (!match[i].func(tool))
11
+ match[i].error(log);
12
+ else {
13
+ matches.push(tool.get());
14
+ tool.flush();
15
+ }
16
+ }
17
+ return parser(matches);
18
+ }
19
+ function list_match(tool, log, parser, v, ...match) {
20
+ let matches = [];
21
+ for (let i = 0; i < match.length; i++) {
22
+ if (!match[i].func(tool))
23
+ match[i].error(log);
24
+ else {
25
+ matches.push(tool.get());
26
+ tool.flush();
27
+ }
28
+ }
29
+ if (v)
30
+ v(log, tool.get());
31
+ return parser(matches);
32
+ }
1
33
  class Tree {
2
34
  }
3
- export { Tree };
35
+ export { Tree, list_match, root_match, create_match };
4
36
  //# sourceMappingURL=grammar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/core/parser/grammar.ts"],"names":[],"mappings":"AAYA,MAAM,IAAI;CACT;AAKD,OAAO,EAAe,IAAI,EAAC,CAAA"}
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/core/parser/grammar.ts"],"names":[],"mappings":"AAcA,SAAS,YAAY,CAAC,IAA0B,EAAC,KAAqB;IAElE,OAAO;QACH,IAAI,EAAC,IAAI;QACT,KAAK,EAAC,KAAK;KACd,CAAA;AACL,CAAC;AACD,SAAS,UAAU,CAAC,IAAU,EAAC,GAAO,EAAC,MAA8B,EAAC,GAAG,KAC5C;IACzB,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,KAAK,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AACD,SAAS,UAAU,CAAC,IAAU,EAAC,GAAO,EAAC,MAA8B,EAAC,CAAgC,EAClF,GAAG,KAA4D;IAC/E,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,KAAK,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;IACL,CAAC;IACD,IAAG,CAAC;QAAC,CAAC,CAAC,GAAG,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACtB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AACD,MAAM,IAAI;CACT;AACD,OAAO,EAAO,IAAI,EAAC,UAAU,EAAC,UAAU,EAAC,YAAY,EAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { token, token_type, word, match_type } from './model';
1
+ import { match_type, token, token_type, word } from './model';
2
2
  import { match } from './match';
3
3
  import segment from './segment';
4
4
  declare const _default: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/pre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAC,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,OAAO,MAAM,WAAW,CAAA;;;;;;;;AAC/B,wBAMC;AACD,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAE,KAAK,EAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/pre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,OAAO,MAAM,WAAW,CAAA;;;;;;;;AAE/B,wBAMC;AACD,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAE,KAAK,EAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { token, token_type, word, match_type } from './model';
1
+ import { match_type, token, token_type, word } from './model';
2
2
  import { match } from './match';
3
3
  import segment from './segment';
4
4
  export default {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/pre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAC,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,eAAe;IACX,OAAO,EAAC,OAAO;IACf,KAAK,EAAC,KAAK;IACX,UAAU,EAAC,UAAU;IACrB,IAAI,EAAC,IAAI;IACT,UAAU,EAAC,UAAU;CACxB,CAAA;AACD,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAE,KAAK,EAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/pre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,eAAe;IACX,OAAO,EAAC,OAAO;IACf,KAAK,EAAC,KAAK;IACX,UAAU,EAAC,UAAU;IACrB,IAAI,EAAC,IAAI;IACT,UAAU,EAAC,UAAU;CACxB,CAAA;AACD,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAE,KAAK,EAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../../src/core/pre/segment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAa,KAAK,EAAE,IAAI,EAAa,MAAM,SAAS,CAAA;AAG3D,cAAM,OAAO;IACF,IAAI,EAAC,MAAM,EAAE,CAAA;IACb,KAAK,EAAC,IAAI,EAAE,CAAA;IACZ,KAAK,EAAC,MAAM,CAAA;IACZ,IAAI,EAAC,MAAM,CAAA;IACX,GAAG,EAAC,KAAK,EAAE,CAAA;IAClB,OAAO,CAAC,SAAS,CAAS;gBACd,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAE;IAWpC,KAAK,IAAG,MAAM;IAGd,OAAO,IAAG,KAAK,EAAE;IAoDjB,EAAE,CAAC,CAAC,EAAC,MAAM;IAGX,aAAa,IAAG,OAAO;IA2BvB,WAAW,IAAG,OAAO;IAcrB,KAAK,CAAC,CAAC,EAAC,IAAI,GAAE,OAAO;CASxB;AACD,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../../src/core/pre/segment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAa,KAAK,EAAc,IAAI,EAAC,MAAM,SAAS,CAAA;AAG3D,cAAM,OAAO;IACF,IAAI,EAAC,MAAM,EAAE,CAAA;IACb,KAAK,EAAC,IAAI,EAAE,CAAA;IACZ,KAAK,EAAC,MAAM,CAAA;IACZ,IAAI,EAAC,MAAM,CAAA;IACX,GAAG,EAAC,KAAK,EAAE,CAAA;IAClB,OAAO,CAAC,SAAS,CAAS;gBACd,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAE;IAWpC,KAAK,IAAG,MAAM;IAGd,OAAO,IAAG,KAAK,EAAE;IAyDjB,EAAE,CAAC,CAAC,EAAC,MAAM;IAGX,aAAa,IAAG,OAAO;IA2BvB,WAAW,IAAG,OAAO;IAcrB,KAAK,CAAC,CAAC,EAAC,IAAI,GAAE,OAAO;CASxB;AACD,eAAe,OAAO,CAAA"}
@@ -2,7 +2,7 @@
2
2
  * 进行预分词
3
3
  * 之后会被进一步加工成可用token
4
4
  */
5
- import { token_type, token, match_type } from './model';
5
+ import { match_type, token, token_type } from './model';
6
6
  import { match } from './match';
7
7
  class segment {
8
8
  constructor(code, words) {
@@ -29,10 +29,15 @@ class segment {
29
29
  this.line++;
30
30
  continue;
31
31
  }
32
- if (this.code[this.index] == ' ') {
32
+ if (this.code[this.index] == ' ' || this.code[this.index] == '\t') {
33
33
  this.ret.push(new token(' ', token_type.space, this.lines()));
34
34
  while (this.is(this.index)) {
35
- if (!(this.code[this.index] == ' '))
35
+ if (this.code[this.index] == '\n') {
36
+ this.index++;
37
+ this.line++;
38
+ continue;
39
+ }
40
+ if (!((this.code[this.index] == ' ' || this.code[this.index] == '\t')))
36
41
  break;
37
42
  this.index++;
38
43
  }
@@ -73,7 +78,7 @@ class segment {
73
78
  }
74
79
  }
75
80
  }
76
- return this.ret;
81
+ return this.ret.filter((v) => v.type != token_type.space);
77
82
  }
78
83
  is(i) {
79
84
  return i >= 0 && i < this.code.length;
@@ -1 +1 @@
1
- {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../../src/core/pre/segment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../../src/core/pre/segment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/core/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAO,IAAI,EAAC,MAAM,OAAO,CAAA;AACnD;;GAEG;AACH,IAAI,CAAC,GAAQ;IACT,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,IAAI,CAAC,IAAI,CAAC;IACd,IAAI,IAAI,CAAC,SAAS,CAAC;CACtB,CAAA;AACD,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,kBAAkB,EAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/core/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,OAAO,CAAA;AAEnC;;GAEG;AACH,IAAI,CAAC,GAAQ;IACT,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,IAAI,CAAC,IAAI,CAAC;IACd,IAAI,IAAI,CAAC,SAAS,CAAC;CACtB,CAAA;AACD,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,kBAAkB,EAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA"}
package/index.js CHANGED
@@ -1,9 +1,12 @@
1
- import {Tree, grammar, tools} from './dist/core/parser/grammar'
2
- import {token, token_type, word, segment} from './dist/core/pre'
1
+ import {list_match,create_match,root_match, tools, Tree} from './dist/core/parser/grammar'
2
+ import {segment, token, token_type, word} from './dist/core/pre'
3
3
  import {log} from './dist/base/log'
4
+
4
5
  export {
5
6
  Tree,
6
- grammar,
7
+ list_match,
8
+ create_match,
9
+ root_match,
7
10
  tools,
8
11
  token,
9
12
  token_type,
package/index.ts CHANGED
@@ -1,9 +1,12 @@
1
- import {Tree, grammar, tools} from './src/core/parser/grammar'
2
- import {token, token_type, word, segment} from './src/core/pre'
1
+ import {list_match,create_match,root_match, tools, Tree} from './src/core/parser/grammar'
2
+ import {segment, token, token_type, word} from './src/core/pre'
3
3
  import {log} from './src/base/log'
4
+
4
5
  export {
5
6
  Tree,
6
- grammar,
7
+ list_match,
8
+ create_match,
9
+ root_match,
7
10
  tools,
8
11
  token,
9
12
  token_type,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allang-compiler-base",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,20 +1,49 @@
1
- import {token, token_type} from '../pre'
1
+ import {token} from '../pre'
2
2
  import {log} from '../../base/log'
3
3
 
4
4
  interface tools{
5
5
  peek():token
6
6
  now():token
7
7
  next():token
8
- match(data:token):boolean
9
- match(data:token_type):boolean
10
8
  backup():void
11
9
  restore():void
10
+ flush():void
11
+ add(token:token):void
12
+ remove():void
13
+ get():token[]
12
14
  }
13
- class Tree{
15
+ function create_match(func:(tool:tools)=>boolean,error:(log:log)=>void):{func:(tool:tools)=>boolean,
16
+ error:(log:log)=>void}{
17
+ return {
18
+ func:func,
19
+ error:error
20
+ }
21
+ }
22
+ function root_match(tool:tools,log:log,parser:(token:token[][])=>Tree,...match:{func:((tool:tools)=>boolean)
23
+ ,error:(log:log)=>void}[]):Tree{
24
+ let matches:(token[])[]=[]
25
+ for(let i=0;i<match.length;i++){
26
+ if(!match[i].func(tool))match[i].error(log)
27
+ else{
28
+ matches.push(tool.get())
29
+ tool.flush()
30
+ }
31
+ }
32
+ return parser(matches)
14
33
  }
15
- interface grammar{
16
- match(tool:tools,log:log):boolean
17
- tree():Tree
18
- no_match(log:log):void
34
+ function list_match(tool:tools,log:log,parser:(token:token[][])=>Tree,v?:(log:log,token:token[])=>void,
35
+ ...match:{func:((tool:tools)=>boolean),error:(log:log)=>void}[]):Tree{
36
+ let matches:(token[])[]=[]
37
+ for(let i=0;i<match.length;i++){
38
+ if(!match[i].func(tool))match[i].error(log)
39
+ else{
40
+ matches.push(tool.get())
41
+ tool.flush()
42
+ }
43
+ }
44
+ if(v)v(log,tool.get())
45
+ return parser(matches)
46
+ }
47
+ class Tree{
19
48
  }
20
- export {tools,grammar,Tree}
49
+ export {tools,Tree,list_match,root_match,create_match}
@@ -1,6 +1,7 @@
1
- import {token,token_type, word, match_type} from './model'
1
+ import {match_type, token, token_type, word} from './model'
2
2
  import {match} from './match'
3
3
  import segment from './segment'
4
+
4
5
  export default {
5
6
  segment:segment,
6
7
  token:token,
@@ -2,7 +2,7 @@
2
2
  * 进行预分词
3
3
  * 之后会被进一步加工成可用token
4
4
  */
5
- import {token_type, token, word, match_type} from './model'
5
+ import {match_type, token, token_type, word} from './model'
6
6
  import {match} from './match'
7
7
 
8
8
  class segment{
@@ -36,10 +36,15 @@ class segment{
36
36
  this.line++
37
37
  continue
38
38
  }
39
- if(this.code[this.index]==' '){
39
+ if(this.code[this.index]==' ' || this.code[this.index]=='\t'){
40
40
  this.ret.push(new token(' ',token_type.space,this.lines()))
41
41
  while(this.is(this.index)){
42
- if(!(this.code[this.index]==' '))
42
+ if(this.code[this.index]=='\n'){
43
+ this.index++
44
+ this.line++
45
+ continue
46
+ }
47
+ if(!((this.code[this.index]==' '||this.code[this.index]=='\t')))
43
48
  break
44
49
  this.index++
45
50
  }
@@ -76,7 +81,7 @@ class segment{
76
81
  }
77
82
  }
78
83
  }
79
- return this.ret
84
+ return this.ret.filter((v)=>v.type!=token_type.space)
80
85
  }
81
86
  is(i:number){
82
87
  return i>=0&&i<this.code.length
package/src/core/test.ts CHANGED
@@ -1,4 +1,5 @@
1
- import {token_type,segment,token,word} from './pre'
1
+ import {segment, word} from './pre'
2
+
2
3
  /**
3
4
  * 测试用
4
5
  */