Fixes and cleanups in the yacc parser
This introduces various memory leak fixes and cleanups in the parser. It additionally enables a valgrind run with check for memory leaks.
It does change the generated structures by removing non-functional nodes.
- Code modified for feature
- Test suite updated with functionality tests
- Test suite updated with negative tests
- Documentation updated
- There is a test suite reasonably covering new functionality or modifications
- Function naming, parameters, return values, types, etc., are consistent with other code
- This feature/change has adequate documentation added
- No obvious mistakes in the code