Можете ли вы использовать регулярное выражение вместо разделения?
var input = "AB-PQ-EF=CD-IJ=XY-JK";
var pattern = new Regex(@"(?<![A-Z])(?=([A-Z]+[=-][A-Z]+))");
var output = pattern.Matches(input).Cast<Match>().Select(m => m.Groups[1].Value).ToArray();
В качестве ошибки говорится следующее:
raise ValueError("Ran into a %s where it wasn't expected" % token.gettokentype())
Измените его, как показано ниже, и проверьте:
raise ValueError('Ran into a %s where it wasn't expected' % (token.gettokentype()))
Ваша грамматика описывает одну команду:
say : SAY OPEN_PAREN expression CLOSE_PAREN SEMI_COLON
Так что это то, что принимает синтаксический анализатор.
Если вы хотите, чтобы ввод состоял из нескольких команд, вам нужно написать грамматику, описывающую этот ввод:
program :
program : program say