@xnoxs/flux-lang 3.5.3 → 4.0.0
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/CHANGELOG.md +31 -0
- package/README.md +3 -1
- package/dist/flux-cli.js +171 -11
- package/dist/flux.cjs.js +64 -1
- package/dist/flux.esm.js +64 -1
- package/dist/flux.min.js +20 -20
- package/package.json +1 -1
- package/src/self/codegen.flux +5 -2
- package/src/self/codegen.js +1 -794
- package/src/self/lexer.flux +1 -1
- package/src/self/lexer.js +1 -713
- package/src/self/lexer.stage2.js +700 -0
- package/src/self/parser.flux +41 -0
- package/src/self/parser.js +1 -1571
- package/src/self/pkg.flux +76 -0
- package/src/self/pkg.js +82 -0
- package/src/self/transpiler.flux +14 -4
- package/src/self/transpiler.js +1 -83
- package/src/self/type-checker.flux +12 -0
- package/src/self/type-checker.js +1 -1114
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xnoxs/flux-lang",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Flux — A modern language that transpiles to JavaScript. Python-clean syntax, TypeScript-level safety, Rust-inspired pattern matching.",
|
|
5
5
|
"main": "dist/flux.cjs.js",
|
|
6
6
|
"module": "dist/flux.esm.js",
|
package/src/self/codegen.flux
CHANGED
|
@@ -54,6 +54,7 @@ export class CodeGenerator:
|
|
|
54
54
|
smBuilder: any
|
|
55
55
|
_needsFmt: bool
|
|
56
56
|
_loopDepth: int
|
|
57
|
+
_version: string
|
|
57
58
|
|
|
58
59
|
fn i():
|
|
59
60
|
var s = ''
|
|
@@ -83,7 +84,7 @@ export class CodeGenerator:
|
|
|
83
84
|
self.lines = []
|
|
84
85
|
self.level = 0
|
|
85
86
|
self._needsFmt = false
|
|
86
|
-
self.emit('// Generated by Flux Transpiler
|
|
87
|
+
self.emit('// Generated by Flux Transpiler v' + (self._version ?? "3.5.3") + ' (self-hosted)')
|
|
87
88
|
self.emit('"use strict";')
|
|
88
89
|
self.blank()
|
|
89
90
|
for node in ast.body: self.genStmt(node)
|
|
@@ -111,6 +112,7 @@ export class CodeGenerator:
|
|
|
111
112
|
else if node.type == 'TypeDecl': self.genTypeDecl(node)
|
|
112
113
|
else if node.type == 'InterfaceDecl': self.genInterfaceDecl(node)
|
|
113
114
|
else if node.type == 'EnumDecl': self.genEnumDecl(node)
|
|
115
|
+
else if node.type == 'DeclareDecl': return
|
|
114
116
|
else if node.type == 'ExprStmt': self.emit(self.genExpr(node.expr) + ';')
|
|
115
117
|
else:
|
|
116
118
|
throw new Error("Unknown statement: {node.type}")
|
|
@@ -552,4 +554,5 @@ export class CodeGenerator:
|
|
|
552
554
|
export fn makeCodeGen(opts):
|
|
553
555
|
val ind = opts?.indent ?? ' '
|
|
554
556
|
val smb = opts?.smBuilder ?? null
|
|
555
|
-
|
|
557
|
+
val ver = opts?.version ?? "3.5.3"
|
|
558
|
+
return new CodeGenerator(ind, 0, [], {}, smb, false, 0, ver)
|