Para generar el parser me he ayudado del módulo yapps. Utilizando la notación de esa utilidad, la gramática que utilizan las instrucciones de mi programa es la siguiente:
parser Pymappu:
ignore: '\s+'
end: '$'
string: r'"([^"\\]*(?:\\.[^"\\]*)*)"'
float: '\d+(\.\d+)?'
rule coordinate: '\('
float ',' float
'\)'
rule expr: (
('putAttraction' | 'putAddition')
'\('
(
'\(' [string [string]] coordinate '\)'
)*
'\)'
)
|
(
'drawPath'
'\('
(
coordinate
)*
'\)'
)
|
end