Skip to content

Commit c5f3336

Browse files
committed
[GR-40160] SST refactoring
PullRequest: graalpython/2372
2 parents b339603 + b4f9a00 commit c5f3336

File tree

254 files changed

+2721
-1480
lines changed

Some content is hidden

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

254 files changed

+2721
-1480
lines changed

graalpython/com.oracle.graal.python.pegparser.generator/pegjava/java_generator.py

Lines changed: 38 additions & 87 deletions
Large diffs are not rendered by default.

graalpython/com.oracle.graal.python.pegparser.test/src/com/oracle/graal/python/pegparser/sst/SSTTreePrinterVisitor.java

Lines changed: 75 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@
4040
*/
4141
package com.oracle.graal.python.pegparser.sst;
4242

43-
import java.math.BigInteger;
44-
45-
import com.oracle.graal.python.pegparser.ExprContext;
46-
4743
public class SSTTreePrinterVisitor implements SSTreeVisitor<String> {
4844

4945
private static final String INDENTATION = " ";
@@ -254,32 +250,41 @@ public String visit(ExprTy.Compare node) {
254250
@Override
255251
public String visit(ExprTy.Constant node) {
256252
StringBuilder sb = new StringBuilder();
257-
sb.append(node.kind).append("[").append(node.getSourceRange().startOffset);
253+
sb.append(node.value.kind).append("[").append(node.getSourceRange().startOffset);
258254
sb.append(", ").append(node.getSourceRange().endOffset).append("]");
259255
sb.append(" Value: ");
260-
switch (node.kind) {
256+
appendConstantValue(sb, node.value);
257+
return sb.toString();
258+
}
259+
260+
private static void appendConstantValue(StringBuilder sb, ConstantValue value) {
261+
switch (value.kind) {
262+
case BIGINTEGER:
263+
sb.append(value.getBigInteger());
264+
break;
265+
case BOOLEAN:
266+
sb.append(value.getBoolean());
267+
break;
261268
case LONG:
262-
sb.append((long) node.value);
269+
sb.append(value.getLong());
263270
break;
264271
case DOUBLE:
265-
sb.append((double) node.value);
272+
sb.append(value.getDouble());
266273
break;
267274
case COMPLEX:
268-
double[] val = (double[]) node.value;
275+
double[] val = value.getComplex();
269276
sb.append(String.format("%g%+gj", val[0], val[1]));
270277
break;
271278
case RAW:
272-
String s = (String) node.value;
273-
appendEscapedString(sb, s);
279+
appendEscapedString(sb, value.getRaw(String.class));
280+
break;
281+
case ELLIPSIS:
282+
case NONE:
283+
sb.append((Object) null);
274284
break;
275285
default:
276-
if (node.value == null || node.value instanceof Boolean || node.value instanceof BigInteger || node.value instanceof String) {
277-
sb.append(node.value);
278-
} else {
279-
sb.append("<unprintable value>");
280-
}
286+
sb.append("<unprintable value>");
281287
}
282-
return sb.toString();
283288
}
284289

285290
@Override
@@ -381,7 +386,7 @@ public String visit(ExprTy.Lambda node) {
381386
public String visit(ExprTy.List node) {
382387
StringBuilder sb = new StringBuilder();
383388
sb.append(addHeader(node));
384-
if (node.context != null && node.context != ExprContext.Load) {
389+
if (node.context != null && node.context != ExprContextTy.Load) {
385390
sb.append(" Context: ").append(node.context);
386391
}
387392
if (node.elements != null) {
@@ -415,7 +420,7 @@ public String visit(ExprTy.ListComp node) {
415420
public String visit(ExprTy.Name node) {
416421
StringBuilder sb = new StringBuilder();
417422
sb.append(addHeader(node)).append(" Value: \"").append(node.id).append('"');
418-
if (node.context != ExprContext.Load) {
423+
if (node.context != ExprContextTy.Load) {
419424
sb.append(' ').append(node.context);
420425
}
421426
return sb.toString();
@@ -504,7 +509,7 @@ public String visit(ExprTy.Starred node) {
504509
public String visit(ExprTy.Subscript node) {
505510
StringBuilder sb = new StringBuilder();
506511
sb.append(addHeader(node));
507-
if (node.context != null && node.context != ExprContext.Load) {
512+
if (node.context != null && node.context != ExprContextTy.Load) {
508513
sb.append(" Context: ").append(node.context);
509514
}
510515
level++;
@@ -518,7 +523,7 @@ public String visit(ExprTy.Subscript node) {
518523
public String visit(ExprTy.Tuple node) {
519524
StringBuilder sb = new StringBuilder();
520525
sb.append(addHeader(node));
521-
if (node.context != null && node.context != ExprContext.Load) {
526+
if (node.context != null && node.context != ExprContextTy.Load) {
522527
sb.append(" Context: ").append(node.context);
523528
}
524529
if (node.elements != null) {
@@ -629,7 +634,7 @@ public String visit(ModTy.Module node) {
629634
}
630635

631636
@Override
632-
public String visit(ModTy.TypeIgnore node) {
637+
public String visit(TypeIgnoreTy.TypeIgnore node) {
633638
StringBuilder sb = new StringBuilder();
634639
sb.append(addHeader(node));
635640
return sb.toString();
@@ -689,17 +694,34 @@ public String visit(StmtTy.Assign node) {
689694

690695
@Override
691696
public String visit(StmtTy.AsyncFor node) {
692-
return visit((StmtTy.For) node);
697+
StringBuilder sb = new StringBuilder();
698+
sb.append(addHeader(node));
699+
level++;
700+
appendNode(sb, "Target", node.target);
701+
appendNode(sb, "Iter", node.iter);
702+
appendNodes(sb, "Body", node.body);
703+
appendNodes(sb, "Else", node.orElse);
704+
level--;
705+
return sb.toString();
693706
}
694707

695708
@Override
696709
public String visit(StmtTy.AsyncFunctionDef node) {
697-
return visit((StmtTy.FunctionDef) node);
710+
return visitFunctionOrAsyncFunction(node, node.name, node.args, node.body, node.decoratorList, node.returns, node.typeComment);
698711
}
699712

700713
@Override
701714
public String visit(StmtTy.AsyncWith node) {
702-
return visit((StmtTy.With) node);
715+
StringBuilder sb = new StringBuilder();
716+
sb.append(addHeader(node));
717+
level++;
718+
appendNodes(sb, "Items", node.items);
719+
appendNodes(sb, "Body", node.body);
720+
if (node.typeComment != null) {
721+
appendString(sb, "TypeComment", node.typeComment);
722+
}
723+
level--;
724+
return sb.toString();
703725
}
704726

705727
@Override
@@ -770,33 +792,37 @@ public String visit(StmtTy.For node) {
770792

771793
@Override
772794
public String visit(StmtTy.FunctionDef node) {
795+
return visitFunctionOrAsyncFunction(node, node.name, node.args, node.body, node.decoratorList, node.returns, node.typeComment);
796+
}
797+
798+
private String visitFunctionOrAsyncFunction(SSTNode node, String name, ArgumentsTy args, StmtTy[] body, ExprTy[] decoratorList, ExprTy returns, String typeComment) {
773799
StringBuilder sb = new StringBuilder();
774800
sb.append(addHeader(node));
775801
level++;
776-
appendNewLineIndented(sb, "Name:").append(node.name);
777-
if (node.decoratorList != null) {
802+
appendNewLineIndented(sb, "Name:").append(name);
803+
if (decoratorList != null) {
778804
appendNewLineIndented(sb, "Decorators:");
779-
for (SSTNode n : node.decoratorList) {
805+
for (SSTNode n : decoratorList) {
780806
appendNewLineIndented(sb, n.accept(this));
781807
}
782808
}
783-
if (node.args != null) {
784-
appendNewLineIndented(sb, node.args.accept(this));
809+
if (args != null) {
810+
appendNewLineIndented(sb, args.accept(this));
785811
}
786-
if (node.returns != null) {
787-
appendNode(sb, "Result Annotation", node.returns);
812+
if (returns != null) {
813+
appendNode(sb, "Result Annotation", returns);
788814
}
789-
if (node.typeComment != null) {
790-
appendNewLineIndented(sb, "Type Comment: ").append(node.typeComment);
815+
if (typeComment != null) {
816+
appendNewLineIndented(sb, "Type Comment: ").append(typeComment);
791817
}
792-
appendNewLineIndented(sb, "---- Function body of ").append(node.name).append(" ----");
793-
for (SSTNode stm : node.body) {
818+
appendNewLineIndented(sb, "---- Function body of ").append(name).append(" ----");
819+
for (SSTNode stm : body) {
794820
appendNewLineIndented(sb, stm.accept(this));
795821
}
796822
if (sb.lastIndexOf("\n") != sb.length() - 1) {
797823
sb.append('\n');
798824
}
799-
sb.append(indent()).append("---- End of ").append(node.name).append(" function ----");
825+
sb.append(indent()).append("---- End of ").append(name).append(" function ----");
800826
level--;
801827

802828
return sb.toString();
@@ -859,79 +885,79 @@ public String visit(StmtTy.Match node) {
859885
}
860886

861887
@Override
862-
public String visit(StmtTy.Match.Case node) {
888+
public String visit(MatchCaseTy node) {
863889
StringBuilder sb = new StringBuilder();
864890
sb.append(addHeader(node));
865891
return sb.toString();
866892

867893
}
868894

869895
@Override
870-
public String visit(StmtTy.Match.Pattern.MatchAs node) {
896+
public String visit(PatternTy.MatchAs node) {
871897
StringBuilder sb = new StringBuilder();
872898
sb.append(addHeader(node));
873899
return sb.toString();
874900

875901
}
876902

877903
@Override
878-
public String visit(StmtTy.Match.Pattern.MatchClass node) {
904+
public String visit(PatternTy.MatchClass node) {
879905
StringBuilder sb = new StringBuilder();
880906
sb.append(addHeader(node));
881907
return sb.toString();
882908

883909
}
884910

885911
@Override
886-
public String visit(StmtTy.Match.Pattern.MatchMapping node) {
912+
public String visit(PatternTy.MatchMapping node) {
887913
StringBuilder sb = new StringBuilder();
888914
sb.append(addHeader(node));
889915
return sb.toString();
890916

891917
}
892918

893919
@Override
894-
public String visit(StmtTy.Match.Pattern.MatchOr node) {
920+
public String visit(PatternTy.MatchOr node) {
895921
StringBuilder sb = new StringBuilder();
896922
sb.append(addHeader(node));
897923
return sb.toString();
898924

899925
}
900926

901927
@Override
902-
public String visit(StmtTy.Match.Pattern.MatchSequence node) {
928+
public String visit(PatternTy.MatchSequence node) {
903929
StringBuilder sb = new StringBuilder();
904930
sb.append(addHeader(node));
905931
return sb.toString();
906932

907933
}
908934

909935
@Override
910-
public String visit(StmtTy.Match.Pattern.MatchSingleton node) {
936+
public String visit(PatternTy.MatchSingleton node) {
911937
StringBuilder sb = new StringBuilder();
912938
sb.append(addHeader(node));
913939
return sb.toString();
914940

915941
}
916942

917943
@Override
918-
public String visit(StmtTy.Match.Pattern.MatchStar node) {
944+
public String visit(PatternTy.MatchStar node) {
919945
StringBuilder sb = new StringBuilder();
920946
sb.append(addHeader(node));
921947
return sb.toString();
922948

923949
}
924950

925951
@Override
926-
public String visit(StmtTy.Match.Pattern.MatchValue node) {
952+
public String visit(PatternTy.MatchValue node) {
927953
StringBuilder sb = new StringBuilder();
928954
sb.append(addHeader(node));
929955
return sb.toString();
930956

931957
}
932958

933959
@Override
934-
public String visit(StmtTy.NonLocal node) {
960+
public String visit(StmtTy.Nonlocal node) {
935961
StringBuilder sb = new StringBuilder();
936962
sb.append(addHeader(node)).append(": ");
937963
for (String id : node.names) {
@@ -978,7 +1004,7 @@ public String visit(StmtTy.Try node) {
9781004
}
9791005

9801006
@Override
981-
public String visit(StmtTy.Try.ExceptHandler node) {
1007+
public String visit(ExceptHandlerTy.ExceptHandler node) {
9821008
StringBuilder sb = new StringBuilder();
9831009
sb.append(addHeader(node));
9841010
level++;
@@ -1014,11 +1040,10 @@ public String visit(StmtTy.With node) {
10141040
}
10151041
level--;
10161042
return sb.toString();
1017-
10181043
}
10191044

10201045
@Override
1021-
public String visit(StmtTy.With.Item node) {
1046+
public String visit(WithItemTy node) {
10221047
StringBuilder sb = new StringBuilder();
10231048
sb.append(addHeader(node));
10241049
level++;

graalpython/com.oracle.graal.python.pegparser.test/testData/parser/goldenFiles/AssignmentTests/annotationType02.tast

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Module[0, 26]
22
FunctionDef[0, 26]
33
Name:fn
4+
ArgumentsTy[0, 0]
45
---- Function body of fn ----
56
AnnAssign[11, 26]simple
67
Annotation: Name[19, 22] Value: "int"

graalpython/com.oracle.graal.python.pegparser.test/testData/parser/goldenFiles/AssignmentTests/assignment03.tast

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ Module[0, 25]
99
LHS: Name[12, 13] Value: "c" Store
1010
RHS:
1111
BinOp[16, 25]
12-
Op: ADD
12+
Op: Add
1313
LHS:
1414
BinOp[16, 21]
15-
Op: ADD
15+
Op: Add
1616
LHS: Name[16, 17] Value: "a"
1717
RHS: Name[20, 21] Value: "a"
1818
RHS: Name[24, 25] Value: "b"

graalpython/com.oracle.graal.python.pegparser.test/testData/parser/goldenFiles/AssignmentTests/assignment06.tast

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Module[0, 29]
22
FunctionDef[0, 29]
33
Name:fn
4+
ArgumentsTy[0, 0]
45
---- Function body of fn ----
56
Assign[12, 29]
67
LHS:

graalpython/com.oracle.graal.python.pegparser.test/testData/parser/goldenFiles/AssignmentTests/assignment07.tast

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Module[0, 29]
22
FunctionDef[0, 29]
33
Name:fn
4+
ArgumentsTy[0, 0]
45
---- Function body of fn ----
56
Assign[12, 29]
67
LHS:

graalpython/com.oracle.graal.python.pegparser.test/testData/parser/goldenFiles/AssignmentTests/assignment11.tast

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Module[0, 26]
22
FunctionDef[0, 26]
33
Name:fn
4+
ArgumentsTy[0, 0]
45
---- Function body of fn ----
56
Assign[12, 26]
67
LHS:
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Module[0, 6]
22
AugAssign[0, 6]
3-
Op: ADD
3+
Op: Add
44
LHS: Name[0, 1] Value: "a" Store
55
RHS: Name[5, 6] Value: "b"
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Module[0, 6]
22
AugAssign[0, 6]
3-
Op: SUB
3+
Op: Sub
44
LHS: Name[0, 1] Value: "a" Store
55
RHS: Name[5, 6] Value: "b"
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Module[0, 6]
22
AugAssign[0, 6]
3-
Op: MULT
3+
Op: Mult
44
LHS: Name[0, 1] Value: "a" Store
55
RHS: Name[5, 6] Value: "b"

0 commit comments

Comments
 (0)