Skip to content

Commit 8e1c32f

Browse files
committed
Merge branch 'parser'
# Conflicts: # RELEASE.md
2 parents b51fb01 + 902db7c commit 8e1c32f

39 files changed

+1866
-4361
lines changed

RELEASE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## upcoming
22

3+
* Switched from generated to handwritten recursive descent parser.
34
* Bug fixes: EXP/LOG, unary +, case sensitivity of variables, comma
45
separator in PRINT, VAL tolerates erroneous input and returns 0.
56

pom.xml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,6 @@
3838

3939
<build>
4040
<plugins>
41-
<plugin>
42-
<groupId>org.codehaus.mojo</groupId>
43-
<artifactId>javacc-maven-plugin</artifactId>
44-
<version>3.0.1</version>
45-
<executions>
46-
<execution>
47-
<id>javacc</id>
48-
<goals>
49-
<goal>javacc</goal>
50-
</goals>
51-
<configuration>
52-
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
53-
<outputDirectory>${basedir}/src/main/java</outputDirectory>
54-
</configuration>
55-
</execution>
56-
</executions>
57-
</plugin>
5841
<plugin>
5942
<groupId>org.apache.maven.plugins</groupId>
6043
<artifactId>maven-surefire-plugin</artifactId>

src/main/java/de/haupz/basicode/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import de.haupz.basicode.ast.ProgramNode;
44
import de.haupz.basicode.interpreter.Configuration;
55
import de.haupz.basicode.interpreter.InterpreterState;
6+
import de.haupz.basicode.parser.Parser;
67
import de.haupz.basicode.ui.BasicFrame;
7-
import de.haupz.basicode.parser.BasicParser;
88
import de.haupz.basicode.ui.BasicContainer;
99

1010
import javax.swing.*;
@@ -106,7 +106,7 @@ private static String getSource(String filename) throws IOException {
106106
* @throws Exception in case anything goes wrong.
107107
*/
108108
public static void run(String code, Configuration configuration) throws Exception {
109-
final BasicParser parser = new BasicParser(new StringReader(code));
109+
final Parser parser = new Parser(new StringReader(code));
110110
ProgramNode prog = parser.program();
111111
InterpreterState state = new InterpreterState(prog, bc, bc, configuration);
112112
bc.registerStopKeyHandler(() -> state.terminate());

src/main/java/de/haupz/basicode/ast/DataNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public DataNode(List<Object> data) {
1717
this.data = List.copyOf(data);
1818
}
1919

20+
public List<Object> getData() {
21+
return data;
22+
}
23+
2024
@Override
2125
public void run(InterpreterState state) {
2226
// naught

src/main/java/de/haupz/basicode/ast/DefFnNode.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ public DefFnNode(String id, String arg, ExpressionNode expression) {
2929
this.expression = expression;
3030
}
3131

32+
public String getId() {
33+
return id;
34+
}
35+
36+
public String getArg() {
37+
return arg;
38+
}
39+
40+
public ExpressionNode getExpression() {
41+
return expression;
42+
}
43+
3244
@Override
3345
public void run(InterpreterState state) {
3446
Function fn = new Function(arg, expression);

src/main/java/de/haupz/basicode/ast/DependentJumpNode.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ public DependentJumpNode(ExpressionNode expression, List<Integer> targets) {
2626
this.targets = targets;
2727
}
2828

29+
public ExpressionNode getExpression() {
30+
return expression;
31+
}
32+
33+
public List<Integer> getTargets() {
34+
return targets;
35+
}
36+
2937
/**
3038
* Compute a jump target from a value derived from evaluating {@link #expression}.
3139
*

src/main/java/de/haupz/basicode/ast/DimCreateNode.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ public DimCreateNode(String id, ExpressionNode dim1, ExpressionNode dim2) {
3535
this.dim2 = dim2;
3636
}
3737

38+
public String getId() {
39+
return id;
40+
}
41+
42+
public ExpressionNode getDim1() {
43+
return dim1;
44+
}
45+
46+
public ExpressionNode getDim2() {
47+
return dim2;
48+
}
49+
3850
@Override
3951
public void run(InterpreterState state) {
4052
ArrayType type = id.endsWith("$") ? ArrayType.STRING : ArrayType.NUMBER;

src/main/java/de/haupz/basicode/ast/DimNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public DimNode(List<DimCreateNode> dims) {
1717
this.dims = List.copyOf(dims);
1818
}
1919

20+
public List<DimCreateNode> getDims() {
21+
return dims;
22+
}
23+
2024
@Override
2125
public void run(InterpreterState state) {
2226
dims.forEach(d -> d.run(state));

src/main/java/de/haupz/basicode/ast/ExpressionNode.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package de.haupz.basicode.ast;
22

33
import de.haupz.basicode.interpreter.InterpreterState;
4-
import de.haupz.basicode.parser.Token;
5-
6-
import java.util.List;
74

85
/**
96
* The super class of all AST nodes representing BASICODE expressions. It overrides

src/main/java/de/haupz/basicode/ast/ForNode.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@ public ForNode(String id, ExpressionNode init, ExpressionNode end, ExpressionNod
3939
this.step = step == null ? new DoubleNode(1.0) : step;
4040
}
4141

42+
public String getId() {
43+
return id;
44+
}
45+
46+
public ExpressionNode getInit() {
47+
return init;
48+
}
49+
50+
public ExpressionNode getEnd() {
51+
return end;
52+
}
53+
54+
public ExpressionNode getStep() {
55+
return step;
56+
}
57+
4258
@Override
4359
public void run(InterpreterState state) {
4460
if (!state.isRunningLoop(id)) {

0 commit comments

Comments
 (0)