Skip to content

Commit 990e61f

Browse files
committed
AST, Parsed, and misc improvements
1 parent 4e58e0a commit 990e61f

File tree

270 files changed

+10807
-933
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+10807
-933
lines changed

Parser/src/main/java/org/openzen/zenscript/parser/ParsedFile.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ public ParsedFile(CompilingPackage pkg, SourceFile file) {
4040
this.file = file;
4141
}
4242

43+
public ParsedFile(CompilingPackage pkg, SourceFile file, List<ParsedImport> imports, List<ParsedDefinition> definitions, List<ParsedStatement> statements) {
44+
this.pkg = pkg;
45+
this.file = file;
46+
this.imports.addAll(imports);
47+
this.definitions.addAll(definitions);
48+
this.statements.addAll(statements);
49+
}
50+
51+
4352
public static SemanticModule compileSyntaxToSemantic(
4453
SemanticModule[] dependencies,
4554
CompilingPackage modulePackage,

Parser/src/main/java/org/openzen/zenscript/parser/definitions/ParsedFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class ParsedFunction extends ParsedDefinition {
2727
private final ParsedFunctionBody body;
2828
private final String name;
2929

30-
private ParsedFunction(CodePosition position, Modifiers modifiers, ParsedAnnotation[] annotations, String name, ParsedFunctionHeader header, ParsedFunctionBody body) {
30+
public ParsedFunction(CodePosition position, Modifiers modifiers, ParsedAnnotation[] annotations, String name, ParsedFunctionHeader header, ParsedFunctionBody body) {
3131
super(position, modifiers, annotations);
3232

3333
this.header = header;

Parser/src/main/java/org/openzen/zenscript/parser/expression/ParsedExpressionFloat.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ public ParsedExpressionFloat(CodePosition position, String value) {
2424
suffix = value.substring(split);
2525
}
2626

27+
public ParsedExpressionFloat(CodePosition position, double value, String suffix) {
28+
super(position);
29+
this.value = value;
30+
this.suffix = suffix;
31+
}
32+
2733
private static boolean isLetter(char c) {
2834
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_';
2935
}

Parser/src/main/java/org/openzen/zenscript/parser/expression/ParsedExpressionInt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public ParsedExpressionInt(CodePosition position, String value) {
3030
suffix = value.substring(split);
3131
}
3232

33-
private ParsedExpressionInt(CodePosition position, boolean negative, long value, String suffix) {
33+
public ParsedExpressionInt(CodePosition position, boolean negative, long value, String suffix) {
3434
super(position);
3535

3636
this.negative = negative;

Parser/src/main/java/org/openzen/zenscript/parser/statements/ParsedStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public static ParsedStatement parse(ZSTokenParser parser, ParsedAnnotation[] ann
129129
parser.required(T_SEMICOLON, "; expected");
130130

131131
WhitespaceInfo whitespace = parser.collectWhitespaceInfo(ws, isFirst);
132-
return new ParsedStatementVar(position, annotations, whitespace, name, type, initializer, start.getType() == K_VAL);
132+
return new ParsedStatementVar(position.until(parser.getPosition()), annotations, whitespace, name, type, initializer, start.getType() == K_VAL);
133133
}
134134
case K_IF: {
135135
parser.next();

Parser/src/main/java/org/openzen/zenscript/tree/Definition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,11 @@ static void parseEnum(TreeParser p, TreeParser.MarkClosed modifiers) {
149149
if (p.at(T_SEMICOLON)) {
150150
p.eat(T_SEMICOLON);
151151
p.whitespace();
152+
TreeParser.MarkOpened membersOpen = p.open();
152153
while (!p.eat(T_ACLOSE)) {
153154
DefinitionMembers.parse(p);
154155
}
156+
p.close(membersOpen, TreeKind.MEMBERS);
155157
p.whitespace();
156158
} else {
157159
p.expect(T_ACLOSE);
@@ -290,7 +292,7 @@ static void parseVariant(TreeParser p, TreeParser.MarkClosed modifiers) {
290292
p.expect(T_ACLOSE);
291293
p.whitespace();
292294
}
293-
p.close(defMembersOpen, TreeKind.MEMBERS);
295+
p.close(defMembersOpen, TreeKind.VARIANTS);
294296
} else {
295297
p.recover("expected '{'", DEFINITION_RECOVERY_SET);
296298
}

Parser/src/main/java/org/openzen/zenscript/tree/DefinitionMembers.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,11 @@ static void parseField(TreeParser p, Modifiers.ModifierClose close) {
228228
}
229229

230230
if (p.at(T_ASSIGN)) {
231-
TreeParser.MarkOpened assignOpen = p.open();
232231
p.expect(T_ASSIGN);
233232
p.whitespace();
234233
if (Expression.parse(p) == null) {
235234
p.recover("expected expression", FIELD_RECOVERY);
236235
}
237-
p.close(assignOpen, TreeKind.EXPR_ASSIGN);
238236
}
239237

240238

Parser/src/main/java/org/openzen/zenscript/tree/Expression.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,8 @@ static TreeParser.MarkClosed parsePostfix(TreeParser p, ParseOptions options) {
477477
p.whitespace();
478478
markClosed = p.close(postfixOpen, TreeKind.EXPR_MEMBER);
479479
} else {
480-
markClosed = p.close(postfixOpen, TreeKind.ERROR);
480+
markClosed = p.close(postfixOpen, TreeKind.EXPR_MEMBER);
481+
p.error("Expected a name");
481482
}
482483
break;
483484
}
@@ -613,7 +614,7 @@ static TreeParser.MarkClosed parsePrimary(TreeParser p, ParseOptions options) {
613614
primaryOpen = p.open();
614615
p.expect(T_DOLLAR);
615616
p.whitespace();
616-
close = p.close(primaryOpen, TreeKind.EXPR_OUTER);
617+
close = p.close(primaryOpen, TreeKind.EXPR_DOLLAR);
617618
p.whitespace();
618619
return close;
619620
case T_SQOPEN:
@@ -648,12 +649,12 @@ static TreeParser.MarkClosed parsePrimary(TreeParser p, ParseOptions options) {
648649
parse(p);
649650
if (p.eat(T_COLON)) {
650651
p.whitespace();
651-
p.close(keyOrValOpen, TreeKind.EXPR_MAP_KEY);
652+
p.close(keyOrValOpen, TreeKind.MAP_KEY);
652653
TreeParser.MarkOpened valOpen = p.open();
653654
parse(p);
654-
p.close(valOpen, TreeKind.EXPR_MAP_VALUE);
655+
p.close(valOpen, TreeKind.MAP_VALUE);
655656
} else {
656-
p.close(keyOrValOpen, TreeKind.EXPR_MAP_VALUE);
657+
p.close(keyOrValOpen, TreeKind.MAP_VALUE);
657658
}
658659
if (!p.eat(T_COMMA)) {
659660
p.expect(T_ACLOSE);
@@ -742,7 +743,7 @@ static TreeParser.MarkClosed parsePrimary(TreeParser p, ParseOptions options) {
742743
parse(p, ParseOptions.NO_LAMBDAS);
743744
}
744745
p.whitespace();
745-
p.close(keyOpen, TreeKind.EXPR_MATCH_KEY);
746+
p.close(keyOpen, TreeKind.MATCH_KEY);
746747

747748
p.expect(T_LAMBDA);
748749
p.whitespace();

Parser/src/main/java/org/openzen/zenscript/tree/FunctionHeader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static void parse(TreeParser p, ZSTokenSet recovery) {
4040
} while (p.eat(ZSTokenType.T_COMMA));
4141
p.expect(ZSTokenType.T_BRCLOSE);
4242
}
43-
p.close(paramListOpen, TreeKind.PARAM_LIST);
43+
p.close(paramListOpen, TreeKind.PARAMS);
4444
p.whitespace();
4545

4646
//TODO this error recovery is pretty rough

Parser/src/main/java/org/openzen/zenscript/tree/Generics.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ static void parseTypeArguments(TreeParser p) {
5555
}
5656
subParser.expect(T_GREATER);
5757
subParser.whitespace();
58-
subParser.close(open, TreeKind.TYPE_PARAMS);
58+
subParser.close(open, TreeKind.TYPE_ARGS);
5959
p.mergeIn(subParser);
6060

6161
}

0 commit comments

Comments
 (0)