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 80915x 80915x 80915x 1x 1x 343642x 343642x 343642x 343642x 24x 24x 343642x 343642x 343642x 1x 1x 1137x 1137x 1137x 1137x 1x 1x 1221x 1221x 1x 1x 3784x 3784x 1x 1x 4066x 4066x 1x 1x 812x 812x 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();
}
} |