import { InstructionTiming } from "../timings"; import { StatementNode } from "./nodes"; export interface Line { statement: StatementNode; macroLines?: Line[]; bytes?: number; bss?: boolean; timing?: InstructionTiming; } export default class Parser { /** Variable/constants state */ private vars; /** Macro definitions */ private macros; /** Running total of parsed statement bytes sizes */ private totalBytes; /** The name of the macro currently being defined */ private currentMacro; /** Start of the current repeating group */ private reptStart; /** Statements in the current repeating group */ private reptStatements; /** Are we currently in a BSS section */ private bss; private assignments; private sections; /** * Parse multiple lines of ASM code */ parse(input: string): Line[]; /** * Add size and timing info to statements */ private processStatements; private processStatement; private processLabel; private processMacro; private processDirective; private processInstruction; }