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 81112x 81112x 81112x 1x 1x 344400x 344400x 344400x 344400x 24x 24x 344400x 344400x 344400x 1x 1x 1137x 1137x 1137x 1137x 1x 1x 1224x 1224x 1x 1x 3793x 3793x 1x 1x 4080x 4080x 1x 1x 814x 814x 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();
}
} |