Neolithic v0.3 alpha release
It's been too long... so I figured I'd take the time to release another version of the compiler. I spent a lot of effort doing cleanup in the code base (paying dev taxes). There are a few good features that have been added, but mostly bug fixes and compiler code cleanup.
Here's the compiler (with some test code) for Win/Mac:
Neolithic-v3_alpha_with_tests.zip
AND the latest Congo Bongo source with Windows Batch file to build the different TV format versions (NTSC, PAL50, PAL60):
Hopefully everything builds.... let me know if it doesn't.
Enjoy!
--Philip
------
I see that quite a few people have downloaded the previous version of the compiler and the Congo Bongo code base. Please feel free to ask questions or share any feedback you may have. The language is still in flux, so if you have any suggestions / feedback in that area, please let me know.
-----------------------------------
Changes from previous version
-----------------------------------
FEATURES:
- Added "alias" identifier types to allow name aliasing of variables / variable references.
These help the compiler generate more optimal code when referencing a specific element
of an array of structs.
- Added more functionality to enums:
- Un-named enum lists now work. Each enum value gets added to main symbol table as consts.
- Named-enum lists have their own scope. Using one of the enumeration values within now requires
referencing with the enum list name. This is mainly to put them in-line with how named-structs work.
- Added a bit more functionality to array references.
- Started adding some command line parameters.
Run 'neolithic' without any arguments to see the list.
- Started adding more compiler directives.
+ #echo
- Allows user to print debug information during compile-time.
+ #use_quick_index_table
- Allows user to specify that an array should have an index table created to
make element access quicker... mainly useful for array of structs.
- Begun to write test cases for all the features of the compiler.
---------------------------
BUG FIXES / IMPROVEMENTS:
- Fixed some tidbits with the assembly processing and opcode support.
- Switched more of the assembly ops to display as variable references instead of just absolute memory addresses.
- Fixed call-tree analysis to help eliminate some problem cases with overlapping variables.
- Improved assembly output to show missing source code lines case statements, do-while).
- Fixed tokenizer to process tokens up to 82 characters in length.
This was fixed to allow supporting long string literals for #echo.
-------------------
UNDER THE COVERS:
Compiler memory usage optimization and cleanup.
- Added separate allocation functions to help track memory usage.
- Major cleanup/rework of the compiler symbol table / record subsystem.
Basically, a lot of things were consolidated and/or simplified.
- Added in hash-based identifier storage system.
Compiler code stats for anyone who's interested (numbers include the source code tests provided above):
------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C 44 1937 1723 8600 C/C++ Header 33 328 210 884 CMake 1 4 2 65 Markdown 1 23 0 41 DOS Batch 2 0 0 7 ------------------------------------------------------------------------------- SUM: 81 2292 1935 9597 -------------------------------------------------------------------------------
0 Comments
Recommended Comments
There are no comments to display.