parser is more semantic, const support added