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 83085x 83085x 83085x 1x 1x 351893x 351893x 351893x 351893x 40x 40x 351893x 351893x 351893x 1x 1x 1139x 1139x 1139x 1139x 1x 1x 1272x 1272x 1x 1x 3840x 3840x 1x 1x 4150x 4150x 1x 1x 831x 831x 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();
}
} |