export declare const parseTreeTypesPrelude = "\n\n// Types used to describe the shape of the parse tree\n// that is generated by the parse function in Source 4.\n\n// Program\ntype Program = Pair<\"sequence\", Pair, null>>;\n\n// Statement\ntype Statement =\n | ConstantDeclaration\n | VariableDeclaration\n | FunctionDeclaration\n | ReturnStatement\n | ConditionalStatement\n | WhileLoop\n | ForLoop\n | BreakStatement\n | ContinueStatement\n | Block\n | Expression;\n\ntype ConstantDeclaration = Pair<\"constant_declaration\", Pair>>;\ntype FunctionDeclaration = Pair<\"function_declaration\", Pair>>>;\ntype ReturnStatement = Pair<\"return_statement\", Pair>;\ntype WhileLoop = Pair<\"while_loop\", Pair>>;\ntype ForLoop = Pair<\"for_loop\", Pair>>>>;\ntype BreakStatement = Pair<\"break_statement\", null>;\ntype ContinueStatement = Pair<\"continue_statement\", null>;\n\n// Parameters\ntype Parameters = List;\n\n// If-Statement\ntype ConditionalStatement = Pair<\"conditional_statement\", Pair>>>;\n\n// Block\ntype Block = Pair<\"block\", Pair>;\n\n// Let\ntype VariableDeclaration = Pair<\"variable_declaration\", Pair>>;\n\n// Assignment\ntype Assignment = Pair<\"assignment\", Pair>>;\ntype ObjectAssignment = Pair<\"object_assignment\", Pair>>;\n\n// Expression\ntype Expression =\n | Literal\n | Name\n | LogicalComposition\n | BinaryOperatorCombination\n | UnaryOperatorCombination\n | Application\n | LambdaExpression\n | ConditionalExpression\n | Assignment\n | ObjectAssignment\n | ObjectAccess\n | ArrayExpression;\n\ntype Literal = Pair<\"literal\", Pair>;\ntype Name = Pair<\"name\", Pair>;\ntype LogicalComposition = Pair<\"logical_composition\", Pair>>>;\ntype BinaryOperatorCombination = Pair<\"binary_operator_combination\", Pair>>>;\ntype UnaryOperatorCombination = Pair<\"unary_operator_combination\", Pair>>;\ntype Application = Pair<\"application\", Pair, null>>>;\ntype LambdaExpression = Pair<\"lambda_expression\", Pair>>;\ntype ConditionalExpression = Pair<\"conditional_expression\", Pair>>>;\ntype ObjectAccess = Pair<\"object_access\", Pair>>;\ntype ArrayExpression = Pair<\"array_expression\", Pair, null>>;\n\n// Operators\ntype LogicalOperator = \"&&\" | \"||\";\ntype BinaryOperator = \"+\" | \"-\" | \"*\" | \"/\" | \"%\" | \"===\" | \"!==\" | \"<\" | \">\" | \"<=\" | \">=\";\ntype UnaryOperator = \"!\" | \"-unary\";\n";