From 1367acb05f844d7cfdc7e32eea0dbe4647e7f79e Mon Sep 17 00:00:00 2001 From: aNNiMON Date: Wed, 6 Mar 2024 00:18:13 +0200 Subject: [PATCH] Add Navigable interface --- src/parser/Parser.ts | 11 ++++++++--- src/view/model/Navigable.ts | 10 ++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 src/view/model/Navigable.ts diff --git a/src/parser/Parser.ts b/src/parser/Parser.ts index cea1b59..1ead9a6 100644 --- a/src/parser/Parser.ts +++ b/src/parser/Parser.ts @@ -3,6 +3,7 @@ import { Variables } from "../runtime/Variables"; import { FadeInfo } from "../view/model/FadeInfo"; import { Menu } from "../view/model/Menu"; import { ViewModel } from "../view/model/ViewModel"; +import { Navigable } from "../view/model/Navigable"; import { Token } from "./Token"; import { TokenType } from "./TokenType"; import { @@ -13,7 +14,7 @@ import { Operator } from "./ast"; -export class Parser { +export class Parser implements Navigable { private readonly EOF = new Token("", TokenType.EOF); private tokensCount: number @@ -43,17 +44,21 @@ export class Parser { this.vm = view } - public setPosition(position): void { + public setPosition(position: number): void { this.position = position; this.next(); } - public jumpLabel(label): void { + public jumpLabel(label: string): void { if (label in this.labels) { this.position = this.labels[label]; } } + public getLastPosition(): number { + return this.lastPosition; + } + public next(): void { this.lastPosition = this.position; diff --git a/src/view/model/Navigable.ts b/src/view/model/Navigable.ts new file mode 100644 index 0000000..3c07cff --- /dev/null +++ b/src/view/model/Navigable.ts @@ -0,0 +1,10 @@ +export interface Navigable { + + setPosition(position: number): void + getLastPosition(): number + + next(): void + jumpLabel(label: string): void + prevScene(): void + nextScene(): void +} \ No newline at end of file