UNPKG

6.91 kBTypeScriptView Raw
1/**
2 * Consumes (and documents) the messy output produced by the parser, and turns it into parsedsyntax.ts types. This file could easily produce garbage output if there's a mismatch between the documented types and the types that the parser produces. This file should only throw errors to document invariants of the parser; user errors should be thrown in restrictsyntax.ts.
3 *
4 * The structure of this file should match parsedsyntax.ts as much as practical.
5 */
6import { Token } from "moo";
7import * as ast from "./ast";
8import * as parsed from "./parsedsyntax";
9export declare function Identifier([{value, text, offset, lineBreaks, line, col}]: Token[]): ast.Identifier;
10export declare function IntType([tok]: [Token]): ast.IntType;
11export declare function BoolType([tok]: [Token]): ast.BoolType;
12export declare function StringType([tok]: [Token]): ast.StringType;
13export declare function CharType([tok]: [Token]): ast.CharType;
14export declare function VoidType([tok]: [Token]): ast.VoidType;
15export declare function PointerType([tp, s, tok]: [ast.Type, any, Token]): ast.PointerType;
16export declare function ArrayType([tp, s1, l, s2, r]: [ast.Type, any, Token, any, Token]): ast.ArrayType;
17export declare function StructType([str, s, id]: [Token, any, ast.Identifier]): ast.StructType;
18export declare function IntLiteral([{value, text, offset, lineBreaks, line, col}]: Token[]): parsed.IntLiteral;
19export declare function CharLiteral([[start, [tok], end]]: [[Token, [Token], Token]]): parsed.CharLiteral;
20export declare function StringLiteral([[start, toks, end]]: [[Token, [Token][], Token]]): parsed.StringLiteral;
21export declare function BoolLiteral([t]: [Token]): ast.BoolLiteral;
22export declare function NullLiteral(): ast.NullLiteral;
23export declare function ArrayMemberExpression([object, s1, l, s2, index, s3, r]: [parsed.Expression, any, Token, any, parsed.Expression, any, Token]): parsed.ArrayMemberExpression;
24export declare type Arguments = [Token, any, null | [parsed.Expression, any, [Token, any, parsed.Expression][]], Token];
25export declare function Arguments([l, s1, args, r]: Arguments): parsed.Expression[];
26export declare function StructMemberExpression([object, s1, deref, s2, field]: [parsed.Expression, any, [Token, Token] | Token, any, ast.Identifier]): parsed.StructMemberExpression;
27export declare function CallExpression([f, ws, args]: [ast.Identifier, any, Arguments]): parsed.CallExpression;
28export declare function IndirectCallExpression([l, s1, s, s2, f, s3, r, s4, args]: [Token, any, Token, any, parsed.Expression, any, Token, any, Arguments]): parsed.IndirectCallExpression;
29export declare function UnaryExpression([operator, s, argument]: [any[], Token, parsed.Expression]): parsed.UnaryExpression | parsed.CastExpression;
30export declare function BinaryExpression([left, s1, opertoks, s2, right]: [parsed.Expression, any, Token[], any, parsed.Expression]): parsed.BinaryExpression | parsed.LogicalExpression | parsed.AssignmentExpression;
31export declare function ConditionalExpression([test, s1, op1, s2, consequent, s3, op2, s4, alternate]: [parsed.Expression, any, any, any, parsed.Expression, any, any, any, parsed.Expression]): parsed.ConditionalExpression;
32export declare function AllocExpression([alloc, s1, l, s2, typ, s3, r]: [Token, any, Token, any, ast.Type, any, Token]): parsed.AllocExpression;
33export declare function AllocArrayExpression([alloc, s1, l, s2, typ, s3, c, s4, size, sp, r]: [Token, any, Token, any, ast.Type, any, Token, any, parsed.Expression, any, Token]): parsed.AllocArrayExpression;
34export declare function ResultExpression([b, res]: [Token, Token]): parsed.ResultExpression;
35export declare function LengthExpression([b, length, s1, l, s2, argument, s3, r]: [Token, Token, any, Token, any, parsed.Expression, any, Token]): parsed.LengthExpression;
36export declare function HasTagExpression([b, hastag, s1, l, s2, typ, s3, c, s4, argument, s5, r]: [Token, Token, any, Token, any, ast.Type, any, Token, any, parsed.Expression, any, Token]): parsed.HasTagExpression;
37export declare function UpdateExpression([argument, s1, op1, op2]: [parsed.Expression, any, Token, Token]): parsed.UpdateExpression;
38export declare function AssertExpression([assert, s1, l, s2, test, s3, r]: [Token, any, Token, any, parsed.Expression, any, Token]): parsed.AssertExpression;
39export declare function ErrorExpression([error, s1, l, s2, argument, s3, r]: [Token, any, Token, any, parsed.Expression, any, Token]): parsed.ErrorExpression;
40export declare type SimpleParsed = parsed.Expression | [ast.Type, any, ast.Identifier, null | [any, Token, any, parsed.Expression]];
41export declare function SimpleStatement([stm, s1, semi]: [SimpleParsed, any, Token]): parsed.VariableDeclaration | parsed.ExpressionStatement;
42export declare function IfStatement([i, s1, l, s2, test, s3, r, s4, [annos, consequent]]: [Token, any, Token, any, parsed.Expression, any, Token, any, [parsed.Anno[], parsed.Statement]]): parsed.IfStatement;
43export declare function IfElseStatement([i, s1, l1, s2, test, s3, r, annos1, s4, consequent, s5, e, annos2, s6, alternate]: [Token, any, Token, any, parsed.Expression, any, Token, parsed.Anno[], any, parsed.Statement, any, Token, parsed.Anno[], any, parsed.Statement]): parsed.IfStatement;
44export declare function WhileStatement([w, s1, l, s2, test, s3, r, annos, s4, body]: [Token, any, Token, any, parsed.Expression, any, Token, parsed.Anno[], any, parsed.Statement]): parsed.WhileStatement;
45export declare function ForStatement([f, s1, l, init, s2, semi1, s3, test, s4, semi2, update, s5, r, annos, s6, body]: [Token, any, Token, null | [any, SimpleParsed], any, Token, any, parsed.Expression, any, Token, null | [any, parsed.Expression], any, Token, parsed.Anno[], any, parsed.Statement]): parsed.ForStatement;
46export declare function ReturnStatement([r, argument, s1, semi]: [Token, null | [any, parsed.Expression], any, Token]): parsed.ReturnStatement;
47export declare function BlockStatement([l, stms, annos, s, r]: [Token, [any, [parsed.Anno[], parsed.Statement]][], [any, [parsed.Anno]][], any, Token]): parsed.BlockStatement;
48export declare function BreakStatement([stm, s1, semi]: [Token, any, Token]): ast.BreakStatement;
49export declare function ContinueStatement([stm, s1, semi]: [Token, any, Token]): ast.ContinueStatement;
50export declare function Anno1(annos: [Token, any, parsed.Anno[], any, Token] | [Token, any, parsed.Anno[], any, Token, any[], Token]): parsed.Anno[];
51export declare function FunctionDeclarationArgs([l, s1, params, r]: [Token, any, null | [ast.Type, any, ast.Identifier, any, [Token, any, ast.Type, any, ast.Identifier, any][]], Token]): parsed.VariableDeclarationOnly[];
52export declare function FunctionDeclaration([ty, s1, f, s2, args, annos, s3, def]: [ast.Type, any, ast.Identifier, any, ast.VariableDeclarationOnly[], parsed.Anno[], any, null | parsed.BlockStatement]): parsed.FunctionDeclaration;