slige-mirror/compiler/parser/token.ts
2025-01-28 15:15:30 +01:00

31 lines
666 B
TypeScript

import { IdentId } from "../ctx.ts";
import { Span } from "../diagnostics.ts";
export type Token = {
type: string;
span: Span;
length: number;
identId?: IdentId;
intValue?: number;
stringValue?: string;
};
export interface TokenIter {
next(): Token | null;
}
export class SigFilter implements TokenIter {
public constructor(private iter: TokenIter) {}
next(): Token | null {
const token = this.iter.next();
if (token === null) {
return token;
}
if (token?.type === "whitespace" || token?.type === "comment") {
return this.next();
}
return token;
}
}