ast: tests and avoid constructors that require 'new'
partial:  grammar refactor (+ ast)