mimo-lang 1.0.0 → 1.0.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.
@@ -29,20 +29,31 @@ function generateGoCodeFromAst(node) {
29
29
 
30
30
  export function generateGoCodeFromAstArray(ast) {
31
31
  declaredVariables = new Set();
32
- const generatedCode = ast.map(generateGoCodeFromAst).join("\n\n");
32
+ const functionCode = ast
33
+ .filter((node) => node.type === "function")
34
+ .map(generateGoCodeFromAst)
35
+ .join("\n\n");
36
+ const otherCode = ast
37
+ .filter((node) => node.type !== "function")
38
+ .map(generateGoCodeFromAst)
39
+ .join("\n");
33
40
  return formatGoCode(`
34
41
  package main
35
42
 
36
43
  import "fmt"
37
44
 
38
- ${generatedCode}
45
+ ${functionCode}
46
+
47
+ func main() {
48
+ ${otherCode}
49
+ }
39
50
  `);
40
51
  }
41
52
 
42
53
  function generateFunction(node) {
43
- const params = node.params.join(", ");
54
+ const params = node.params.map((p) => `${p} any`).join(", ");
44
55
  const body = node.body.map(generateGoCodeFromAst).join("\n");
45
- return `func ${node.name}(${params}) int {\n${body}\n}`;
56
+ return `func ${node.name}(${params}) any {\n${body}\n}`;
46
57
  }
47
58
 
48
59
  function generateAssignment(node) {
@@ -51,7 +62,7 @@ function generateAssignment(node) {
51
62
  prefix = "var ";
52
63
  declaredVariables.add(node.target);
53
64
  }
54
- return `${prefix}${node.target} := ${generateGoCodeFromAst(node.value)}`;
65
+ return `${prefix}${node.target} = ${generateGoCodeFromAst(node.value)}`;
55
66
  }
56
67
 
57
68
  function generateWhile(node) {
@@ -79,12 +90,11 @@ function generateCall(node) {
79
90
  prefix = "var ";
80
91
  declaredVariables.add(node.target);
81
92
  }
82
- callCode = `${prefix}${node.target} := ${callCode}`;
93
+ callCode = `${prefix}${node.target} = ${callCode}`;
83
94
  }
84
95
  return callCode;
85
96
  }
86
97
 
87
-
88
98
  function generatePrint(node) {
89
99
  return `fmt.Println(${generateGoCodeFromAst(node.value)})`;
90
100
  }
package/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  import { generateTokens } from "./compiler/lexer/tokenizer";
2
2
  import { parseTokens } from "./compiler/parser/parser";
3
3
  import { interpret } from "./compiler/execute/interpreter";
4
- import { generateGoCodeFromAstArray } from "./converter/go/convert";
5
4
  import { generateCodeJsFromAstArray } from "./converter/js/convert";
6
- import fs from "fs";
7
5
 
8
6
  // The main class for the Mimo language
9
7
  export default class Mimo {
@@ -38,11 +36,5 @@ export default class Mimo {
38
36
  toJS(ast) {
39
37
  return generateCodeJsFromAstArray(ast);
40
38
  }
41
-
42
- // Convert the AST to Go code
43
- toGO(ast) {
44
- return generateGoCodeFromAstArray(ast);
45
- }
46
39
  }
47
40
 
48
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mimo-lang",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A programming language made in javascript mostly for learning purposes.",
5
5
  "keywords": [
6
6
  "programing language"
@@ -20,7 +20,7 @@
20
20
  "@types/bun": "latest"
21
21
  },
22
22
  "dependencies": {
23
- "esformatter": "^0.11.3"
23
+ "esformatter": "^0.8.2"
24
24
  },
25
25
  "repository": {
26
26
  "type": "git",