@nml-lang/compiler-ts 2.2.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/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer.d.ts +30 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +132 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser.d.ts +55 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +915 -0
- package/dist/parser.js.map +1 -0
- package/dist/renderer.d.ts +19 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +186 -0
- package/dist/renderer.js.map +1 -0
- package/package.json +43 -0
- package/src/index.ts +116 -0
- package/src/lexer.ts +186 -0
- package/src/parser.ts +1108 -0
- package/src/renderer.ts +236 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NML Renderer
|
|
3
|
+
* Ports generate_html from nml_parse.py to TypeScript.
|
|
4
|
+
* Walks the expanded AST and produces a formatted HTML string.
|
|
5
|
+
*
|
|
6
|
+
* generateHtml is async to support @include directives which may
|
|
7
|
+
* read files from the filesystem, Cloudflare R2, D1, or memory.
|
|
8
|
+
*/
|
|
9
|
+
import { type ASTNode } from "./parser.js";
|
|
10
|
+
export interface RenderOptions {
|
|
11
|
+
/** Async function to read a file by absolute path. Required for @include. */
|
|
12
|
+
readFile?: (path: string) => Promise<string>;
|
|
13
|
+
/** Absolute path of the file being rendered — used to resolve relative @include paths. */
|
|
14
|
+
basePath?: string;
|
|
15
|
+
/** Internal: tracks seen file paths for circular include detection. */
|
|
16
|
+
_seenFiles?: Set<string>;
|
|
17
|
+
}
|
|
18
|
+
export declare function generateHtml(ast: ASTNode[], indentLevel?: number, context?: Record<string, unknown>, opts?: RenderOptions): Promise<string>;
|
|
19
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAuD,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAUhG,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EAAE,EACd,WAAW,SAAI,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAyHjB"}
|
package/dist/renderer.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NML Renderer
|
|
3
|
+
* Ports generate_html from nml_parse.py to TypeScript.
|
|
4
|
+
* Walks the expanded AST and produces a formatted HTML string.
|
|
5
|
+
*
|
|
6
|
+
* generateHtml is async to support @include directives which may
|
|
7
|
+
* read files from the filesystem, Cloudflare R2, D1, or memory.
|
|
8
|
+
*/
|
|
9
|
+
import { buildAst, renderVariables, isTruthy, NMLParserError } from "./parser.js";
|
|
10
|
+
import { dirname, join, resolve } from "path";
|
|
11
|
+
const INDENT_WIDTH = 4;
|
|
12
|
+
const VOID_ELEMENTS = new Set([
|
|
13
|
+
"area", "base", "br", "col", "embed", "hr", "img", "input",
|
|
14
|
+
"link", "meta", "param", "source", "track", "wbr",
|
|
15
|
+
]);
|
|
16
|
+
export async function generateHtml(ast, indentLevel = 0, context = {}, opts = {}) {
|
|
17
|
+
let html = "";
|
|
18
|
+
const indent = " ".repeat(indentLevel * INDENT_WIDTH);
|
|
19
|
+
for (const node of ast) {
|
|
20
|
+
// Merge node-level context (component props)
|
|
21
|
+
let nodeContext = context;
|
|
22
|
+
if (node.__context__) {
|
|
23
|
+
nodeContext = { ...context, ...node.__context__ };
|
|
24
|
+
}
|
|
25
|
+
// Plain text node
|
|
26
|
+
if (node.element === "__text__") {
|
|
27
|
+
html += `${indent}${renderVariables(node.content, nodeContext)}\n`;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// @include — render-time partial resolution
|
|
31
|
+
if (node.element === "@include") {
|
|
32
|
+
html += await resolveInclude(node, indentLevel, nodeContext, opts);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
// @each — loop directive
|
|
36
|
+
if (node.element === "@each") {
|
|
37
|
+
const itemsPath = node.attributes["items"];
|
|
38
|
+
const asName = node.attributes["as"];
|
|
39
|
+
const arr = resolveContextPath(itemsPath, nodeContext);
|
|
40
|
+
if (Array.isArray(arr)) {
|
|
41
|
+
for (const item of arr) {
|
|
42
|
+
const childCtx = { ...nodeContext, [asName]: item };
|
|
43
|
+
html += await generateHtml(node.children, indentLevel, childCtx, opts);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// @if — conditional directive
|
|
49
|
+
if (node.element === "@if") {
|
|
50
|
+
const condition = node.attributes["condition"];
|
|
51
|
+
const condVal = resolveContextPath(condition, nodeContext);
|
|
52
|
+
if (isTruthy(condVal)) {
|
|
53
|
+
html += await generateHtml(node.children, indentLevel, nodeContext, opts);
|
|
54
|
+
}
|
|
55
|
+
else if (node.elseBranch && node.elseBranch.length > 0) {
|
|
56
|
+
html += await generateHtml(node.elseBranch, indentLevel, nodeContext, opts);
|
|
57
|
+
}
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// Internal structural nodes — skip (defensive: @else/@endif/@endeach removed by pass)
|
|
61
|
+
if (["@define", "@slot", "@style", "__comment__", "__root__", "@else", "@endif", "@endeach"].includes(node.element)) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const tag = node.element;
|
|
65
|
+
// Doctype
|
|
66
|
+
if (tag === "doctype") {
|
|
67
|
+
const cls = node.attributes["class"];
|
|
68
|
+
const clsStr = Array.isArray(cls) ? cls.join(" ") : cls ?? "";
|
|
69
|
+
if (clsStr === "html") {
|
|
70
|
+
html += `${indent}<!DOCTYPE html>\n`;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
// Build attribute string
|
|
75
|
+
let attrString = "";
|
|
76
|
+
for (const [key, value] of Object.entries(node.attributes)) {
|
|
77
|
+
if (key.startsWith("__"))
|
|
78
|
+
continue; // skip internal keys
|
|
79
|
+
if (value === true) {
|
|
80
|
+
attrString += ` ${key}`;
|
|
81
|
+
}
|
|
82
|
+
else if (Array.isArray(value)) {
|
|
83
|
+
const rendered = renderVariables(value.join(" "), nodeContext);
|
|
84
|
+
attrString += ` ${key}="${rendered}"`;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const rendered = renderVariables(String(value), nodeContext);
|
|
88
|
+
attrString += ` ${key}="${rendered}"`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
html += `${indent}<${tag}${attrString}`;
|
|
92
|
+
// Void elements self-close
|
|
93
|
+
if (VOID_ELEMENTS.has(tag)) {
|
|
94
|
+
html += ">\n";
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
html += ">";
|
|
98
|
+
const content = renderVariables(node.content, nodeContext);
|
|
99
|
+
const children = node.children;
|
|
100
|
+
const multiline = node.multiline_content;
|
|
101
|
+
if (content) {
|
|
102
|
+
html += content;
|
|
103
|
+
}
|
|
104
|
+
else if (children.length > 0) {
|
|
105
|
+
// Inline single text child
|
|
106
|
+
if (children.length === 1 &&
|
|
107
|
+
children[0].element === "__text__") {
|
|
108
|
+
html += renderVariables(children[0].content, nodeContext);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
html += "\n";
|
|
112
|
+
html += await generateHtml(children, indentLevel + 1, nodeContext, opts);
|
|
113
|
+
html += indent;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else if (multiline.length > 0) {
|
|
117
|
+
html += "\n";
|
|
118
|
+
for (const line of multiline) {
|
|
119
|
+
html += `${indent} ${renderVariables(line, nodeContext)}\n`;
|
|
120
|
+
}
|
|
121
|
+
html += indent;
|
|
122
|
+
}
|
|
123
|
+
html += `</${tag}>\n`;
|
|
124
|
+
}
|
|
125
|
+
return indentLevel === 0 ? html.trimEnd() : html;
|
|
126
|
+
}
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// @include resolution
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
async function resolveInclude(node, indentLevel, parentContext, opts) {
|
|
131
|
+
const relativePath = node.attributes["file"];
|
|
132
|
+
const overridesRaw = node.attributes["overrides"];
|
|
133
|
+
if (!opts.readFile) {
|
|
134
|
+
throw new NMLParserError(`@include("${relativePath}") requires a readFile option — pass it via CompilerAdapter.render() or nmlCompiler.render()`, node.loc);
|
|
135
|
+
}
|
|
136
|
+
// Resolve to absolute path
|
|
137
|
+
const base = opts.basePath ? dirname(opts.basePath) : process.cwd();
|
|
138
|
+
const absolutePath = resolve(join(base, relativePath));
|
|
139
|
+
// Circular include detection
|
|
140
|
+
const seen = opts._seenFiles ?? new Set();
|
|
141
|
+
if (seen.has(absolutePath)) {
|
|
142
|
+
throw new NMLParserError(`Circular @include detected: "${relativePath}" is already in the include stack`, node.loc);
|
|
143
|
+
}
|
|
144
|
+
// Read the partial source
|
|
145
|
+
let src;
|
|
146
|
+
try {
|
|
147
|
+
src = await opts.readFile(absolutePath);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
throw new NMLParserError(`@include: cannot read file "${relativePath}" (resolved to "${absolutePath}")`, node.loc);
|
|
151
|
+
}
|
|
152
|
+
// Parse overrides: { ...parentCtx, ...overrides }
|
|
153
|
+
let overrides = {};
|
|
154
|
+
if (overridesRaw) {
|
|
155
|
+
try {
|
|
156
|
+
overrides = JSON.parse(overridesRaw);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Non-JSON override strings are silently ignored (may be complex expressions)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const partialContext = { ...parentContext, ...overrides };
|
|
163
|
+
// Parse and render the partial with child seen-set
|
|
164
|
+
const childSeen = new Set(seen);
|
|
165
|
+
childSeen.add(absolutePath);
|
|
166
|
+
const ast = buildAst(src);
|
|
167
|
+
return generateHtml(ast, indentLevel, partialContext, {
|
|
168
|
+
...opts,
|
|
169
|
+
basePath: absolutePath,
|
|
170
|
+
_seenFiles: childSeen,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
// Context path resolver (used by @each and @if)
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
function resolveContextPath(path, context) {
|
|
177
|
+
const parts = path.split(".");
|
|
178
|
+
let current = context;
|
|
179
|
+
for (const part of parts) {
|
|
180
|
+
if (current === null || current === undefined)
|
|
181
|
+
return undefined;
|
|
182
|
+
current = current[part];
|
|
183
|
+
}
|
|
184
|
+
return current;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nml-lang/compiler-ts",
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"description": "NML compiler — parse and render .nml templates to HTML",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"module": "./src/index.ts",
|
|
8
|
+
"types": "./src/index.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"bun": "./src/index.ts",
|
|
12
|
+
"source": "./src/index.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"src"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -p tsconfig.build.json",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"test:coverage": "vitest run --coverage"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/Dw4pres/NML.git",
|
|
30
|
+
"directory": "packages/compiler-ts"
|
|
31
|
+
},
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public",
|
|
35
|
+
"registry": "https://registry.npmjs.org"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^25.6.0",
|
|
39
|
+
"@vitest/coverage-v8": "^2.0.0",
|
|
40
|
+
"typescript": "^5.5.0",
|
|
41
|
+
"vitest": "^2.0.0"
|
|
42
|
+
}
|
|
43
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nml/compiler-ts — public API
|
|
3
|
+
*
|
|
4
|
+
* Exports the CompilerAdapter interface so consumers (CLI, Vite plugin,
|
|
5
|
+
* Cloudflare Worker, MCP server) always program against the interface,
|
|
6
|
+
* never a concrete class. A future @nml/compiler-wasm package will export
|
|
7
|
+
* a WasmCompiler satisfying the same interface.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { buildAst, renderVariables, NMLParserError, findComponentRootNode, parseLineRaw, isTruthy, postProcessConditionalsPass } from "./parser.js";
|
|
11
|
+
import { generateHtml, type RenderOptions } from "./renderer.js";
|
|
12
|
+
import type { ASTNode, ComponentMap, GlobalStyles } from "./parser.js";
|
|
13
|
+
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Public interface contract
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
|
|
18
|
+
export interface CompilerAdapter {
|
|
19
|
+
/**
|
|
20
|
+
* Compile a raw NML string to an HTML string.
|
|
21
|
+
* Returns a Promise — async to support @include directives that read
|
|
22
|
+
* files from the filesystem, Cloudflare R2, D1, or in-memory stores.
|
|
23
|
+
*
|
|
24
|
+
* @param input - Raw NML source
|
|
25
|
+
* @param context - Optional template variable context
|
|
26
|
+
* @param options - Optional components, global styles, readFile, basePath
|
|
27
|
+
*/
|
|
28
|
+
render(
|
|
29
|
+
input: string,
|
|
30
|
+
context?: Record<string, unknown>,
|
|
31
|
+
options?: CompileOptions
|
|
32
|
+
): Promise<string>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface CompileOptions {
|
|
36
|
+
components?: ComponentMap;
|
|
37
|
+
globalStyles?: GlobalStyles;
|
|
38
|
+
/** Async function to read included files. Required when NML uses @include. */
|
|
39
|
+
readFile?: (path: string) => Promise<string>;
|
|
40
|
+
/** Absolute path of the NML file being rendered — resolves relative @include paths. */
|
|
41
|
+
basePath?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Default TypeScript engine
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
class TSCompiler implements CompilerAdapter {
|
|
49
|
+
async render(
|
|
50
|
+
input: string,
|
|
51
|
+
context: Record<string, unknown> = {},
|
|
52
|
+
options: CompileOptions = {}
|
|
53
|
+
): Promise<string> {
|
|
54
|
+
const components: ComponentMap = options.components ?? {};
|
|
55
|
+
const globalStyles: GlobalStyles = options.globalStyles ?? {};
|
|
56
|
+
|
|
57
|
+
const renderOpts: RenderOptions = {
|
|
58
|
+
readFile: options.readFile,
|
|
59
|
+
basePath: options.basePath,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const ast = buildAst(input, { components, globalStyles });
|
|
63
|
+
let html = await generateHtml(ast, 0, context, renderOpts);
|
|
64
|
+
|
|
65
|
+
// Inject scoped styles if any are present
|
|
66
|
+
if (Object.keys(globalStyles).length > 0) {
|
|
67
|
+
const usedScopeIds = collectScopeIds(ast);
|
|
68
|
+
const usedStyles: string[] = [];
|
|
69
|
+
for (const sid of usedScopeIds) {
|
|
70
|
+
if (sid in globalStyles) {
|
|
71
|
+
usedStyles.push(globalStyles[sid]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (usedStyles.length > 0) {
|
|
75
|
+
const styleTag = `<style data-nml-scoped-styles>\n${usedStyles.join("\n")}\n</style>`;
|
|
76
|
+
if (html.includes("</head>")) {
|
|
77
|
+
html = html.replace("</head>", `${styleTag}\n</head>`);
|
|
78
|
+
} else {
|
|
79
|
+
html = styleTag + "\n" + html;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return html;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function collectScopeIds(nodes: ASTNode[]): Set<string> {
|
|
89
|
+
const ids = new Set<string>();
|
|
90
|
+
function walk(items: ASTNode[]) {
|
|
91
|
+
for (const n of items) {
|
|
92
|
+
for (const k of Object.keys(n.attributes)) {
|
|
93
|
+
if (k.startsWith("nml-c-")) ids.add(k);
|
|
94
|
+
}
|
|
95
|
+
if (n.children.length > 0) walk(n.children);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
walk(nodes);
|
|
99
|
+
return ids;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Singleton default export — V8-optimised TS engine
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
|
|
106
|
+
export const nmlCompiler: CompilerAdapter = new TSCompiler();
|
|
107
|
+
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Re-exports for advanced consumers
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
|
|
112
|
+
export { buildAst, generateHtml, renderVariables, NMLParserError, findComponentRootNode, parseLineRaw, isTruthy, postProcessConditionalsPass };
|
|
113
|
+
export type { RenderOptions };
|
|
114
|
+
export type { ASTNode, ComponentMap, GlobalStyles };
|
|
115
|
+
export { NMLLexerError } from "./lexer.js";
|
|
116
|
+
export type { SourceLocation, Token, TokenKind } from "./lexer.js";
|
package/src/lexer.ts
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NML Lexer
|
|
3
|
+
* Tokenizes raw NML source text into a stream of typed tokens,
|
|
4
|
+
* each carrying precise source location (line, column) for error
|
|
5
|
+
* reporting and Vite overlay / MCP diagnostics.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export interface SourceLocation {
|
|
9
|
+
line: number; // 1-based
|
|
10
|
+
column: number; // 0-based
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type TokenKind =
|
|
14
|
+
| "INDENT" // significant leading whitespace level
|
|
15
|
+
| "ELEMENT" // tag name, @define, @slot, @style, @ComponentName, |
|
|
16
|
+
| "ATTR_CHAIN" // .attr("val") or .boolAttr raw segment
|
|
17
|
+
| "MULTILINE_START" // element ends with ':'
|
|
18
|
+
| "MULTILINE_LINE" // content line inside a multiline block
|
|
19
|
+
| "COMMENT" // // ...
|
|
20
|
+
| "BLANK" // empty line
|
|
21
|
+
| "EOF";
|
|
22
|
+
|
|
23
|
+
export interface Token {
|
|
24
|
+
kind: TokenKind;
|
|
25
|
+
value: string;
|
|
26
|
+
loc: SourceLocation;
|
|
27
|
+
/** For INDENT tokens: indentation level (0-based, each level = 4 spaces) */
|
|
28
|
+
level?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const INDENT_WIDTH = 4;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Tokenize NML source into a flat array of line-level tokens.
|
|
35
|
+
* Each "line" of NML produces at most one primary token; multiline
|
|
36
|
+
* blocks consume multiple raw lines and emit MULTILINE_LINE tokens
|
|
37
|
+
* for each.
|
|
38
|
+
*/
|
|
39
|
+
export function tokenize(source: string): Token[] {
|
|
40
|
+
const tokens: Token[] = [];
|
|
41
|
+
const rawLines = source.split("\n");
|
|
42
|
+
let lineIdx = 0; // 0-based index into rawLines
|
|
43
|
+
|
|
44
|
+
while (lineIdx < rawLines.length) {
|
|
45
|
+
const rawLine = rawLines[lineIdx];
|
|
46
|
+
const currentLine = lineIdx + 1; // 1-based
|
|
47
|
+
const stripped = rawLine.trimEnd();
|
|
48
|
+
|
|
49
|
+
// Blank line
|
|
50
|
+
if (stripped.trim() === "") {
|
|
51
|
+
tokens.push({ kind: "BLANK", value: "", loc: { line: currentLine, column: 0 } });
|
|
52
|
+
lineIdx++;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Comment
|
|
57
|
+
if (stripped.trimStart().startsWith("//")) {
|
|
58
|
+
const col = stripped.length - stripped.trimStart().length;
|
|
59
|
+
tokens.push({ kind: "COMMENT", value: stripped.trimStart(), loc: { line: currentLine, column: col } });
|
|
60
|
+
lineIdx++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Validate and measure indentation
|
|
65
|
+
const leadingSpaces = stripped.length - stripped.trimStart().length;
|
|
66
|
+
|
|
67
|
+
if (stripped.startsWith("\t")) {
|
|
68
|
+
throw new NMLLexerError(
|
|
69
|
+
`Indentation error on line ${currentLine}: Please use 4 spaces for indentation, not tabs.`,
|
|
70
|
+
{ line: currentLine, column: 0 }
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
if (leadingSpaces % INDENT_WIDTH !== 0) {
|
|
74
|
+
throw new NMLLexerError(
|
|
75
|
+
`Indentation error on line ${currentLine}: Non-standard indentation. Use 4 spaces per level.`,
|
|
76
|
+
{ line: currentLine, column: 0 }
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const level = leadingSpaces / INDENT_WIDTH;
|
|
81
|
+
const content = stripped.trimStart();
|
|
82
|
+
|
|
83
|
+
// Check if this line is a multiline trigger (ends with ':' outside quotes)
|
|
84
|
+
const isMultilineTrigger = isLineMultilineTrigger(content);
|
|
85
|
+
|
|
86
|
+
// Emit INDENT + ELEMENT token for this line
|
|
87
|
+
tokens.push({
|
|
88
|
+
kind: "INDENT",
|
|
89
|
+
value: "",
|
|
90
|
+
level,
|
|
91
|
+
loc: { line: currentLine, column: 0 },
|
|
92
|
+
});
|
|
93
|
+
tokens.push({
|
|
94
|
+
kind: isMultilineTrigger ? "MULTILINE_START" : "ELEMENT",
|
|
95
|
+
value: content,
|
|
96
|
+
loc: { line: currentLine, column: leadingSpaces },
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
lineIdx++;
|
|
100
|
+
|
|
101
|
+
// If multiline, consume subsequent indented lines
|
|
102
|
+
if (isMultilineTrigger) {
|
|
103
|
+
const blockStartLevel = level + 1;
|
|
104
|
+
const blockStartCol = blockStartLevel * INDENT_WIDTH;
|
|
105
|
+
|
|
106
|
+
while (lineIdx < rawLines.length) {
|
|
107
|
+
const mlRaw = rawLines[lineIdx];
|
|
108
|
+
const mlLine = lineIdx + 1;
|
|
109
|
+
const mlStripped = mlRaw.trimEnd();
|
|
110
|
+
|
|
111
|
+
// Blank lines are part of the block
|
|
112
|
+
if (mlStripped.trim() === "") {
|
|
113
|
+
tokens.push({ kind: "MULTILINE_LINE", value: "", loc: { line: mlLine, column: 0 } });
|
|
114
|
+
lineIdx++;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const mlSpaces = mlStripped.length - mlStripped.trimStart().length;
|
|
119
|
+
|
|
120
|
+
// Block ends when indentation returns to block level or less
|
|
121
|
+
if (mlSpaces < blockStartCol) {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Validate indentation within block
|
|
126
|
+
if (mlSpaces % INDENT_WIDTH !== 0) {
|
|
127
|
+
throw new NMLLexerError(
|
|
128
|
+
`Indentation error on line ${mlLine}: Non-standard indentation. Use 4 spaces per level.`,
|
|
129
|
+
{ line: mlLine, column: 0 }
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Relative indent (strip the block-start indentation)
|
|
134
|
+
const relativeIndent = " ".repeat(mlSpaces - blockStartCol);
|
|
135
|
+
const mlContent = relativeIndent + mlStripped.trimStart();
|
|
136
|
+
|
|
137
|
+
tokens.push({
|
|
138
|
+
kind: "MULTILINE_LINE",
|
|
139
|
+
value: mlContent,
|
|
140
|
+
loc: { line: mlLine, column: mlSpaces },
|
|
141
|
+
});
|
|
142
|
+
lineIdx++;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
tokens.push({ kind: "EOF", value: "", loc: { line: rawLines.length + 1, column: 0 } });
|
|
148
|
+
return tokens;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Returns true if the NML line (already stripped of indent) ends with ':'
|
|
153
|
+
* outside of any quoted string — indicating a multiline content block.
|
|
154
|
+
*/
|
|
155
|
+
function isLineMultilineTrigger(content: string): boolean {
|
|
156
|
+
let inQuote = false;
|
|
157
|
+
let quoteChar = "";
|
|
158
|
+
let i = 0;
|
|
159
|
+
|
|
160
|
+
// Strip trailing whitespace before checking
|
|
161
|
+
const trimmed = content.trimEnd();
|
|
162
|
+
|
|
163
|
+
while (i < trimmed.length) {
|
|
164
|
+
const ch = trimmed[i];
|
|
165
|
+
if (inQuote) {
|
|
166
|
+
if (ch === quoteChar) inQuote = false;
|
|
167
|
+
} else {
|
|
168
|
+
if (ch === '"' || ch === "'") {
|
|
169
|
+
inQuote = true;
|
|
170
|
+
quoteChar = ch;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
i++;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return !inQuote && trimmed.endsWith(":");
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export class NMLLexerError extends Error {
|
|
180
|
+
loc: SourceLocation;
|
|
181
|
+
constructor(message: string, loc: SourceLocation) {
|
|
182
|
+
super(message);
|
|
183
|
+
this.name = "NMLLexerError";
|
|
184
|
+
this.loc = loc;
|
|
185
|
+
}
|
|
186
|
+
}
|