Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 1x 1x 1x 1x 1x 1x 1x 1x 307465x 307465x 307465x 1x 1x 299914x 299914x 299914x 299914x 17x 17x 299914x 299914x 299914x 1x 1x 920x 920x 920x 920x 1x 1x 1091x 1091x 1x 1x 3283x 3283x 1x 1x 3387x 3387x 1x 1x 709x 709x 1x | import {Position} from "../../position"; import {Token} from "../1_lexer/tokens/_token"; export class Identifier { private readonly token: Token; protected readonly filename: string; public constructor(token: Token, filename: string) { this.token = token; this.filename = filename; } public getName() { let name = this.token.getStr(); // todo, should this be handled in the parser instead? if (name.substr(0, 1) === "!") { name = name.substr(1); } return name; } public equals(id: Identifier): boolean { // note how the boolean condition is evalulated lazily return id.getStart().equals(this.getStart()) && id.getFilename() === this.getFilename(); } public getToken(): Token { return this.token; } public getFilename(): string { return this.filename; } public getStart(): Position { return this.token.getStart(); } public getEnd(): Position { return this.token.getEnd(); } } |