Skip to content

Commit e8afe61

Browse files
committed
Handle TODOS
Add extra test case
1 parent 5eada10 commit e8afe61

5 files changed

Lines changed: 29 additions & 54 deletions

File tree

.idea/workspace.xml

Lines changed: 14 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/ko/carbonel/stream/Lexer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ private Token lexChar() {
160160
if (!Objects.equals(reader.peek(), "\\")) {
161161
// Unescaped char
162162
String c = reader.get();
163-
if (Objects.equals(c, "\n")) throw new IllegalCharError(location, "Line break in unescaped char is not valid");
164163
if (!Objects.equals(reader.get(), "'")) throw new CharTooLongError(location, reader.getLocation().clone());
165164
return new Token(TokenType.CHR_DATA, "'" + c + "'", location);
166165
}

src/main/java/ko/carbonel/stream/SourceFileReader.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,21 @@ protected void onConsume(String top) {
4040

4141
@Override
4242
protected String getNext() {
43+
if (!isOpen) return Utils.STR_EOF;
4344
try {
44-
if (!isOpen) return Utils.STR_EOF;
4545
if (fis.available() != 0) return readChar();
4646
closeStream();
4747
return Utils.STR_EOF;
4848
} catch (IOException e) {
49-
// TODO: Handleme
50-
throw new RuntimeException(e);
49+
throw new RuntimeException("Error while reading source code input stream", e);
5150
}
5251
}
5352

5453
private String readChar() throws IOException {
5554
int c1 = fis.read();
5655
int c2 = 0;
5756
String value = String.valueOf((char) c1);
58-
if (c1 == 195 || c1 == 194) { // UTF-8 multiple byte characters
57+
if (c1 == 195 || c1 == 194) { // UTF-8 multiple byte characters that are in the alphabet
5958
c2 = fis.read();
6059
value = new String(new byte[]{(byte) c1, (byte) c2});
6160
}
@@ -75,8 +74,7 @@ private void closeStream() {
7574
isOpen = false;
7675
fis.close();
7776
} catch (IOException e) {
78-
// TODO: Handleme
79-
throw new RuntimeException(e);
77+
System.err.println("WARNING: Error while closing source code input stream");
8078
}
8179
}
8280

src/test/java/ko/carbonel/LexerTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,12 @@ static Stream<Arguments> readOkFiles() {
150150
), Arguments.of(
151151
"16.rs", List.of(
152152
param(0, 0, 0, "áéíóúüñÁÉÍÓÚÜÑ", TokenType.ID),
153-
param(0, "áéíóúüñÁÉÍÓÚÜÑ".length(), "áéíóúüñÁÉÍÓÚÜÑ".length(), "\"? @ # $ ^ / ` ~ ° ¨ ´ ¡ ¿ ' \\\"\\\\ _| & + - = ! < > * / %{ [ ( ) ] }. : , ;\\n [ASCII 10] ' ' [ASCII 32] \\t [ASCII 9] \\v [ASCII 11] \\r [ASCII 13]0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzá é í ó ú ü ñ Á É Í Ó Ú Ü Ñ\"", TokenType.STR_DATA)
153+
param(0, "áéíóúüñÁÉÍÓÚÜÑ".length(), "áéíóúüñÁÉÍÓÚÜÑ".length(),
154+
"\"? @ # $ ^ / ` ~ ° ¨ ´ ¡ ¿ ' \\\"\\\\ _| & + - = ! < > * / %{ [ ( ) ] }. : , ;\\n [ASCII 10] " +
155+
"' ' [ASCII 32] \\t [ASCII 9] \\v [ASCII 11] \\r [ASCII 13]" +
156+
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzá é í ó ú ü ñ Á É Í Ó Ú Ü Ñ\"",
157+
TokenType.STR_DATA
158+
)
154159
)
155160
), Arguments.of(
156161
"17.rs", List.of(
@@ -199,8 +204,9 @@ static Stream<Arguments> readExceptionFiles() {
199204
param("12.rs", UnterminatedBlockCommentError.class),
200205
param("13.rs", UnterminatedCharError.class),
201206
param("14.rs", UnterminatedStringError.class),
202-
param("15.rs", IllegalSymbolError.class),
203-
param("20.rs", IllegalStringError.class)
207+
param("15.rs", IllegalSymbolError.class),
208+
param("20.rs", IllegalStringError.class),
209+
param("22.rs", CharTooLongError.class)
204210
);
205211
}
206212

src/test/resources/lexer/22.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/*CharTooLongError*/
2+
bla bla '\ ' foo

0 commit comments

Comments
 (0)