@aethex.os/lang
v1.0.1
Published
AeThex language compiler API — Lexer, Parser, AST types, and code generators for JavaScript, Roblox (Lua), UEFN (Verse), and Unity (C#)
Maintainers
Readme
@aethex.os/lang
Programmatic API for the AeThex compiler. Lex, parse, and generate code from AeThex source — without the CLI. Use it to build IDE extensions, linters, formatters, and build tools.
Install
npm install @aethex.os/langFor the CLI, see @aethex.os/cli.
Compile AeThex source
import { AeThexCompiler } from '@aethex.os/lang';
const compiler = new AeThexCompiler({ target: 'javascript' });
const result = compiler.compile(`
reality HelloWorld {
platforms: all
}
journey Greet(name) {
platform: all
notify "Hello, " + name
}
`);
if (result.success) {
console.log(result.code); // generated JavaScript
} else {
console.log(AeThexCompiler.formatErrors(result));
}Targets
type CompileTarget = 'javascript' | 'roblox' | 'uefn' | 'unity';| Target | Output | Platform |
|---|---|---|
| javascript | .js | Web, Node |
| roblox | .lua | Roblox Studio |
| uefn | .verse | Unreal Editor for Fortnite |
| unity | .cs | Unity |
Lexer
Tokenize AeThex source into a flat token stream:
import { Lexer, TokenType } from '@aethex.os/lang';
const lexer = new Lexer(`journey Greet(name) { notify name }`);
const tokens = lexer.tokenize();
tokens.forEach(t => console.log(t.type, t.value));
// JOURNEY 'journey'
// IDENTIFIER 'Greet'
// LEFT_PAREN '('
// ...Parser
Build an AST from tokens:
import { Lexer, Parser } from '@aethex.os/lang';
const lexer = new Lexer(source);
const parser = new Parser(lexer.tokenize());
const ast = parser.parse();
// ast.body — array of Reality | Journey | Import nodesCode Generators
Use generators directly against an AST:
import { Lexer, Parser, JavaScriptGenerator, LuaGenerator } from '@aethex.os/lang';
const ast = new Parser(new Lexer(source).tokenize()).parse();
const js = new JavaScriptGenerator().generate(ast);
const lua = new LuaGenerator().generate(ast);AST types
Full TypeScript types are exported for every AST node:
import type {
Program, Reality, Journey, Import,
LetStatement, WhenStatement, NotifyStatement,
BinaryExpression, CallExpression, Identifier, Literal,
} from '@aethex.os/lang';Part of the @aethex.os ecosystem
See @aethex.os/core for the full package list.
