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 28790x 28790x 28790x 1x 1x 247797x 247797x 247797x 247797x 100x 100x 247797x 247797x 247797x 1x 1x 388x 388x 388x 388x 1x 1x 1321x 1321x 1x 1x 3899x 3899x 1x 1x 4005x 4005x 1x 1x 895x 895x 1x | import {Position} from "../../position";
import {AbstractToken} from "../1_lexer/tokens/abstract_token";
export class Identifier {
private readonly token: AbstractToken;
protected readonly filename: string;
public constructor(token: AbstractToken, 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(): AbstractToken {
return this.token;
}
public getFilename(): string {
return this.filename;
}
public getStart(): Position {
return this.token.getStart();
}
public getEnd(): Position {
return this.token.getEnd();
}
} |