derw
Version:
An Elm-inspired language that transpiles to TypeScript
150 lines (149 loc) • 4.21 kB
TypeScript
import { TypeToken, BaseTypeToken, FunctionTypeToken, RootTypeTokens } from "./Tokens_types_kernel";
export { StringToken };
export { FormatStringToken };
export { KeywordToken };
export { IdentifierToken };
export { LiteralToken };
export { ColonToken };
export { ArrowToken };
export { CommentToken };
export { MultilineCommentToken };
export { AssignToken };
export { CommaToken };
export { OpenCurlyBracesToken };
export { CloseCurlyBracesToken };
export { OpenBracketToken };
export { CloseBracketToken };
export { PipeToken };
export { OperatorToken };
export { WhitespaceToken };
export { Token };
export { RootTypeTokens };
export { BaseTypeToken };
export { FunctionTypeToken };
export { TypeToken };
export { checkKeywordToken };
export { tokenize };
export { tokenizeType };
export { tokensToString };
export { rootTypeTokensToString };
type MultilineCommentBody = "{-" | "-}";
type StringToken = {
kind: "StringToken";
body: string;
};
declare function StringToken(args: {
body: string;
}): StringToken;
type FormatStringToken = {
kind: "FormatStringToken";
body: string;
indentLevel: number;
};
declare function FormatStringToken(args: {
body: string;
indentLevel: number;
}): FormatStringToken;
type KeywordToken = {
kind: "KeywordToken";
body: string;
};
declare function KeywordToken(args: {
body: string;
}): KeywordToken;
type IdentifierToken = {
kind: "IdentifierToken";
body: string;
};
declare function IdentifierToken(args: {
body: string;
}): IdentifierToken;
type LiteralToken = {
kind: "LiteralToken";
body: string;
};
declare function LiteralToken(args: {
body: string;
}): LiteralToken;
type ColonToken = {
kind: "ColonToken";
};
declare function ColonToken(args: {}): ColonToken;
type ArrowToken = {
kind: "ArrowToken";
};
declare function ArrowToken(args: {}): ArrowToken;
type CommentToken = {
kind: "CommentToken";
};
declare function CommentToken(args: {}): CommentToken;
type MultilineCommentToken = {
kind: "MultilineCommentToken";
body: MultilineCommentBody;
};
declare function MultilineCommentToken(args: {
body: MultilineCommentBody;
}): MultilineCommentToken;
type AssignToken = {
kind: "AssignToken";
};
declare function AssignToken(args: {}): AssignToken;
type CommaToken = {
kind: "CommaToken";
};
declare function CommaToken(args: {}): CommaToken;
type OpenCurlyBracesToken = {
kind: "OpenCurlyBracesToken";
};
declare function OpenCurlyBracesToken(args: {}): OpenCurlyBracesToken;
type CloseCurlyBracesToken = {
kind: "CloseCurlyBracesToken";
};
declare function CloseCurlyBracesToken(args: {}): CloseCurlyBracesToken;
type OpenBracketToken = {
kind: "OpenBracketToken";
};
declare function OpenBracketToken(args: {}): OpenBracketToken;
type CloseBracketToken = {
kind: "CloseBracketToken";
};
declare function CloseBracketToken(args: {}): CloseBracketToken;
type PipeToken = {
kind: "PipeToken";
};
declare function PipeToken(args: {}): PipeToken;
type OperatorToken = {
kind: "OperatorToken";
body: string;
};
declare function OperatorToken(args: {
body: string;
}): OperatorToken;
type WhitespaceToken = {
kind: "WhitespaceToken";
body: string;
};
declare function WhitespaceToken(args: {
body: string;
}): WhitespaceToken;
type Token = StringToken | FormatStringToken | KeywordToken | IdentifierToken | LiteralToken | ColonToken | ArrowToken | CommentToken | MultilineCommentToken | AssignToken | CommaToken | OpenCurlyBracesToken | CloseCurlyBracesToken | OpenBracketToken | CloseBracketToken | PipeToken | OperatorToken | WhitespaceToken;
declare function checkKeywordToken(currentToken: string): Token[];
declare function tokenize(body: string): Token[];
declare function tokensToString(tokens: Token[]): string;
type Ok<b> = {
kind: "Ok";
value: b;
};
declare function Ok<b>(args: {
value: b;
}): Ok<b>;
type Err<a> = {
kind: "Err";
error: a;
};
declare function Err<a>(args: {
error: a;
}): Err<a>;
type Result<a, b> = Ok<b> | Err<a>;
declare function tokenizeType(tokens: Token[]): Result<string, RootTypeTokens[]>;
declare function rootTypeTokensToString(tokens: RootTypeTokens[]): string;