added syntax and abstract API for token productions