mirror of
https://github.com/Noratrieb/riverdelta.git
synced 2026-01-15 00:45:04 +01:00
Add support for tuple literals
This commit is contained in:
parent
0c996eb9bc
commit
b64c02cf4a
6 changed files with 82 additions and 35 deletions
|
|
@ -18,7 +18,7 @@ export function printAst(ast: Ast): string {
|
|||
}
|
||||
|
||||
function printStringLiteral(lit: StringLiteral): string {
|
||||
return `"${lit.value}"`;
|
||||
return `"${lit.value.replace("\n", "\\n")}"`;
|
||||
}
|
||||
|
||||
function printItem(item: Item): string {
|
||||
|
|
@ -49,7 +49,7 @@ function printTypeDef(type: TypeDef): string {
|
|||
);
|
||||
|
||||
const fieldPart =
|
||||
type.fields.length === 0 ? "()" : `(\n${fields.join("\n")}\n)`;
|
||||
type.fields.length === 0 ? "{}" : `{\n${fields.join("\n")}\n}`;
|
||||
|
||||
return `type ${type.name} = ${fieldPart};`;
|
||||
}
|
||||
|
|
@ -150,7 +150,7 @@ function printExpr(expr: Expr, indent: number): string {
|
|||
)}${elsePart}`;
|
||||
}
|
||||
case "loop": {
|
||||
return `loop ${printExpr(expr.body, indent + 1)}`;
|
||||
return `loop ${printExpr(expr.body, indent)}`;
|
||||
}
|
||||
case "break": {
|
||||
const target = expr.target !== undefined ? `#${expr.target}` : "";
|
||||
|
|
@ -161,6 +161,11 @@ function printExpr(expr: Expr, indent: number): string {
|
|||
.map(([name, expr]) => `${name.name}: ${printExpr(expr, indent + 1)}`)
|
||||
.join(", ")} }`;
|
||||
}
|
||||
case "tupleLiteral": {
|
||||
return `(${expr.fields
|
||||
.map((expr) => printExpr(expr, indent))
|
||||
.join(", ")})`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -234,5 +239,5 @@ function linebreak(indent: number): string {
|
|||
}
|
||||
|
||||
function ind(indent: number): string {
|
||||
return " ".repeat(indent * 2);
|
||||
return " ".repeat(indent);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue