|
5 | 5 |
|
6 | 6 | import cwp.lexer.LexerReader; |
7 | 7 | import cwp.lexer.Token; |
8 | | -import cwp.lexer.readers.Str; |
9 | 8 |
|
10 | 9 | import java.util.*; |
11 | 10 |
|
@@ -45,22 +44,7 @@ public static int getPrecedence(String s) { |
45 | 44 | return precedence.getOrDefault(s, -1); |
46 | 45 | } |
47 | 46 |
|
48 | | - /* |
49 | | - enum Precedence { |
50 | | - LOWEST, |
51 | | - PIPE, // |> , |>> |
52 | | - OR, |
53 | | - AND, |
54 | | - NOT, |
55 | | - COMPARISON, //>, <, >= ,<=, =, ==, !=, |
56 | | - SUM, // +, - |
57 | | - PRODUCT // *, / |
58 | | - // PREFIX |
59 | | - // CALL |
60 | | - } |
61 | | -*/ |
62 | 47 |
|
63 | | - //CharReader charReader; |
64 | 48 | LexerReader lexerReader; |
65 | 49 | ArrayList<Integer> indentation = new ArrayList<Integer>(); |
66 | 50 | int curLine = 1; |
@@ -94,26 +78,18 @@ public boolean checkIndentation(int indent) { |
94 | 78 |
|
95 | 79 |
|
96 | 80 | public Parser(String s) { |
97 | | - //charReader = new CharReader(s); |
98 | 81 | lexerReader = new LexerReader(s); |
99 | | - // indentation.add(1); |
100 | 82 | } |
101 | 83 |
|
102 | 84 | public void unreadToken(Token t) { |
103 | 85 | lexerReader.unread(t); |
104 | 86 | } |
105 | 87 |
|
106 | 88 | public Token nextTokenWithSep() { |
107 | | - //return LexerReader.read(charReader); |
108 | 89 | return lexerReader.read(); |
109 | 90 | } |
110 | 91 |
|
111 | 92 | public Token nextToken() { |
112 | | -// Token t = LexerReader.read(charReader); |
113 | | -// while (t.type == Token.Type.COMMA || t.type == Token.Type.TO) { |
114 | | -// t = LexerReader.read(charReader); |
115 | | -// } |
116 | | -// return t; |
117 | 93 | Token t = lexerReader.read(); |
118 | 94 | while (t.type == Token.Type.COMMA || t.type == Token.Type.TO) { |
119 | 95 | t = lexerReader.read(); |
@@ -169,36 +145,13 @@ public Expr readExpr(Token.Type delim, Expr delimReturn) { |
169 | 145 | if (t.type == Token.Type.SYMBOL && Controls.isMap(t.str)) { |
170 | 146 | return readFlatCotrol(t, Controls.Type.MAP); |
171 | 147 | } |
172 | | - // Expr e = readBaseExpr(t); |
173 | | - //Expr e = readUnaryExpr(t); |
174 | 148 | Expr e = readInfixExpr(t, LOWEST); |
175 | | - //System.out.println(">>>> " + e); |
176 | 149 | if (e == null) { |
177 | 150 | throw Util.sneakyThrow(new ParserException("Unexpected token: " + t.str, t)); |
178 | 151 | } |
179 | 152 | return e; |
180 | 153 | } |
181 | 154 |
|
182 | | - |
183 | | -// public Expr readInfixExpr(Token t, int prevPrecedence) { |
184 | | -// Expr leftExpr = readUnaryExpr(t); |
185 | | -// Token opToken = nextTokenWithSep(); |
186 | | -// //System.out.println(">>readInfixExpr " + leftExpr + " " + opToken + " " + prevPrecedence + " " + (prevPrecedence >= SUM)); |
187 | | -// for (; ; ) { |
188 | | -// int curPrecedence = getPrecedence(opToken.str); |
189 | | -// if (curPrecedence == -1 || prevPrecedence >= curPrecedence) { |
190 | | -// unreadToken(opToken); |
191 | | -// break; |
192 | | -// } |
193 | | -// //System.out.println(">>curPrec " + curPrecedence + " " + opToken.str); |
194 | | -// // curPrecedence > prevPrecedence |
195 | | -// Expr rightExpr = readInfixExpr(nextToken(), curPrecedence); |
196 | | -// leftExpr = new InfixExpr(opToken, leftExpr, rightExpr); |
197 | | -// opToken = nextTokenWithSep(); |
198 | | -// } |
199 | | -// return leftExpr; |
200 | | -// } |
201 | | - |
202 | 155 | public Expr readInfixExpr(Token t, int prevPrecedence) { |
203 | 156 | Expr firstExpr = readUnaryExpr(t); |
204 | 157 | if (firstExpr.initTok.type == Token.Type.EOF) throw Util.runtimeException("EOF while reading"); |
@@ -244,7 +197,6 @@ public Expr readUnaryExpr(Token t) { |
244 | 197 | if (nextExpr.initTok.type == Token.Type.EOF) throw Util.runtimeException("EOF while reading"); |
245 | 198 | return new UnaryExpr(t, nextExpr, true); |
246 | 199 | } |
247 | | - //return readBaseExpr(t); |
248 | 200 | return readFunctionCallExpr(t); |
249 | 201 | } |
250 | 202 |
|
@@ -673,25 +625,20 @@ public ArrayList<Token> readAll() { |
673 | 625 | ArrayList<Token> arr = new ArrayList<Token>(); |
674 | 626 | //Token t = LexerReader.read(charReader); |
675 | 627 | Token t = lexerReader.read(); |
676 | | - |
677 | 628 | curLine = t.line; |
678 | 629 | if (t.column != lastIndentation()) { |
679 | 630 | Util.runtimeException("EOF while reading character"); |
680 | 631 | } |
681 | | - |
682 | 632 | while (t.type != Token.Type.EOF) { |
683 | 633 | arr.add(t); |
684 | | - |
685 | 634 | // t = LexerReader.read(charReader); |
686 | 635 | t = lexerReader.read(); |
687 | 636 | if (t.type == Token.Type.COLON) { |
688 | 637 |
|
689 | 638 | } |
690 | | - |
691 | 639 | } |
692 | 640 | arr.add(t); |
693 | 641 | return arr; |
694 | | - |
695 | 642 | } |
696 | 643 |
|
697 | 644 | public static ArrayList<Expr> readString(String s) { |
|
0 commit comments