Hi All, I've just completed the merging of the New Parser branch work with the HEAD branch. I did this manually as it was easier for me to do, but CVS history of the changes I did remain in the new parser branch only. Some notes: -To compile the new parser you'll need Flex and Bison. By default, SConstruct will not build the new parser unless "buildNewParser=1" is given. -To use the new parser at runtime, you'll have to pass the "--new-parser" flag to Csound, otherwise by default the old parser is used. -A test suite I was using of CSD files and a python test harness script have been checked into CVS as the tests directory. The test script defaults to outputting to stdout but I did a write a (not very good) TK UI also that can optionally show up after running by giving the "--show-ui" flag to the test.py script. -I was adding notes on the new parser to the To-fix-and-do file in the new parser branch and I copied that over to HEAD. I also tried to comment the new code as I was working. -I did do a check to make things C89 compliant, but I haven't looked at the code in the past month and a half so if there's any non-compliance, please feel free to correct and checkin. -The current missing language features I know of are: if-then's UDO's some opcode polymorphism cases macro's some expression operators -The optimization run needs to be implemented(stub is in); certain code is not as efficient and current parser (particularly not generating unnecessary temp variables) -The grammar reports ambiguities; last I remember when working, I thought that the grammar and lexer may need to be worked more tightly together and become context-dependent instead of context-free. I don't know what's the way to go exactly. -The file Engine/symbtab.c may need to be reworked on how it builds the symbol table. -Csound will fail miserably on invalid input; I have not touched failure at all, and the parser doesn't report anything to Csound at the moment, so if invalid input is given, csound just keeps going along in a probably uninitalized state. Last I checked, using the --new-parser I was able to render "Trapped in Convert" and also "Xanadu". When building with the new parser, the following files are generated: Engine/csound_orclex.c Engine/csound_orcparse.c Engine/csound_orcparse.h PLEASE do not check them in! (Add them to your individual .cvsignore file). (I've attached copies here for Anthony to try out at his request.) To reiterate, the new parser does not compile by default and is not used at runtime by default, so for the lay person who may be compiling and using Csound, things should just run as it used to without any problems. If there's any questions, please feel free to ask away here. It'd be great to get as many eyes on the code and help in implementing as possible. I don't feel like this is "my" code or anything so if you want to change it please go ahead, but just let everyone here know you're working on it so we can all coordinate to some degree. Thanks! steven