initial dump: first pass at expression grammar and naive js port of @rsc's regexp.go