Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
79 lines
2.4 KiB
Java
79 lines
2.4 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*/
|
|
package de.maxhenkel.voicechat.commodore.file;
|
|
|
|
import de.maxhenkel.voicechat.commodore.file.AbstractIterator;
|
|
import de.maxhenkel.voicechat.commodore.file.ParseException;
|
|
import de.maxhenkel.voicechat.commodore.file.Token;
|
|
import de.maxhenkel.voicechat.commodore.file.TokenStream;
|
|
import java.io.IOException;
|
|
import java.io.Reader;
|
|
import java.io.StreamTokenizer;
|
|
|
|
class Lexer
|
|
extends AbstractIterator<Token>
|
|
implements TokenStream {
|
|
private final StreamTokenizer tokenizer;
|
|
private boolean end = false;
|
|
|
|
Lexer(Reader reader) {
|
|
this.tokenizer = new StreamTokenizer(reader);
|
|
this.tokenizer.resetSyntax();
|
|
this.tokenizer.wordChars(33, 126);
|
|
this.tokenizer.quoteChar(34);
|
|
this.tokenizer.whitespaceChars(0, 32);
|
|
"{};".chars().forEach(this.tokenizer::ordinaryChar);
|
|
this.tokenizer.slashSlashComments(true);
|
|
this.tokenizer.slashStarComments(true);
|
|
}
|
|
|
|
@Override
|
|
protected Token computeNext() throws ParseException {
|
|
if (this.end) {
|
|
return (Token)this.endOfData();
|
|
}
|
|
try {
|
|
int token = this.tokenizer.nextToken();
|
|
switch (token) {
|
|
case -1: {
|
|
this.end = true;
|
|
return Token.ConstantToken.EOF;
|
|
}
|
|
case -3: {
|
|
return new Token.StringToken(this.tokenizer.sval);
|
|
}
|
|
case 123: {
|
|
return Token.ConstantToken.OPEN_BRACKET;
|
|
}
|
|
case 125: {
|
|
return Token.ConstantToken.CLOSE_BRACKET;
|
|
}
|
|
case 59: {
|
|
return Token.ConstantToken.SEMICOLON;
|
|
}
|
|
}
|
|
throw this.createException("Unknown token: " + (char)token + "(" + token + ")");
|
|
}
|
|
catch (IOException e) {
|
|
throw this.createException(e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ParseException createException(String message) {
|
|
return new ParseException(message, this.tokenizer.lineno());
|
|
}
|
|
|
|
@Override
|
|
public ParseException createException(Throwable cause) {
|
|
return new ParseException(cause, this.tokenizer.lineno());
|
|
}
|
|
|
|
@Override
|
|
public ParseException createException(String message, Throwable cause) {
|
|
return new ParseException(message, cause, this.tokenizer.lineno());
|
|
}
|
|
}
|
|
|