StringReaderTerms.java
net.minecraft.util.parsing.packrat.commands.StringReaderTerms
信息
- 全限定名:net.minecraft.util.parsing.packrat.commands.StringReaderTerms
- 类型:public interface
- 包:net.minecraft.util.parsing.packrat.commands
- 源码路径:src/main/java/net/minecraft/util/parsing/packrat/commands/StringReaderTerms.java
- 起始行号:L15
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
-
net.minecraft.util.parsing.packrat.commands.StringReaderTerms.TerminalCharacters- 类型:
class - 修饰符:
public abstract static - 源码定位:
L44 - 说明:
TODO
- 类型:
-
net.minecraft.util.parsing.packrat.commands.StringReaderTerms.TerminalWord- 类型:
class - 修饰符:
public static final - 源码定位:
L69 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
static Term<StringReader> word(String value) @ L16
- 方法名:word
- 源码定位:L16
- 返回类型:Term
- 修饰符:static
参数:
- value: String
说明:
TODO
static Term<StringReader> character(char value) @ L20
- 方法名:character
- 源码定位:L20
- 返回类型:Term
- 修饰符:static
参数:
- value: char
说明:
TODO
static Term<StringReader> characters(char v1, char v2) @ L29
- 方法名:characters
- 源码定位:L29
- 返回类型:Term
- 修饰符:static
参数:
- v1: char
- v2: char
说明:
TODO
static StringReader createReader(String contents, int cursor) @ L38
- 方法名:createReader
- 源码定位:L38
- 返回类型:StringReader
- 修饰符:static
参数:
- contents: String
- cursor: int
说明:
TODO
代码
public interface StringReaderTerms {
static Term<StringReader> word(String value) {
return new StringReaderTerms.TerminalWord(value);
}
static Term<StringReader> character(char value) {
return new StringReaderTerms.TerminalCharacters(CharList.of(value)) {
@Override
protected boolean isAccepted(char v) {
return value == v;
}
};
}
static Term<StringReader> characters(char v1, char v2) {
return new StringReaderTerms.TerminalCharacters(CharList.of(v1, v2)) {
@Override
protected boolean isAccepted(char v) {
return v == v1 || v == v2;
}
};
}
static StringReader createReader(String contents, int cursor) {
StringReader reader = new StringReader(contents);
reader.setCursor(cursor);
return reader;
}
public abstract static class TerminalCharacters implements Term<StringReader> {
private final DelayedException<CommandSyntaxException> error;
private final SuggestionSupplier<StringReader> suggestions;
public TerminalCharacters(CharList values) {
String joinedValues = values.intStream().mapToObj(Character::toString).collect(Collectors.joining("|"));
this.error = DelayedException.create(CommandSyntaxException.BUILT_IN_EXCEPTIONS.literalIncorrect(), joinedValues);
this.suggestions = s -> values.intStream().mapToObj(Character::toString);
}
@Override
public boolean parse(ParseState<StringReader> state, Scope scope, Control control) {
state.input().skipWhitespace();
int cursor = state.mark();
if (state.input().canRead() && this.isAccepted(state.input().read())) {
return true;
} else {
state.errorCollector().store(cursor, this.suggestions, this.error);
return false;
}
}
protected abstract boolean isAccepted(char value);
}
public static final class TerminalWord implements Term<StringReader> {
private final String value;
private final DelayedException<CommandSyntaxException> error;
private final SuggestionSupplier<StringReader> suggestions;
public TerminalWord(String value) {
this.value = value;
this.error = DelayedException.create(CommandSyntaxException.BUILT_IN_EXCEPTIONS.literalIncorrect(), value);
this.suggestions = s -> Stream.of(value);
}
@Override
public boolean parse(ParseState<StringReader> state, Scope scope, Control control) {
state.input().skipWhitespace();
int cursor = state.mark();
String value = state.input().readUnquotedString();
if (!value.equals(this.value)) {
state.errorCollector().store(cursor, this.suggestions, this.error);
return false;
} else {
return true;
}
}
@Override
public String toString() {
return "terminal[" + this.value + "]";
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
DelayedException.create()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置: