提交 ea8ebe21 authored 作者: Thomas Mueller's avatar Thomas Mueller

Improved links in the grammar doc

上级 909f5dc9
......@@ -120,13 +120,13 @@ public class Bnf {
addFixedRule("@ymd@", RuleFixed.YMD);
addFixedRule("@hms@", RuleFixed.HMS);
addFixedRule("@nanos@", RuleFixed.NANOS);
addFixedRule("anythingExceptSingleQuote", RuleFixed.ANY_EXCEPT_SINGLE_QUOTE);
addFixedRule("anythingExceptDoubleQuote", RuleFixed.ANY_EXCEPT_DOUBLE_QUOTE);
addFixedRule("anythingUntilEndOfLine", RuleFixed.ANY_UNTIL_EOL);
addFixedRule("anythingUntilEndComment", RuleFixed.ANY_UNTIL_END);
addFixedRule("anythingExceptTwoDollarSigns", RuleFixed.ANY_EXCEPT_2_DOLLAR);
addFixedRule("anything_except_single_quote", RuleFixed.ANY_EXCEPT_SINGLE_QUOTE);
addFixedRule("anything_except_double_quote", RuleFixed.ANY_EXCEPT_DOUBLE_QUOTE);
addFixedRule("anything_until_end_of_line", RuleFixed.ANY_UNTIL_EOL);
addFixedRule("anything_until_end_comment", RuleFixed.ANY_UNTIL_END);
addFixedRule("anything_except_two_dollar_signs", RuleFixed.ANY_EXCEPT_2_DOLLAR);
addFixedRule("anything", RuleFixed.ANY_WORD);
addFixedRule("@hexStart@", RuleFixed.HEX_START);
addFixedRule("@hex_start@", RuleFixed.HEX_START);
addFixedRule("@concat@", RuleFixed.CONCAT);
addFixedRule("@az_@", RuleFixed.AZ_UNDERSCORE);
addFixedRule("@af@", RuleFixed.AF);
......
......@@ -40,7 +40,7 @@ public class RuleElement implements Rule {
if (link != null) {
return link.random(config, level + 1);
}
throw new Error(">>>" + name + "<<<");
throw new Error(name);
}
public String name() {
......@@ -58,17 +58,25 @@ public class RuleElement implements Rule {
if (keyword) {
return;
}
for (int i = 0; i < name.length() && link == null; i++) {
String test = StringUtils.toLowerEnglish(name.substring(i));
RuleHead r = ruleMap.get(test);
StringBuilder buff = new StringBuilder();
for (char c : name.toCharArray()) {
if (Character.isUpperCase(c)) {
buff.append('_');
buff.append(Character.toLowerCase(c));
} else {
buff.append(c);
}
}
String test = buff.toString();
for (int i = 0; i < name.length(); i++) {
String t = test.substring(i);
RuleHead r = ruleMap.get(t);
if (r != null) {
link = r.getRule();
return;
}
}
if (link == null) {
throw new Error(">>>" + name + "<<<");
}
throw new Error("Unknown " + name + "/" + test);
}
public boolean matchRemove(Sentence sentence) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论