Здравствуйте, Roman Odaisky, Вы писали:
RO>Можно было бы написать class grammar, но тогда функции не будут видеть ранее определенные идентификаторы.
Почему не будут? К переменным класса (статические переменные) можно обращаться с помощью имени класса (MyClass.myVar), либо через self, если используем объект. Если объект не создаём, то методы делать статическими.