@cirru/parser.ts 0.0.6 → 0.0.8

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/lib/index.d.ts CHANGED
@@ -1,3 +1,32 @@
1
1
  import * as types from "./types";
2
- export declare type ICirruNode = types.ICirruNode;
2
+ export type ICirruNode = types.ICirruNode;
3
+ /**
4
+ * Parse Cirru code into an abstract syntax tree (AST).
5
+ * Handles indentation-based syntax and returns an array of expressions.
6
+ *
7
+ * @param code - Cirru source code string to parse
8
+ * @returns Array of parsed expressions (ICirruNode[])
9
+ * @example
10
+ * ```typescript
11
+ * parse("defn square (x)\n * x x")
12
+ * // Returns: [["defn", "square", ["x"], ["*", "x", "x"]]]
13
+ * ```
14
+ */
3
15
  export declare let parse: (code: string) => types.ICirruNode[];
16
+ /**
17
+ * Parse a single Cirru expression from a one-liner code string.
18
+ * Throws an error if the code contains zero or multiple expressions.
19
+ *
20
+ * @param code - Cirru source code string containing exactly one expression
21
+ * @returns Single parsed expression (ICirruNode)
22
+ * @throws {Error} If the code doesn't contain exactly one expression
23
+ * @example
24
+ * ```typescript
25
+ * parseOneLiner("add 1 2")
26
+ * // Returns: ["add", "1", "2"]
27
+ *
28
+ * parseOneLiner("(add 1 2)")
29
+ * // Returns: ["add", "1", "2"]
30
+ * ```
31
+ */
32
+ export declare let parseOneLiner: (code: string) => types.ICirruNode;
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parse = void 0;
3
+ exports.parseOneLiner = exports.parse = void 0;
4
4
  const types_1 = require("./types");
5
5
  const tree_1 = require("./tree");
6
6
  let graspeExprs = (pullToken) => {
@@ -290,6 +290,18 @@ let resolveIndentations = (initialTokens) => {
290
290
  }
291
291
  }
292
292
  };
293
+ /**
294
+ * Parse Cirru code into an abstract syntax tree (AST).
295
+ * Handles indentation-based syntax and returns an array of expressions.
296
+ *
297
+ * @param code - Cirru source code string to parse
298
+ * @returns Array of parsed expressions (ICirruNode[])
299
+ * @example
300
+ * ```typescript
301
+ * parse("defn square (x)\n * x x")
302
+ * // Returns: [["defn", "square", ["x"], ["*", "x", "x"]]]
303
+ * ```
304
+ */
293
305
  let parse = (code) => {
294
306
  let tokens = resolveIndentations(lex(code));
295
307
  let pointer = 0;
@@ -301,4 +313,28 @@ let parse = (code) => {
301
313
  return (0, tree_1.resolveComma)((0, tree_1.resolveDollar)(buildExprs(pullToken)));
302
314
  };
303
315
  exports.parse = parse;
316
+ /**
317
+ * Parse a single Cirru expression from a one-liner code string.
318
+ * Throws an error if the code contains zero or multiple expressions.
319
+ *
320
+ * @param code - Cirru source code string containing exactly one expression
321
+ * @returns Single parsed expression (ICirruNode)
322
+ * @throws {Error} If the code doesn't contain exactly one expression
323
+ * @example
324
+ * ```typescript
325
+ * parseOneLiner("add 1 2")
326
+ * // Returns: ["add", "1", "2"]
327
+ *
328
+ * parseOneLiner("(add 1 2)")
329
+ * // Returns: ["add", "1", "2"]
330
+ * ```
331
+ */
332
+ let parseOneLiner = (code) => {
333
+ let result = (0, exports.parse)(code);
334
+ if (result.length !== 1) {
335
+ throw new Error(`Expected single expression, got ${result.length} expressions`);
336
+ }
337
+ return result[0];
338
+ };
339
+ exports.parseOneLiner = parseOneLiner;
304
340
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare type ICirruNode = string | ICirruNode[];
1
+ export type ICirruNode = string | ICirruNode[];
2
2
  export declare enum ELexState {
3
3
  space = 0,
4
4
  token = 1,
@@ -10,5 +10,5 @@ export declare enum ELexControl {
10
10
  open = -1000,
11
11
  close = -2000
12
12
  }
13
- export declare type LexList = (string | ELexControl | number)[];
14
- export declare type LexListItem = string | ELexControl | number;
13
+ export type LexList = (string | ELexControl | number)[];
14
+ export type LexListItem = string | ELexControl | number;
package/lib/types.js CHANGED
@@ -8,10 +8,10 @@ var ELexState;
8
8
  ELexState[ELexState["escape"] = 2] = "escape";
9
9
  ELexState[ELexState["indent"] = 3] = "indent";
10
10
  ELexState[ELexState["string"] = 4] = "string";
11
- })(ELexState = exports.ELexState || (exports.ELexState = {}));
11
+ })(ELexState || (exports.ELexState = ELexState = {}));
12
12
  var ELexControl;
13
13
  (function (ELexControl) {
14
14
  ELexControl[ELexControl["open"] = -1000] = "open";
15
15
  ELexControl[ELexControl["close"] = -2000] = "close";
16
- })(ELexControl = exports.ELexControl || (exports.ELexControl = {}));
16
+ })(ELexControl || (exports.ELexControl = ELexControl = {}));
17
17
  //# sourceMappingURL=types.js.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,2CAAK,CAAA;IACL,2CAAK,CAAA;IACL,6CAAM,CAAA;IACN,6CAAM,CAAA;IACN,6CAAM,CAAA;AACR,CAAC,EANW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAMpB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,iDAAY,CAAA;IACZ,mDAAa,CAAA;AACf,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,2CAAK,CAAA;IACL,2CAAK,CAAA;IACL,6CAAM,CAAA;IACN,6CAAM,CAAA;IACN,6CAAM,CAAA;AACR,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,iDAAY,CAAA;IACZ,mDAAa,CAAA;AACf,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cirru/parser.ts",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Cirru Parser in TypeScript",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -10,27 +10,34 @@
10
10
  "test": "yarn jest",
11
11
  "compile": "rm -rfv lib/* && tsc -d --project tsconfig-compile.json --outDir lib/",
12
12
  "prepare": "yarn test && yarn compile",
13
- "upload": "rsync -avr --progress dist/ cirru.org:~/repo/Cirru/parser.ts",
14
- "postinstall": "rm -rfv node_modules/@types/*/node_modules/@types/react"
13
+ "upload": "rsync -avr --progress dist/ cirru.org:~/repo/Cirru/parser.ts"
15
14
  },
16
15
  "keywords": [],
17
16
  "author": "",
18
17
  "license": "MIT",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/Cirru/parser.ts.git"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public",
24
+ "provenance": true
25
+ },
19
26
  "devDependencies": {
20
- "@emotion/css": "^11.10.0",
21
- "@types/jest": "^28.1.7",
22
- "@types/node": "^18.7.11",
23
- "@types/react": "^18.0.17",
24
- "@types/react-dom": "^18.0.6",
25
- "dayjs": "^1.11.5",
26
- "jest": "^28.1.3",
27
- "prettier": "^2.7.1",
27
+ "@emotion/css": "^11.11.2",
28
+ "@types/jest": "^29.5.3",
29
+ "@types/node": "^20.4.6",
30
+ "@types/react": "^18.2.18",
31
+ "@types/react-dom": "^18.2.7",
32
+ "dayjs": "^1.11.9",
33
+ "jest": "^29.6.2",
34
+ "prettier": "^3.0.0",
28
35
  "react": "^18.2.0",
29
36
  "react-dom": "^18.2.0",
30
- "ts-jest": "^28.0.8",
31
- "typescript": "^4.7.4",
32
- "typescript-styled-plugin": "^0.18.2",
33
- "vite": "^3.0.9"
37
+ "ts-jest": "^29.1.1",
38
+ "typescript": "^5.1.6",
39
+ "typescript-styled-plugin": "^0.18.3",
40
+ "vite": "^4.4.8"
34
41
  },
35
42
  "dependencies": {}
36
43
  }
package/src/index.ts CHANGED
@@ -288,6 +288,18 @@ let resolveIndentations = (initialTokens: LexList) => {
288
288
  }
289
289
  };
290
290
 
291
+ /**
292
+ * Parse Cirru code into an abstract syntax tree (AST).
293
+ * Handles indentation-based syntax and returns an array of expressions.
294
+ *
295
+ * @param code - Cirru source code string to parse
296
+ * @returns Array of parsed expressions (ICirruNode[])
297
+ * @example
298
+ * ```typescript
299
+ * parse("defn square (x)\n * x x")
300
+ * // Returns: [["defn", "square", ["x"], ["*", "x", "x"]]]
301
+ * ```
302
+ */
291
303
  export let parse = (code: string) => {
292
304
  let tokens = resolveIndentations(lex(code));
293
305
  let pointer = 0;
@@ -298,3 +310,27 @@ export let parse = (code: string) => {
298
310
  };
299
311
  return resolveComma(resolveDollar(buildExprs(pullToken)));
300
312
  };
313
+
314
+ /**
315
+ * Parse a single Cirru expression from a one-liner code string.
316
+ * Throws an error if the code contains zero or multiple expressions.
317
+ *
318
+ * @param code - Cirru source code string containing exactly one expression
319
+ * @returns Single parsed expression (ICirruNode)
320
+ * @throws {Error} If the code doesn't contain exactly one expression
321
+ * @example
322
+ * ```typescript
323
+ * parseOneLiner("add 1 2")
324
+ * // Returns: ["add", "1", "2"]
325
+ *
326
+ * parseOneLiner("(add 1 2)")
327
+ * // Returns: ["add", "1", "2"]
328
+ * ```
329
+ */
330
+ export let parseOneLiner = (code: string) => {
331
+ let result = parse(code);
332
+ if (result.length !== 1) {
333
+ throw new Error(`Expected single expression, got ${result.length} expressions`);
334
+ }
335
+ return result[0];
336
+ };
@@ -1,6 +1,6 @@
1
1
  let fs = require("fs");
2
2
  let path = require("path");
3
- let { parse } = require("./index");
3
+ let { parse, parseOneLiner } = require("./index");
4
4
 
5
5
  test("single quote", () => expect(parse('a "\\\'"')).toEqual([["a", "'"]]));
6
6
 
@@ -76,6 +76,12 @@ test("unfolding", () => {
76
76
  expect(parse(code)).toEqual(data);
77
77
  });
78
78
 
79
+ test("list-match", () => {
80
+ let code = fs.readFileSync(path.join(__dirname, "../test/cirru/list-match.cirru"), "utf8");
81
+ let data = require(path.join(__dirname, "../test/ast/list-match.json"));
82
+ expect(parse(code)).toEqual(data);
83
+ });
84
+
79
85
  test("with escaping", () => {
80
86
  let code = `"\'a"`;
81
87
  let data = [["'a"]];
@@ -85,3 +91,33 @@ test("with escaping", () => {
85
91
  data = [["\\u{3455}"]];
86
92
  expect(parse(code)).toEqual(data);
87
93
  });
94
+
95
+ describe("parseOneLiner", () => {
96
+ test("simple expression", () => {
97
+ expect(parseOneLiner("add 1 2")).toEqual(["add", "1", "2"]);
98
+ });
99
+
100
+ test("expression with parentheses", () => {
101
+ expect(parseOneLiner("(add 1 2)")).toEqual([["add", "1", "2"]]);
102
+ });
103
+
104
+ test("nested expression", () => {
105
+ expect(parseOneLiner("add (mul 2 3) 4")).toEqual(["add", ["mul", "2", "3"], "4"]);
106
+ });
107
+
108
+ test("expression with string", () => {
109
+ expect(parseOneLiner('print "hello world"')).toEqual(["print", "hello world"]);
110
+ });
111
+
112
+ test("single token", () => {
113
+ expect(parseOneLiner("token")).toEqual(["token"]);
114
+ });
115
+
116
+ test("throws error on empty input", () => {
117
+ expect(() => parseOneLiner("")).toThrow("Expected single expression, got 0 expressions");
118
+ });
119
+
120
+ test("throws error on multiple expressions", () => {
121
+ expect(() => parseOneLiner("add 1 2\nmul 3 4")).toThrow("Expected single expression, got 2 expressions");
122
+ });
123
+ });