I'm a market Research DP and I decided to develop a tool which is similar in functionality to programs commercially available, because the tool which we use falls short in many areas. These are the sources to my version of a similar - it's still in a very nascent stage. I have put up the sources on CVS.
It generates tables on absolute values. Right now it runs as an interpreter (although I intend it to be a compiler). It should be easy to build on a UNIX system - I have a GNU/Linux system (Fedora Core 2) and it works fine. You need a C++ compiler, yacc and lex to do the build and the STL library should be in place. I have recently tried to get autoconf and automake going with the package, so all you have to do is type "configure" and then "make" and if everything is in place - the build should be successful. There's a README file and an INSTALL file also.
I've also put in the original configure.ac and Makefile.am. There's a Makefile.win32, which I used to do the build with Borland's C++ Compiler on Windows. Of course you need GNU bison and flex compiled on Win32, and you will have to tweak "Makefile.win32" to point to the correct location of the include files etc.
The "input2" file is an example of the input language, which is very much like 'C'.
I'm currently working on adding a Type system to the Expression Grammar. So you can expect
"gram.y" and the Expression classes to get completely revamped.
This is a work in progress and I'm not very good at HTML(I looked at sources of HTML files and constructed this page), nor do I have a lot of time. But I will make this a better page as and when I get the time to do so.
There is a test data file "test.yyy". The data file contains serial, card numbers in ASCII format - i.e. you can read them - but the rest of the data is in binary format. However when you run a hole count you can see what's stored in the file. The Single punch data and Multi Punch data is stored in the same format - bits of a Byte - so code '1' means 2 exp 0, code '2' means 2 exp 1 etc. Multipunch data is simply a bitwise OR of the various powers of 2 (upto 2 exp 8). By the way "exp" translates into exponent. I tested the emit and the delete statements and they seem to work fine.
Also, I tried doing a build on my office GNU/Linux system - they are running Redhat 7.3 if I'm not mistaken. I had to change the "ios_base" to "ios" for all fstream class definitions. So if you get a Syntax error while doing the build - this is what you have to do.
If you are successful in doing a build write to me at firstname.lastname@example.org. I'd be happy to know that someone else has looked at it.
Warning!!! The program as it is now cannot be used for any kind of production purposes. However, feel free to experiment with it and write in with your comments. I will do my best to take criticism in a positive spirit.
Neil Xavier D'Souza,