simc-ast-builder
Version:
Parser and AST generator for SimulationCraft files
146 lines • 9.24 kB
TypeScript
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