uCalc Language Builder (beta)

November 2007
  New for uCalc Language Builder
    - Help file (was previously available separately)
    - Interactive tutorial
    - Better error message when trying to re-define a constant
    - Better error handling for ucDefine
    - Expression expansion works better around statement separators
    - User Defined Data types
    - You can specify starting value for Fixed String type
    - Peek/Poke routines
    - Fix: memory leak in ucStrReturn
    - Fix: memory leak when re-defining an error message
    - Fix: error handling in threads other than the default

  New for Interactive Interpreter
    - Help file
    - updated .uc files
    - Improved PRINT statement in BASIC.uc
    - Type/End Type, Locate, CursorX/Y in BASIC.uc
    - Quit renamed to Exit
    - Exit File[s]
    - Exit All
    - Spaces beyond line continue character(s) are ignored
    - Log command defaults to IO of not specified
    - Keys can be reconfigured to output any given text
    - Improved CLS

  Note: Some of the .Txt files are a little outdated.


June 2007

Some minor fine-tuning was done in preparation for uCalc Free Math Parser 2.9.


Here is a list of files included in the zip file (*.uc are plain text files):

uCalc.Exe    - Interpreter program that can run interactively or run a script.
ucalcfmp.dll - Main DLL file.  Compiled with PowerBASIC.
evaluate.dll - This supplements the main DLL.  Compiled with Delphi. 

ReadMe.txt   - This file.
HelpFile.txt - Rough draft of the help file.
uCalc.txt    - Line-by-line explanation of the code found in uCalc.uc.
BASIC.txt    - Line-by-line explanation of the code found in BASIC.uc.
Define.txt   - Line-by-line explanation of the code found in Define.uc.
Errors.txt   - Explanation of the code found in Errors.uc.
Types.txt    - Explanation of the code found in Types.uc.

Basic.Bat    - Loads an interactive session of a BASIC as defined in BASIC.uc.
Forth.Bat    - Loads an interactive session of a Forth as defined in Forth.uc.
Lisp.Bat     - Loads an interactive session of a Lisp as defined in Lisp.uc.
Logo.Bat     - Loads an interactive session of a Logo as defined in Logo.uc.

ucalcpb.bas  - PowerBASIC include file. (Other Includes to be added later).

ucalc.uc     - This file loads automatically when you run uCalc.Exe.
Basic.uc     - Source code for a partial BASIC-like language.
Define.uc    - Constructs for defining primitive functions/operators/variables.
Errors.uc    - Text for error messages.
Forth.uc     - Source code for a partial Forth-like language.
Help.uc      - Table for interactive help [incomplete].
Logo.uc      - Source code for a partial Logo-like language.
Interp.uc    - Interpreter-specific code.
Library.uc   - Library of elementary routines.
Lisp.uc      - Source code for a version of Lisp.
PBFlavor.uc  - PowerBASIC flavored definitions (BASIC.uc loads this file).
RPN.uc       - Source code for a simple Reverse-Polish-Notation calculator.
Types.uc     - Default data types.
WinAPI.uc    - This defines a few key API routines for use as building blocks.


May 2007

The Language Builder idea apparently has not yet captured the imagination
of users.  People are asking instead for the next version of uCalc Fast
Math Parser.  So that's where most of the work for this beta was geared.
Even so, uCalc FMP is really just one out of many possible implementations
of the Language Builder, and a lot of the background fine-tuning to make
this month's FMP beta better were changes made to the Language Builder.

In addition to fine-tuning, there are various small additional features
and enhancements to the this beta's Language Builder, as well as the
interpreter.


April 2007

Earlier betas this year focused exclusively on the Language Builder.  This
month, a separate download for uCalc Fast Math Parser was released.  Changes
in this month's Language Builder are mostly related to uCalc Fast Math Parser
functionality.


March 2007

An implementation of the Lisp language was added, while the language builder
overall continued to be refined some more.  The Lisp implementation was created
as I was going through the Lisp Primer tutorial found at 
mypage.iu.edu/~colallen/lp/  .  If you run Lisp.Bat, you should be able to
cut-and-paste the examples found there, right into the interpreter, and see the
results.


February 2007

A couple of languages were added to this beta.  The Forth.uc language file was
created basically as I read through the Forth Tutorial page that I found at
www.softsynth.com/pforth/pf_tut.htm .  Most of the examples there should work
under uCalc's version of Forth.  However, I quit before the end, and worked on
a quick and dirty version of Logo.uc .  The graphic window implementation is a
bit crude for now, but it's enough to allow you to draw neat patterns.  Beyond
that things continue to be fine-tuned overall.


January 2007

This beta represents a complete break from the previous series of uCalc Fast 
Math Parser betas that were released in 2005 and prior (there were none in 
2006).  Early in 2006, I took the risk of starting the project over, entirely 
from scratch; without transferring even a line of code from the old to the 
new DLL.  It has taken time for this new implementation to catch up to where 
I left off with the last beta.  However, the change turns out to have been 
well worth it, as the new approach is simpler, works faster, and is more 
flexible than ever before.  It will also be considerably easier for me to 
continue developing using this new approach than it was with the old code.  
There is still quite a bit of work left.  However, at this stage, there is 
enough material to already give you a very good idea of what's in store.

Here is a partial list of some of the main differences between the old 
approach and the new:

- Instead of a growing number of new routines, now there is basically only 
one exported DLL function, uCalc(), to deal with.  With just one exported 
routine from which all of uCalc's functionality is derived [plus a couple of 
minor exports], it should be significantly simpler to document and implement
uCalc for various compilers.

- The component now has no built-in functions, operators, syntax constructs, 
data types, keywords, symbols, or anything else that is hard-coded.  You are 
given a blank slate with a few key tools with which to construct your 
language, unobstructed by hardwired restraints.

- The method for defining syntax constructs was revamped.  At the surface, it 
will appear similar, but the implementation was re-designed more logically.

- There is a Bootstrap language for constructing your own languages.  The 
syntax construction feature represents only one aspect of it.

- The previous interpreter beta relied heavily on a library of callback 
routines that were compiled into a uCalc-specific DLL file.  Now, using the 
bootstrap language, most things can be defined from the ground up, by writing 
the source code in a plain text file that can be loaded into the interpreter.  
You can directly call Windows API functions, or standard routines found in 
any convention DLL files.  uCalc does come with its own library of essentials 
from which to pick from (data type handlers, arithmetic routines, etc...).  
Should you prefer to design your own callbacks for this, the code to do it 
would be very straightforward. 

To get the most of this beta, you may want to browse through the BASIC.uc 
file, which contains the partial construction of a BASIC language, alongside 
BASIC.txt, which contains a line-by-line explanation of BASIC.uc.  You will 
also want to run the BASIC.Bat file, which will open the interpreter and load 
the BASIC language, allowing you to interactively play with some of the 
concepts.  You can run uCalc.Exe by itself if you don't want to load BASIC.  
Other languages are in the works.  However, you can already try your hand at 
creating one of your own.

The ReadMe.Txt file in previous betas included a cumulative list of 
improvements from previous betas.  Since there is no continuity between the 
features from earlier betas and this one, the list of previous improvements 
were omitted from this file.  Earlier betas are still available for download, 
should you be curious about the differences.

The previous betas had a number of features related to pre parsing, and tree 
parsing.  Those were not included in this new approach.  Should you somehow 
feel that the tree parsing routines are necessary, please let me know.

This beta does not come with include files for the various supported 
languages.  For now, everything is centered on the interpreter and the files 
that can be used with it.  Include files should be forthcoming later.


DISCLAIMER

- There is no guaranty as to the date of release for the next version.
- There is no guaranty as to the features of the next version.
- There is no guaranty as to the suitability of this version for
  purposes other than beta testing.
- All parts of the beta version are subject to change without notice,
  and without regard to compatibility from one beta version to the next.
- A license for the beta cannot be purchased.  Until the next version is
  no longer in beta, only a license for version 2.0 can be purchased.

