import * as ast from "../ast/index"; import { Token } from "../parser/recursive-descent-parser"; export interface Visitor { visitProto: VisitFn; visitTopLevelStatement: VisitFn; visitSyntax: VisitFn; visitEdition: VisitFn; visitImport: VisitFn; visitPackage: VisitFn; visitOption: VisitFn; visitOptionName: VisitFn; visitOptionNameSegment: VisitFn; visitTopLevelDef: VisitFn; visitMessage: VisitFn; visitMessageBody: VisitFn; visitMessageBodyStatement: VisitFn; visitEnum: VisitFn; visitEnumBody: VisitFn; visitEnumBodyStatement: VisitFn; visitEnumField: VisitFn; visitExtend: VisitFn; visitExtendBody: VisitFn; visitExtendBodyStatement: VisitFn; visitService: VisitFn; visitServiceBody: VisitFn; visitServiceBodyStatement: VisitFn; visitRpc: VisitFn; visitRpcBody: VisitFn; visitRpcBodyStatement: VisitFn; visitRpcType: VisitFn; visitEmpty: VisitFn; visitField: VisitFn; visitFieldOptions: VisitFn; visitFieldOption: VisitFn; visitGroup: VisitFn; visitOneof: VisitFn; visitOneofBody: VisitFn; visitOneofBodyStatement: VisitFn; visitOneofField: VisitFn; visitOneofGroup: VisitFn; visitMalformedField: VisitFn; visitMapField: VisitFn; visitExtensions: VisitFn; visitRanges: VisitFn; visitRange: VisitFn; visitMax: VisitFn; visitReserved: VisitFn; visitFieldNames: VisitFn; visitConstant: VisitFn; visitCommentGroup: VisitFn; visitComment: VisitFn; visitSinglelineComment: VisitFn; visitMultilineComment: VisitFn; visitKeyword: VisitFn; visitType: VisitFn; visitFullIdent: VisitFn; visitIntLit: VisitFn; visitSignedIntLit: VisitFn; visitFloatLit: VisitFn; visitSignedFloatLit: VisitFn; visitStrLit: VisitFn; visitBoolLit: VisitFn; visitAggregate: VisitFn; visitIdent: VisitFn; visitDot: VisitFn; visitComma: VisitFn; visitSemi: VisitFn; visitToken: VisitFn; } export interface VisitFn { (visitor: Visitor, node: T): void; } export declare const visitor: Visitor; export declare function visitStatementBase(visitor: Visitor, node: T, visit: () => void): void;