mirror of
https://github.com/AppleCommander/bastools.git
synced 2024-05-28 19:41:31 +00:00
Tweaking logic (again) to more correctly reassign line numbers.
This commit is contained in:
parent
442cb1cdeb
commit
486016d7d6
|
@ -53,21 +53,21 @@ public class ReassignmentVisitor implements Visitor {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Statement visit(Statement statement) {
|
public Statement visit(Statement statement) {
|
||||||
boolean next = false;
|
boolean trigger = false;
|
||||||
boolean multiple = false;
|
boolean then = false; // Special case: Immediately after THEN, a number triggers reassignment.
|
||||||
Statement newStatement = new Statement();
|
Statement newStatement = new Statement();
|
||||||
for (Token t : statement.tokens) {
|
for (Token t : statement.tokens) {
|
||||||
Token newToken = t;
|
Token newToken = t;
|
||||||
if (next) {
|
if (trigger || then) {
|
||||||
if (t.type == Type.NUMBER && reassignments.containsKey(t.number.intValue())) {
|
if (t.type == Type.NUMBER && reassignments.containsKey(t.number.intValue())) {
|
||||||
newToken = Token.number(t.line, reassignments.get(t.number.intValue()).doubleValue());
|
newToken = Token.number(t.line, reassignments.get(t.number.intValue()).doubleValue());
|
||||||
}
|
}
|
||||||
next = multiple; // preserve next based on if we have multiple line numbers or not.
|
then = false;
|
||||||
} else {
|
}
|
||||||
next = t.keyword == ApplesoftKeyword.GOSUB || t.keyword == ApplesoftKeyword.GOTO
|
if (!trigger) {
|
||||||
|| t.keyword == ApplesoftKeyword.THEN || t.keyword == ApplesoftKeyword.RUN
|
trigger = t.keyword == ApplesoftKeyword.GOSUB || t.keyword == ApplesoftKeyword.GOTO
|
||||||
|| t.keyword == ApplesoftKeyword.LIST;
|
|| t.keyword == ApplesoftKeyword.LIST || t.keyword == ApplesoftKeyword.RUN;
|
||||||
multiple |= t.keyword == ApplesoftKeyword.LIST || t.keyword == ApplesoftKeyword.ON;
|
then = t.keyword == ApplesoftKeyword.THEN;
|
||||||
}
|
}
|
||||||
newStatement.tokens.add(newToken);
|
newStatement.tokens.add(newToken);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user