This is an incomplete version of bc. It's big (maybe too big for the
mailing list ?), and it contains :
- bc.pl : the program. Do not even think about reading it, it's
generated.
- bc.pod : the documentation.
- bc.y : the yacc source ; if you want to make changes in the program,
modify this file, and regenerate bc.pl with perl-byacc (I don't have
the URL here, but it can be found by searching into CPAN).
The main limitation is that it has no arbitrary precision, which is
rather annoying for an "arbitrary precision calculator language"...
The reason is that Math::BigFloat didn't seem to provide all the
features I needed, and I preferred to write something which works,
before trying to find a solution. So it works with the Perl standard
precision, which is sufficient most of the time.
The "calculator" and "language" parts work. It passes the GNU tests
that do not require arbitrary precision. There are operators,
variables, statements, loops, user-defined functions, and more. Of
course it's slow, and the error recovery should be better.
I have one concern though : I implemented the math library (which is a
bc program) by taking the one which is provided with the GNU bc
distribution, and copying it into the main::DATA section of my
program. Of course, it's GPL-ed. So what about the license of my code
? I don't like this kind of question, but I suppose it's necessary to
take a decision. I can remove the library (it's not very important) if
people think it's better to have one single license for all of PPT.
Of course, any bug report will be greatly appreciated. It's the first
time i use yacc, so I'm sure there are plenty of bugs. Anyway, I like
byacc.
Thierry