list all possible nodes. commit before changing the ebnf
create modified ebnf (typescript.ebnf.ympbyc) that avoids in-place optional operator to include empty nodes. the ebnf might not be suitable for checking typescript grammer but serves our need of parsing gramatically correct typescript. create transformer based on the new AST generated using typescript.ebnf.ympbyc