mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-28 08:44:06 +02:00
set deno workspace
This commit is contained in:
parent
84e845a4bf
commit
f9e14e5056
@ -1,5 +1,4 @@
|
|||||||
import { AstId, File as CtxFile, IdentId } from "../ids.ts";
|
import { AstId, File as CtxFile, IdentId, Span } from "@slige/common";
|
||||||
import { Span } from "../diagnostics.ts";
|
|
||||||
|
|
||||||
export type File = {
|
export type File = {
|
||||||
stmts: Stmt[];
|
stmts: Stmt[];
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { Span } from "../diagnostics.ts";
|
import { AstId, Ids, Span } from "@slige/common";
|
||||||
import { AstId, Ids } from "../ids.ts";
|
|
||||||
import {
|
import {
|
||||||
Expr,
|
Expr,
|
||||||
ExprKind,
|
ExprKind,
|
||||||
|
4
slige/compiler/ast/deno.jsonc
Normal file
4
slige/compiler/ast/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/ast",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
import { Ctx } from "../ctx.ts";
|
import { Ctx, exhausted, todo } from "@slige/common";
|
||||||
import { exhausted, todo } from "../util.ts";
|
|
||||||
import { Block, Item } from "./ast.ts";
|
import { Block, Item } from "./ast.ts";
|
||||||
|
|
||||||
export function itemToString(ctx: Ctx, item: Item): string {
|
export function itemToString(ctx: Ctx, item: Item): string {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { exhausted } from "../util.ts";
|
import { exhausted } from "@slige/common";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AnonStructTy,
|
AnonStructTy,
|
||||||
ArrayExpr,
|
ArrayExpr,
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
import * as ast from "../ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
import { Ctx, File } from "../ctx.ts";
|
import {
|
||||||
import { Span } from "../diagnostics.ts";
|
AstId,
|
||||||
import { AstId, IdMap } from "../ids.ts";
|
Ctx,
|
||||||
import { Resols } from "../resolve/resolver.ts";
|
exhausted,
|
||||||
import { tyToString } from "../ty/to_string.ts";
|
File,
|
||||||
import { Ty } from "../ty/ty.ts";
|
IdMap,
|
||||||
import { exhausted, Res, todo } from "../util.ts";
|
Res,
|
||||||
|
Span,
|
||||||
|
todo,
|
||||||
|
} from "@slige/common";
|
||||||
|
import { Resols } from "@slige/resolve";
|
||||||
|
import { Ty, tyToString } from "@slige/ty";
|
||||||
|
|
||||||
export class Checker {
|
export class Checker {
|
||||||
private itemTys = new IdMap<AstId, Ty>();
|
private itemTys = new IdMap<AstId, Ty>();
|
||||||
|
4
slige/compiler/check/deno.jsonc
Normal file
4
slige/compiler/check/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/check",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
1
slige/compiler/check/mod.ts
Normal file
1
slige/compiler/check/mod.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export * from "./checker.ts";
|
@ -1,4 +1,4 @@
|
|||||||
import * as ast from "./ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
import {
|
import {
|
||||||
Pos,
|
Pos,
|
||||||
prettyPrintReport,
|
prettyPrintReport,
|
4
slige/compiler/common/deno.jsonc
Normal file
4
slige/compiler/common/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/common",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
@ -31,7 +31,7 @@ export class Ids<IdType extends IdBase> {
|
|||||||
export class IdMap<Id extends IdBase, V> implements Map<Id, V> {
|
export class IdMap<Id extends IdBase, V> implements Map<Id, V> {
|
||||||
private map = new Map<IdRaw<Id>, V>();
|
private map = new Map<IdRaw<Id>, V>();
|
||||||
|
|
||||||
set(id: Id, val: V) {
|
set(id: Id, val: V): this {
|
||||||
this.map.set(idRaw(id), val);
|
this.map.set(idRaw(id), val);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
9
slige/compiler/common/mod.ts
Normal file
9
slige/compiler/common/mod.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
export * from "./ids.ts";
|
||||||
|
export * from "./ctx.ts";
|
||||||
|
export * from "./util.ts";
|
||||||
|
export * from "./diagnostics.ts";
|
||||||
|
|
||||||
|
export * as ids from "./ids.ts";
|
||||||
|
export * as ctx from "./ctx.ts";
|
||||||
|
export * as util from "./util.ts";
|
||||||
|
export * as diagnostics from "./diagnostics.ts";
|
@ -42,7 +42,7 @@ export const ControlFlow = {
|
|||||||
Continue: <V>(val: V): Continue<V> => ({ break: false, val }),
|
Continue: <V>(val: V): Continue<V> => ({ break: false, val }),
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const range = (length: number) => (new Array(length).fill(0));
|
export const range = (length: number): number[] => (new Array(length).fill(0));
|
||||||
|
|
||||||
export const strictEq = <T>(a: T, b: T): boolean => a === b;
|
export const strictEq = <T>(a: T, b: T): boolean => a === b;
|
||||||
|
|
@ -1,5 +1,14 @@
|
|||||||
{
|
{
|
||||||
|
"workspace": ["./ast", "./check", "./middle", "./parse", "./resolve", "./ty", "./common"],
|
||||||
|
"lint": {
|
||||||
|
"rules": {
|
||||||
|
"exclude": [
|
||||||
|
"verbatim-module-syntax",
|
||||||
|
"no-unused-vars"
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"indentWidth": 4
|
"indentWidth": 4
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import * as path from "jsr:@std/path";
|
import * as path from "jsr:@std/path";
|
||||||
import { Parser } from "./parse/parser.ts";
|
import { Parser } from "./parse/parser.ts";
|
||||||
import * as ast from "./ast/mod.ts";
|
import * as ast from "./ast/mod.ts";
|
||||||
import { Ctx, File } from "./ctx.ts";
|
import { Ctx, File } from "@slige/common";
|
||||||
import { Resolver } from "./resolve/resolver.ts";
|
import { Resolver } from "./resolve/resolver.ts";
|
||||||
import { Checker } from "./check/checker.ts";
|
import { Checker } from "./check/checker.ts";
|
||||||
import { AstLowerer } from "./middle/ast_lower.ts";
|
import { AstLowerer } from "./middle/ast_lower.ts";
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
import * as ast from "../ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
import { Checker } from "../check/checker.ts";
|
import { Checker } from "@slige/check";
|
||||||
import { Ctx } from "../ctx.ts";
|
import { Ctx, exhausted, IdMap, Ids, Res, todo } from "@slige/common";
|
||||||
import { IdMap, Ids } from "../ids.ts";
|
import { LocalId as ReLocalId, Resols } from "@slige/resolve";
|
||||||
import { LocalId as ReLocalId, Resols } from "../resolve/resolver.ts";
|
import { Ty } from "@slige/ty";
|
||||||
import { Ty } from "../ty/ty.ts";
|
|
||||||
import { exhausted, Res, todo } from "../util.ts";
|
|
||||||
import { BinaryType, Operand, StmtKind, TerKind } from "./mir.ts";
|
import { BinaryType, Operand, StmtKind, TerKind } from "./mir.ts";
|
||||||
import { Block, BlockId, Fn, Local, LocalId, RVal, Stmt, Ter } from "./mir.ts";
|
import { Block, BlockId, Fn, Local, LocalId, RVal, Stmt, Ter } from "./mir.ts";
|
||||||
|
|
||||||
|
4
slige/compiler/middle/deno.jsonc
Normal file
4
slige/compiler/middle/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/middle",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
@ -1,6 +1,5 @@
|
|||||||
import { Span } from "../diagnostics.ts";
|
import { IdBase, IdMap } from "@slige/common";
|
||||||
import { IdBase, IdMap } from "../ids.ts";
|
import { Ty } from "@slige/ty";
|
||||||
import { Ty } from "../ty/ty.ts";
|
|
||||||
|
|
||||||
export type Fn = {
|
export type Fn = {
|
||||||
label: string;
|
label: string;
|
||||||
|
4
slige/compiler/parse/deno.jsonc
Normal file
4
slige/compiler/parse/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/parse",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
@ -1,6 +1,4 @@
|
|||||||
import { Ctx, File } from "../ctx.ts";
|
import { ControlFlow, Ctx, File, Pos, range, Span } from "@slige/common";
|
||||||
import { Pos, Span } from "../diagnostics.ts";
|
|
||||||
import { ControlFlow, range } from "../util.ts";
|
|
||||||
import { Token, TokenIter } from "./token.ts";
|
import { Token, TokenIter } from "./token.ts";
|
||||||
|
|
||||||
export class Lexer implements TokenIter {
|
export class Lexer implements TokenIter {
|
||||||
|
0
slige/compiler/parse/mod.ts
Normal file
0
slige/compiler/parse/mod.ts
Normal file
@ -1,15 +1,11 @@
|
|||||||
import {
|
import {
|
||||||
AnonFieldDef,
|
AnonFieldDef,
|
||||||
BinaryType,
|
|
||||||
ExprField,
|
|
||||||
PathSegment,
|
|
||||||
RefType,
|
|
||||||
UnaryType,
|
|
||||||
} from "../ast/ast.ts";
|
|
||||||
import {
|
|
||||||
AssignType,
|
AssignType,
|
||||||
|
BinaryType,
|
||||||
Block,
|
Block,
|
||||||
|
Cx,
|
||||||
Expr,
|
Expr,
|
||||||
|
ExprField,
|
||||||
ExprKind,
|
ExprKind,
|
||||||
File,
|
File,
|
||||||
GenericParam,
|
GenericParam,
|
||||||
@ -19,16 +15,16 @@ import {
|
|||||||
Param,
|
Param,
|
||||||
Pat,
|
Pat,
|
||||||
Path,
|
Path,
|
||||||
|
PathSegment,
|
||||||
PatKind,
|
PatKind,
|
||||||
|
RefType,
|
||||||
Stmt,
|
Stmt,
|
||||||
StmtKind,
|
StmtKind,
|
||||||
Ty,
|
Ty,
|
||||||
TyKind,
|
TyKind,
|
||||||
} from "../ast/ast.ts";
|
UnaryType,
|
||||||
import { Cx } from "../ast/cx.ts";
|
} from "@slige/ast";
|
||||||
import { Ctx, File as CtxFile } from "../ctx.ts";
|
import { Ctx, File as CtxFile, Pos, Res, Span, todo } from "@slige/common";
|
||||||
import { Pos, Span } from "../diagnostics.ts";
|
|
||||||
import { Res, todo } from "../util.ts";
|
|
||||||
import { Lexer } from "./lexer.ts";
|
import { Lexer } from "./lexer.ts";
|
||||||
import { TokenIter } from "./token.ts";
|
import { TokenIter } from "./token.ts";
|
||||||
import { SigFilter } from "./token.ts";
|
import { SigFilter } from "./token.ts";
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { Span } from "../diagnostics.ts";
|
import { IdentId, Span } from "@slige/common";
|
||||||
import { IdentId } from "../ids.ts";
|
|
||||||
|
|
||||||
export type Token = {
|
export type Token = {
|
||||||
type: string;
|
type: string;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import * as ast from "../ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
import { IdBase, IdentId, IdMap } from "../ids.ts";
|
import { IdBase, IdentId, IdMap, Res } from "@slige/common";
|
||||||
import { Res } from "../util.ts";
|
|
||||||
|
|
||||||
export interface Syms {
|
export interface Syms {
|
||||||
getVal(ident: ast.Ident): Resolve;
|
getVal(ident: ast.Ident): Resolve;
|
||||||
|
4
slige/compiler/resolve/deno.jsonc
Normal file
4
slige/compiler/resolve/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/resolve",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
2
slige/compiler/resolve/mod.ts
Normal file
2
slige/compiler/resolve/mod.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./resolver.ts";
|
||||||
|
export * from "./cx.ts";
|
@ -1,7 +1,5 @@
|
|||||||
import * as ast from "../ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
import { Ctx, File } from "../ctx.ts";
|
import { AstId, Ctx, exhausted, File, IdMap, Ids, todo } from "@slige/common";
|
||||||
import { AstId, IdMap, Ids } from "../ids.ts";
|
|
||||||
import { exhausted, todo } from "../util.ts";
|
|
||||||
import {
|
import {
|
||||||
FnSyms,
|
FnSyms,
|
||||||
LocalId,
|
LocalId,
|
||||||
@ -156,7 +154,7 @@ export class Resolver implements ast.Visitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
visitPathPat(pat: ast.Pat, kind: ast.PathPat): ast.VisitRes {
|
visitPathPat(pat: ast.Pat, kind: ast.PathPat): ast.VisitRes {
|
||||||
todo();
|
todo(pat, kind);
|
||||||
}
|
}
|
||||||
|
|
||||||
visitBlock(block: ast.Block): ast.VisitRes {
|
visitBlock(block: ast.Block): ast.VisitRes {
|
||||||
@ -166,6 +164,14 @@ export class Resolver implements ast.Visitor {
|
|||||||
return "stop";
|
return "stop";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
visitPath(_path: ast.Path): ast.VisitRes {
|
||||||
|
throw new Error("should not be reached");
|
||||||
|
}
|
||||||
|
|
||||||
|
visitIdent(_ident: ast.Ident): ast.VisitRes {
|
||||||
|
throw new Error("should not be reached");
|
||||||
|
}
|
||||||
|
|
||||||
private resolveInnerPath(path: ast.Path): Resolve {
|
private resolveInnerPath(path: ast.Path): Resolve {
|
||||||
const res = path.segments.slice(1, path.segments.length)
|
const res = path.segments.slice(1, path.segments.length)
|
||||||
.reduce((innerRes, seg) => {
|
.reduce((innerRes, seg) => {
|
||||||
|
4
slige/compiler/ty/deno.jsonc
Normal file
4
slige/compiler/ty/deno.jsonc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@slige/ty",
|
||||||
|
"exports": "./mod.ts",
|
||||||
|
}
|
2
slige/compiler/ty/mod.ts
Normal file
2
slige/compiler/ty/mod.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./ty.ts";
|
||||||
|
export * from "./to_string.ts";
|
@ -1,5 +1,4 @@
|
|||||||
import { Ctx } from "../ctx.ts";
|
import { Ctx, exhausted } from "@slige/common";
|
||||||
import { exhausted } from "../util.ts";
|
|
||||||
import { Ty } from "./ty.ts";
|
import { Ty } from "./ty.ts";
|
||||||
|
|
||||||
export function tyToString(ctx: Ctx, ty: Ty): string {
|
export function tyToString(ctx: Ctx, ty: Ty): string {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as ast from "../ast/mod.ts";
|
import * as ast from "@slige/ast";
|
||||||
|
|
||||||
export type Ty = {
|
export type Ty = {
|
||||||
kind: TyKind;
|
kind: TyKind;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user