export enum LocType { REGISTER = "register", TEMPORARY = "temporary", VARIABLE = "variable", } export class Loc { type: LocType name: string constructor(type: LocType, name: string) { this.type = type this.name = name } toString(): string { let sigil = '' switch (this.type) { case 'register': sigil = '%' break case 'temporary': sigil = '#' break } return sigil + this.name } static vari(name: string): Loc { return new Loc(LocType.VARIABLE, name) } static temp(name: string): Loc { return new Loc(LocType.TEMPORARY, name) } static reg(name: string): Loc { return new Loc(LocType.REGISTER, name) } }