UNPKG

simc-ast-builder

Version:

Parser and AST generator for SimulationCraft files

146 lines 9.24 kB
import { ActionLineContext, ActionNameContext, ActionParamContext, AdditiveExprContext, AndExprContext, AnyTokenExprContext, CommentLineContext, ComparisonExprContext, ExpressionContext, IdentifierContext, MathFuncExprContext, MinMaxExprContext, MixedIdExprContext, MultiplicativeExprContext, NumberExprContext, OrExprContext, ParseContext, StringExprContext, SublistNameContext, UnaryExprContext, XorExprContext } from "../../../antlr4/SimCExprParser"; import { ActionLineNode, ASTNode, CommentLineNode, ExpressionNode, ParameterNode } from "../common-types"; import { SimCGenericVisitor } from "../SimCGenericVisitor"; export interface AccessHandlerParams<T = ExpressionContext> { ctx: T; meta: LineMetaData; parts: string[]; visitor: SimCGenericVisitor; } export interface LineMetaData { actionLine: string; actionName: string; actionParams: ActionParamContext[]; subListName: string; } type AccessHandlerKey = keyof AccessHandlerTypeMap; type AccessHandlerTypeMap = { action: (params: AccessHandlerParams) => ExpressionNode; active_dot: (params: AccessHandlerParams) => ExpressionNode; boar_charge: (params: AccessHandlerParams) => ExpressionNode; buff: (params: AccessHandlerParams) => ExpressionNode; consecration: (params: AccessHandlerParams) => ExpressionNode; cooldown: (params: AccessHandlerParams) => ExpressionNode; cycle_enemies: (params: AccessHandlerParams) => ExpressionNode; death_and_decay: (params: AccessHandlerParams) => ExpressionNode; debuff: (params: AccessHandlerParams) => ExpressionNode; dot: (params: AccessHandlerParams) => ExpressionNode; empowering: (params: AccessHandlerParams) => ExpressionNode; fight_remains: (params: AccessHandlerParams) => ExpressionNode; firestarter: (params: AccessHandlerParams) => ExpressionNode; howl_summon: (params: AccessHandlerParams) => ExpressionNode; improved_scorch: (params: AccessHandlerParams) => ExpressionNode; hyperthread_wristwraps: (params: AccessHandlerParams) => ExpressionNode; lightning_rod: (params: AccessHandlerParams) => ExpressionNode; main_hand: (params: AccessHandlerParams) => ExpressionNode; movement: (params: AccessHandlerParams) => ExpressionNode; prev: (params: AccessHandlerParams) => ExpressionNode; prev_gcd: (params: AccessHandlerParams) => ExpressionNode; prev_off_gcd: (params: AccessHandlerParams) => ExpressionNode; release: (params: AccessHandlerParams) => ExpressionNode; remaining_winters_chill: (params: AccessHandlerParams) => ExpressionNode; scorch_execute: (params: AccessHandlerParams) => ExpressionNode; set_bonus: (params: AccessHandlerParams) => ExpressionNode; stat: (params: AccessHandlerParams) => ExpressionNode; eclipse: (params: AccessHandlerParams) => ExpressionNode; equipped: (params: AccessHandlerParams) => ExpressionNode; feral_spirit: (params: AccessHandlerParams) => ExpressionNode; health: (params: AccessHandlerParams) => ExpressionNode; hero_tree: (params: AccessHandlerParams) => ExpressionNode; raid_event: (params: AccessHandlerParams) => ExpressionNode; runic_power: (params: AccessHandlerParams) => ExpressionNode; rage: (params: AccessHandlerParams) => ExpressionNode; energy: (params: AccessHandlerParams) => ExpressionNode; mana: (params: AccessHandlerParams) => ExpressionNode; focus: (params: AccessHandlerParams) => ExpressionNode; fury: (params: AccessHandlerParams) => ExpressionNode; rune: (params: AccessHandlerParams) => ExpressionNode; astral_power: (params: AccessHandlerParams) => ExpressionNode; maelstrom: (params: AccessHandlerParams) => ExpressionNode; insanity: (params: AccessHandlerParams) => ExpressionNode; holy_power: (params: AccessHandlerParams) => ExpressionNode; soul_shard: (params: AccessHandlerParams) => ExpressionNode; soul_shards: (params: AccessHandlerParams) => ExpressionNode; combo_points: (params: AccessHandlerParams) => ExpressionNode; chi: (params: AccessHandlerParams) => ExpressionNode; essence: (params: AccessHandlerParams) => ExpressionNode; spell_targets: (params: AccessHandlerParams) => ExpressionNode; target: (params: AccessHandlerParams) => ExpressionNode; rtb_buffs: (params: AccessHandlerParams) => ExpressionNode; stagger: (params: AccessHandlerParams) => ExpressionNode; stealthed: (params: AccessHandlerParams) => ExpressionNode; talent: (params: AccessHandlerParams) => ExpressionNode; toggle: (params: AccessHandlerParams) => ExpressionNode; totem: (params: AccessHandlerParams) => ExpressionNode; trinket: (params: AccessHandlerParams) => ExpressionNode; variable: (params: AccessHandlerParams) => ExpressionNode; gcd: (params: AccessHandlerParams) => ExpressionNode; pet: (params: AccessHandlerParams) => ExpressionNode; time: (params: AccessHandlerParams) => ExpressionNode; boss: (params: AccessHandlerParams) => ExpressionNode; group_members: (params: AccessHandlerParams) => ExpressionNode; settings: (params: AccessHandlerParams) => ExpressionNode; death_knight: (params: AccessHandlerParams) => ExpressionNode; druid: (params: AccessHandlerParams) => ExpressionNode; evoker: (params: AccessHandlerParams) => ExpressionNode; hunter: (params: AccessHandlerParams) => ExpressionNode; mage: (params: AccessHandlerParams) => ExpressionNode; monk: (params: AccessHandlerParams) => ExpressionNode; paladin: (params: AccessHandlerParams) => ExpressionNode; priest: (params: AccessHandlerParams) => ExpressionNode; rogue: (params: AccessHandlerParams) => ExpressionNode; shaman: (params: AccessHandlerParams) => ExpressionNode; }; type ContextHandlerKey = keyof ContextHandlerTypeMap; type ContextHandlerTypeMap = { AccessExpr: (ctx: ExpressionContext, visitor: SimCGenericVisitor) => ExpressionNode; ActionLine: (ctx: ActionLineContext, visitor: SimCGenericVisitor) => ActionLineNode; ActionName: (ctx: ActionNameContext, visitor: SimCGenericVisitor) => ExpressionNode; ActionParam: (ctx: ActionParamContext, visitor: SimCGenericVisitor) => ParameterNode; AdditiveExpr: (ctx: AdditiveExprContext, visitor: SimCGenericVisitor) => ExpressionNode; AndExpr: (ctx: AndExprContext, visitor: SimCGenericVisitor) => ExpressionNode; AnyTokenExpr: (ctx: AnyTokenExprContext, visitor: SimCGenericVisitor) => ExpressionNode; CommentLine: (ctx: CommentLineContext, visitor: SimCGenericVisitor) => CommentLineNode; ComparisonExpr: (ctx: ComparisonExprContext, visitor: SimCGenericVisitor) => ExpressionNode; Identifier: (ctx: IdentifierContext, visitor: SimCGenericVisitor) => ExpressionNode; MathFuncExpr: (ctx: MathFuncExprContext, visitor: SimCGenericVisitor) => ExpressionNode; MinMaxExpr: (ctx: MinMaxExprContext, visitor: SimCGenericVisitor) => ExpressionNode; MixedIdExpr: (ctx: MixedIdExprContext, visitor: SimCGenericVisitor) => ExpressionNode; MultiplicativeExpr: (ctx: MultiplicativeExprContext, visitor: SimCGenericVisitor) => ExpressionNode; NumberExpr: (ctx: NumberExprContext, visitor: SimCGenericVisitor) => ExpressionNode; OrExpr: (ctx: OrExprContext, visitor: SimCGenericVisitor) => ExpressionNode; Parse: (ctx: ParseContext, visitor: SimCGenericVisitor) => ASTNode; StringExpr: (ctx: StringExprContext, visitor: SimCGenericVisitor) => ExpressionNode; SublistName: (ctx: SublistNameContext, visitor: SimCGenericVisitor) => ExpressionNode; UnaryExpr: (ctx: UnaryExprContext, visitor: SimCGenericVisitor) => ExpressionNode; XorExpr: (ctx: XorExprContext, visitor: SimCGenericVisitor) => ExpressionNode; }; declare class ContextHandlerRegistry { private accessHandlers; private contextHandlers; private lineMetaData; constructor(); dispatchAccess<K extends AccessHandlerKey>(accessType: K, ctx: ExpressionContext, visitor: SimCGenericVisitor, parts: string[]): ReturnType<AccessHandlerTypeMap[K]>; dispatchContext<K extends ContextHandlerKey>(contextType: K, ctx: any, visitor: any): ReturnType<ContextHandlerTypeMap[K]>; getAccessHandler<K extends AccessHandlerKey>(accessType: K): AccessHandlerTypeMap[K] | undefined; getContextHandler<K extends ContextHandlerKey>(contextType: K): ContextHandlerTypeMap[K] | undefined; /** * Check if a string is a valid access handler key * @param key The string to check * @returns True if the key is a valid access handler key */ hasAccessHandler(key: string): boolean; /** * Check if a string is a valid context handler key * @param key The string to check * @returns True if the key is a valid context handler key */ hasContextHandler(key: string): boolean; registerAccessHandler<K extends AccessHandlerKey>(accessType: K, handler: AccessHandlerTypeMap[K]): void; registerContextHandler<K extends ContextHandlerKey>(contextType: K, handler: ContextHandlerTypeMap[K]): void; setMetaData(metaData: LineMetaData): void; private registerDefaultHandlers; } export declare const contextHandlerRegistry: ContextHandlerRegistry; export {}; //# sourceMappingURL=ContextHandlerRegistry.d.ts.map