GreedyPredicateParseRule.java
net.minecraft.util.parsing.packrat.commands.GreedyPredicateParseRule
信息
- 全限定名:net.minecraft.util.parsing.packrat.commands.GreedyPredicateParseRule
- 类型:public abstract class
- 包:net.minecraft.util.parsing.packrat.commands
- 源码路径:src/main/java/net/minecraft/util/parsing/packrat/commands/GreedyPredicateParseRule.java
- 起始行号:L10
- 实现:Rule<StringReader,String>
- 职责:
TODO
字段/常量
-
minSize- 类型:
int - 修饰符:
private final - 源码定位:
L11 - 说明:
TODO
- 类型:
-
maxSize- 类型:
int - 修饰符:
private final - 源码定位:
L12 - 说明:
TODO
- 类型:
-
error- 类型:
DelayedException<CommandSyntaxException> - 修饰符:
private final - 源码定位:
L13 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public GreedyPredicateParseRule(int minSize, DelayedException<CommandSyntaxException> error) @ L15
- 构造器名:GreedyPredicateParseRule
- 源码定位:L15
- 修饰符:public
参数:
- minSize: int
- error: DelayedException
说明:
TODO
public GreedyPredicateParseRule(int minSize, int maxSize, DelayedException<CommandSyntaxException> error) @ L19
- 构造器名:GreedyPredicateParseRule
- 源码定位:L19
- 修饰符:public
参数:
- minSize: int
- maxSize: int
- error: DelayedException
说明:
TODO
方法
下面的方法块按源码顺序生成。
public String parse(ParseState<StringReader> state) @ L25
- 方法名:parse
- 源码定位:L25
- 返回类型:String
- 修饰符:public
参数:
- state: ParseState
说明:
TODO
protected abstract boolean isAccepted(char c) @ L45
- 方法名:isAccepted
- 源码定位:L45
- 返回类型:boolean
- 修饰符:protected abstract
参数:
- c: char
说明:
TODO
代码
public abstract class GreedyPredicateParseRule implements Rule<StringReader, String> {
private final int minSize;
private final int maxSize;
private final DelayedException<CommandSyntaxException> error;
public GreedyPredicateParseRule(int minSize, DelayedException<CommandSyntaxException> error) {
this(minSize, Integer.MAX_VALUE, error);
}
public GreedyPredicateParseRule(int minSize, int maxSize, DelayedException<CommandSyntaxException> error) {
this.minSize = minSize;
this.maxSize = maxSize;
this.error = error;
}
public @Nullable String parse(ParseState<StringReader> state) {
StringReader input = state.input();
String fullString = input.getString();
int start = input.getCursor();
int pos = start;
while (pos < fullString.length() && this.isAccepted(fullString.charAt(pos)) && pos - start < this.maxSize) {
pos++;
}
int length = pos - start;
if (length < this.minSize) {
state.errorCollector().store(state.mark(), this.error);
return null;
} else {
input.setCursor(pos);
return fullString.substring(start, pos);
}
}
protected abstract boolean isAccepted(char c);
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置: