Я пытаюсь разобрать txt файл, который представляет грамматику, которая будет использоваться в парсере рекурсивного спуска. Файл txt будет выглядеть примерно так:
SPRIME:: = Expr eof
Expr:: = Term Expr '
Expr ':: = + Term Expr' | - Term Expr '| e
Чтобы изолировать левую сторону и разделить правую сторону на отдельные правила производства, я беру каждую строку и вызываю:
String[] firstSplit = line.split("::=");
String LHS = firstSplit[0];
String productionRules = firstSplit[1].split("|");
Однако, когда я вызываю второй метод split, я не возвращаю массив строк, разделенных символом "|" характер, но массив каждого индивидуалистического персонажа с правой стороны, включая "|". Например, если бы я разбирал правило Expr и печатал массив productionRules, это выглядело бы так:
"+"
"Термин"
"Выраж '"
""
"|"
Когда то, что я действительно хочу, должно выглядеть так:
- Term Expr '
У кого-нибудь есть идеи, что я делаю неправильно?