analizador parsimonioso – error al intentar analizar la gramática de la tarea

Estoy usando el Parsimonious Parser de Python para intentar construir un intérprete para un lenguaje simple que estoy diseñando. Vi este video tutorial que fue muy útil, y ahora estoy modificando lentamente el código para que coincida con mis propias reglas. Estoy atascado en una regla de asignación originalmente definida como:

def assignment(self, node, children): 'assignment = lvalue "=" expr' lvalue, _, expr = children self.env[lvalue] = expr return expr 

Modifiqué la regla ligeramente con la siguiente gramática:

 def assignment(self, node, children): 'assignment = "SET" lvalue "," expr' _, lvalue, _, expr = children self.env[lvalue] = expr return expr 

Me gustaría que el analizador evalúe SET a, 7 por ejemplo, lo mismo que a = 7 y vincule el valor 7 al nombre a . Sin embargo, cuando bash analizarlo, recibo este error de la biblioteca Parsimonious:

 parsimonious.exceptions.IncompleteParseError: Rule 'program' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with 'SET a, 7' (line 1, column 1). 

Soy bastante nuevo en el análisis / lexing y no estoy completamente seguro de si definí la regla correctamente. Esperaba que alguien con más experiencia en análisis / lectura me ayude a definir correctamente la regla y a explicar dónde me equivoqué. ¿Quizás también me explique el error Parsimonioso?

Cuando intentaba analizar SET a, 7 , mi regla de valor de lvalue no tenía en cuenta el espacio en blanco entre SET y el valor de a . Esto se debe a que lvalue mi regla lvalue como 'lvalue = ~"[A-Za-z]+" _' que no tiene en cuenta los espacios en blanco antes del nombre. Redefiní mi regla de asignación de la siguiente manera para tener en cuenta el espacio en blanco entre el GET y el nombre:

 'setvar = "SETVAR" _ lvalue _ "," _ expr' 

Parsimonious parece gustarle mucho mejor.