import DocComment from "../comments/DocComment"; import LiteralToken from "../LiteralToken"; import Token from "../Token"; import AssignmentNode from "./AssignmentNode"; import ASTNode from "./ASTNode"; import ASTVisitor from "./ASTVisitor"; import { Expression } from "./expressions"; /** * @category AST */ export declare abstract class Statement extends ASTNode { } /** * @category AST */ export declare class UseStmt extends Statement { filename: string; tokens: { useKeyword: Token; filename: LiteralToken; }; /** * * @param pos * @param filename The used filename */ constructor(filename: string, tokens: { useKeyword: Token; filename: LiteralToken; }); accept(visitor: ASTVisitor): R; } /** * @category AST */ export declare class IncludeStmt extends Statement { filename: string; tokens: { includeKeyword: Token; filename: LiteralToken; }; /** * * @param pos * @param filename The used filename */ constructor(filename: string, tokens: { includeKeyword: Token; filename: LiteralToken; }); accept(visitor: ASTVisitor): R; } /** * Represents a statement that can be prefixed with the !%#* symbols to change it's behaviour. * @category AST */ export interface TaggableStatement { /** * Set to true if this module instantation has been tagged with a '!' symbol. */ tagRoot: boolean; /** * Set to true if this module instantation has been tagged with a '#' symbol. */ tagHighlight: boolean; /** * Set to true if this module instantation has been tagged with a '%' symbol. */ tagBackground: boolean; /** * Set to true if this module instantation has been tagged with a '*' symbol. */ tagDisabled: boolean; } /** * @category AST */ export declare class ModuleInstantiationStmt extends Statement implements TaggableStatement { name: string; args: AssignmentNode[]; /** * The child statement in a module instantiation chain. * Can be null if this is the last statement in the chain. */ child: Statement | null; tokens: { name: Token; firstParen: Token; secondParen: Token; modifiersInOrder: Token[]; }; /** * ! */ tagRoot: boolean; /** * # */ tagHighlight: boolean; /** * % */ tagBackground: boolean; /** * * */ tagDisabled: boolean; constructor(name: string, args: AssignmentNode[], /** * The child statement in a module instantiation chain. * Can be null if this is the last statement in the chain. */ child: Statement | null, tokens: { name: Token; firstParen: Token; secondParen: Token; modifiersInOrder: Token[]; }); accept(visitor: ASTVisitor): R; } /** * @category AST */ export declare class ModuleDeclarationStmt extends Statement { name: string; definitionArgs: AssignmentNode[]; stmt: Statement; tokens: { moduleKeyword: Token; name: Token; firstParen: Token; secondParen: Token; }; docComment: DocComment; constructor(name: string, definitionArgs: AssignmentNode[], stmt: Statement, tokens: { moduleKeyword: Token; name: Token; firstParen: Token; secondParen: Token; }, docComment: DocComment); accept(visitor: ASTVisitor): R; } /** * FunctionDeclarationStmt reperesents a named function declaration statement. * @category AST */ export declare class FunctionDeclarationStmt extends Statement { name: string; definitionArgs: AssignmentNode[]; expr: Expression; tokens: { functionKeyword: Token; name: Token; firstParen: Token; secondParen: Token; equals: Token; semicolon: Token; }; docComment: DocComment; constructor(name: string, definitionArgs: AssignmentNode[], expr: Expression, tokens: { functionKeyword: Token; name: Token; firstParen: Token; secondParen: Token; equals: Token; semicolon: Token; }, docComment: DocComment); accept(visitor: ASTVisitor): R; } /** * @category AST */ export declare class BlockStmt extends Statement { children: Statement[]; tokens: { firstBrace: Token; secondBrace: Token; }; constructor(children: Statement[], tokens: { firstBrace: Token; secondBrace: Token; }); accept(visitor: ASTVisitor): R; } /** * @category AST */ export declare class NoopStmt extends Statement { tokens: { semicolon: Token; }; constructor(tokens: { semicolon: Token; }); accept(visitor: ASTVisitor): R; } /** * IfElseStmt represents an if-else statement. elseIfs are represented as * additional IfElseStmt instances in the else branch (simmilar to how C works). * @category AST */ export declare class IfElseStatement extends Statement implements TaggableStatement { cond: Expression; thenBranch: Statement; /** * The else branch. * It can be null if there is no else branch. */ elseBranch: Statement | null; tokens: { ifKeyword: Token; firstParen: Token; secondParen: Token; elseKeyword: Token | null; modifiersInOrder: Token[]; }; tagRoot: boolean; tagHighlight: boolean; tagBackground: boolean; tagDisabled: boolean; constructor(cond: Expression, thenBranch: Statement, /** * The else branch. * It can be null if there is no else branch. */ elseBranch: Statement | null, tokens: { ifKeyword: Token; firstParen: Token; secondParen: Token; elseKeyword: Token | null; modifiersInOrder: Token[]; }); accept(visitor: ASTVisitor): R; }