Quellcode durchsuchen

- Removed whitespace handling from the bare parser

- Tokens no longer store whitespace
Stan Hebben vor 6 Jahren
Ursprung
Commit
18566301a3

+ 0
- 2
Parser/src/main/java/org/openzen/zenscript/lexer/Token.java Datei anzeigen

@@ -12,6 +12,4 @@ public interface Token<TT extends TokenType>
12 12
 	TT getType();
13 13
 	
14 14
 	String getContent();
15
-	
16
-	String getWhitespaceBefore();
17 15
 }

+ 1
- 1
Parser/src/main/java/org/openzen/zenscript/lexer/TokenFactory.java Datei anzeigen

@@ -10,5 +10,5 @@ package org.openzen.zenscript.lexer;
10 10
  * @author Hoofdgebruiker
11 11
  */
12 12
 public interface TokenFactory<T, TT> {
13
-	T create(TT type, String content, String whitespaceBefore);
13
+	T create(TT type, String content);
14 14
 }

+ 5
- 25
Parser/src/main/java/org/openzen/zenscript/lexer/TokenParser.java Datei anzeigen

@@ -106,7 +106,6 @@ public class TokenParser<T extends Token<TT>, TT extends TokenType> implements T
106 106
 				next.position,
107 107
 				factory.create(
108 108
 						other,
109
-						next.token.getWhitespaceBefore(),
110 109
 						next.token.getContent()));
111 110
 	}
112 111
 
@@ -126,27 +125,8 @@ public class TokenParser<T extends Token<TT>, TT extends TokenType> implements T
126 125
     // =======================
127 126
     // === Private methods ===
128 127
     // =======================
129
-
130
-    /**
131
-     * Advances to the next non - whitespace token.
132
-     */
128
+	
133 129
     private void advance()
134
-	{
135
-		StringBuilder whitespace = new StringBuilder();
136
-        while (true) {
137
-            advanceToken(whitespace.toString());
138
-			if (next.token.getType().isWhitespace()) {
139
-				whitespace.append(next.token.getContent());
140
-			} else {
141
-				break;
142
-			}
143
-        }
144
-    }
145
-
146
-    /**
147
-     * Advances to the next token.
148
-     */
149
-    private void advanceToken(String whitespace)
150 130
 	{
151 131
         if (nextChar < 0) {
152 132
 			CodePosition position = new CodePosition(
@@ -156,7 +136,7 @@ public class TokenParser<T extends Token<TT>, TT extends TokenType> implements T
156 136
 					line,
157 137
 					lineOffset);
158 138
 			
159
-            next = new PositionedToken(position, factory.create(eof, whitespace, ""));
139
+            next = new PositionedToken(position, factory.create(eof, ""));
160 140
             return;
161 141
         }
162 142
 		
@@ -180,17 +160,17 @@ public class TokenParser<T extends Token<TT>, TT extends TokenType> implements T
180 160
             if (dfa.finals[state] != null) {
181 161
                 if (state == 0) {
182 162
 					value.append((char) nextChar);
183
-					next = new PositionedToken(position, factory.create(invalid, value.toString(), whitespace));
163
+					next = new PositionedToken(position, factory.create(invalid, value.toString()));
184 164
 					nextChar = reader.read();
185 165
 				}
186 166
 				
187
-				next = new PositionedToken(position, factory.create(dfa.finals[state], value.toString(), whitespace));
167
+				next = new PositionedToken(position, factory.create(dfa.finals[state], value.toString()));
188 168
             } else {
189 169
 				if (nextChar < 0 && value.length() == 0)
190 170
 					return; // happens on comments at the end of files
191 171
 				
192 172
 				value.append((char) nextChar);
193
-				next = new PositionedToken(position, factory.create(invalid, value.toString(), whitespace));
173
+				next = new PositionedToken(position, factory.create(invalid, value.toString()));
194 174
 				nextChar = reader.read();
195 175
             }
196 176
         } catch (IOException ex) {

+ 1
- 8
Parser/src/main/java/org/openzen/zenscript/lexer/ZSToken.java Datei anzeigen

@@ -12,12 +12,10 @@ package org.openzen.zenscript.lexer;
12 12
 public class ZSToken implements Token<ZSTokenType> {
13 13
 	public final ZSTokenType type;
14 14
 	public final String content;
15
-	public final String whitespaceBefore;
16 15
 	
17
-	public ZSToken(ZSTokenType type, String content, String whitespaceBefore) {
16
+	public ZSToken(ZSTokenType type, String content) {
18 17
 		this.type = type;
19 18
 		this.content = content;
20
-		this.whitespaceBefore = whitespaceBefore;
21 19
 	}
22 20
 
23 21
 	@Override
@@ -29,9 +27,4 @@ public class ZSToken implements Token<ZSTokenType> {
29 27
 	public String getContent() {
30 28
 		return content;
31 29
 	}
32
-
33
-	@Override
34
-	public String getWhitespaceBefore() {
35
-		return whitespaceBefore;
36
-	}
37 30
 }

+ 2
- 2
Parser/src/main/java/org/openzen/zenscript/lexer/ZSTokenFactory.java Datei anzeigen

@@ -96,10 +96,10 @@ public class ZSTokenFactory implements TokenFactory<ZSToken, ZSTokenType> {
96 96
 	}
97 97
 
98 98
 	@Override
99
-	public ZSToken create(ZSTokenType type, String content, String whitespaceBefore) {
99
+	public ZSToken create(ZSTokenType type, String content) {
100 100
 		if (type == T_IDENTIFIER && KEYWORDS.containsKey(content))
101 101
 			type = KEYWORDS.get(content);
102 102
 		
103
-		return new ZSToken(type, content, whitespaceBefore);
103
+		return new ZSToken(type, content);
104 104
 	}
105 105
 }

+ 1
- 1
Parser/src/main/java/org/openzen/zenscript/parser/ParsedFile.java Datei anzeigen

@@ -120,7 +120,7 @@ public class ParsedFile {
120 120
 			}
121 121
 		}
122 122
 		
123
-		result.postComment = WhitespacePostComment.fromWhitespace(eof.whitespaceBefore);
123
+		result.postComment = WhitespacePostComment.fromWhitespace(tokens.getLastWhitespace());
124 124
 		return result;
125 125
 	}
126 126
 	

+ 1
- 1
Parser/src/main/java/org/openzen/zenscript/parser/statements/ParsedStatement.java Datei anzeigen

@@ -59,7 +59,7 @@ public abstract class ParsedStatement {
59 59
 		}
60 60
 
61 61
 		WhitespaceInfo whitespace = parser.collectWhitespaceInfo(ws, isFirst);
62
-		WhitespacePostComment postComment = WhitespacePostComment.fromWhitespace(last.whitespaceBefore);
62
+		WhitespacePostComment postComment = WhitespacePostComment.fromWhitespace(parser.getLastWhitespace());
63 63
 		return new ParsedStatementBlock(position, whitespace, postComment, statements);
64 64
 	}
65 65
 	

Laden…
Abbrechen
Speichern