Commit Graph

163 Commits

Author SHA1 Message Date
ed 7be3617083 Runtime fixed 2023-08-21 22:48:05 -04:00
ed 5c47777972 compiles agian... 2023-08-21 21:40:23 -04:00
ed 050b00f28a WIP - Broken Compile : Added pragma once and includes to all files + Parser fixes, and String improvements
Adding the pragma once and includes the files broke compilation, still diagnosing why.

- Some string functions were moved to the cpp, still need to do some more evaluation of it and the containers...
- Added support for forceinline and neverinline to parsing (untested)
- Added support for specifiers in operator cast such as explicit, inline/forceinline/neverinline, etc.
    - Before it only support const.
    - Still need to support volatile.
- Forceinline was not supported at all for tokenization, fixed that.
2023-08-21 20:30:13 -04:00
ed 1241f44fd4 scan_file function can auto skips pragma once and includes
Needed so that includes could be added to components so that intellisense would not fail since the parser (for most editors) doesn't properly parse the enviornment and cheats on a per-file basis.
2023-08-21 20:27:00 -04:00
ed 05fa62eced Test building & generation fixed with altest scripts 2023-08-20 15:45:06 -04:00
ed 37d9782cf2 Singleheader now compiles with new build script on both clang & msvc 2023-08-20 10:17:55 -04:00
ed 11679ba8b4 New build script works for clang and msvc!
Need to update singleheader and test to use it.
2023-08-19 21:33:01 -04:00
ed 8985f0a4d9 MSVC in latest script works
Clang is having issues.
2023-08-19 17:08:13 -04:00
ed 32a910515e More refactoring, getting rid of meson in favor of just powershell scripts 2023-08-19 12:18:48 -04:00
ed aa928ff446 Scripting updates, some refactors..
Made a package release script.

Did refactors based on some design considerations
Still need to make some major decisions...
2023-08-09 18:47:59 -04:00
ed 5aff89262b Fixes (Doc typos, pragma once worng type, non-debug fatal compile fail) 2023-08-09 09:50:12 -04:00
ed b5fa864318 Fixes and improvements to serialization.
There were multiple issues with comment and newline lexing.

Extended printing functions to support Strings with %S flag (captial 'S').
Allows for length detection. Also made it so that precision for strings is the string length.
2023-08-08 22:14:58 -04:00
ed bb35444be9 Fix for log_failure macro expansion in helper.hpp: CodeBody gen_ast_inlines() 2023-08-08 15:53:10 -04:00
ed 67d02c1f62 Fix for wrong tokens for GNU/MSVC attribute captures (parse_attributes)
Also a fix for a typo in the readme...
2023-08-08 15:35:06 -04:00
ed c7647ab00f Updated docs 2023-08-08 11:56:42 -04:00
ed d2fc1d0a56 Converted log_failure and fatal to macros (fixes GEN_PANIC not determining correct line or file) 2023-08-08 09:48:50 -04:00
ed ed3246c6b0 Fixes for typedef serialization of functions..
Also fix for HashTable<>::rehash_fast not having finished implemenation...

The typedef fix is a sort of hack (like how parsing the rest of the language feels like tbh...).
I might make a def_typedef_fn to make it clearer how to define function typedefs using the upfront interface.
2023-08-07 20:16:04 -04:00
ed c2f8c8aeb1 Added constructor and destructor supported (UNTESTED)
Just compiles and generates...

Also fixed a bug where parsing didn't have a token for virtual specifiers...
2023-08-07 03:10:45 -04:00
ed c2319b9651 Fixes for test.singleheader_ast.cpp, also added a bench for it.
On a Ryzen R9 5950 it takes 11 ms to generate AST and 21 ms to serialize to file.
2023-08-06 17:46:17 -04:00
ed a4f9596d3b Fixes to serialization, reduced Define_CodeType macro
Now the execution code is generated in bootstrap/singleheader gen.
2023-08-06 17:19:57 -04:00
ed 97750388ad No longer using components/temp/ast_inlines (switched to helper function to avoid macro usage)
Increased the arg count support of num_args to 100.
2023-08-06 14:58:43 -04:00
ed 00f6c45f15 Fixes for serializations found with last commit's test.
Should be fine to move on to next major feature....
2023-08-06 13:28:19 -04:00
ed 34f286d218 Library can now construct into AST and serialization itself (singleheader).
Still need to validate if they match.
2023-08-04 16:12:13 -04:00
ed d36c3fa847 Single header generates again, some more cleanup.
Looking into properly dealing with empty lines...

I want to preserve the text's empty lines in the AST for serialization purposes (perserve formatting for gapes between definitions).
Don't want to introduce the possibility of it breaking though, so will have to ignore empty_lines in a general way (if they are in a bad spot).
Attempted to cover that by having TokArray::current() auto-skip empty lines and eat as well if the type doesn't match.
2023-08-03 23:18:33 -04:00
ed 5d7dfaf666 Heavy refactor..
Isolating large macros to their own directory (components/temp).
- Plan is to remove them soon with proper generation.

Added additional component files, separating the old data_structures header for a set of ast headers.
Header_end also had its inlines extracted out.
Necessary to complete the macro isolation.

ZPL parser dependencies were removed from the core library along with builder, its now generated in bootstrap as pare of making a gen_builder set of files.

Singleheader will be changed in next few commits to reflect this as well (By making builder deps and components a conditional option).

Tests are most likely all broken for now.
2023-08-03 11:01:43 -04:00
ed a8a9b681f0 test completes singleheader ast construction and serailizes with corruption 2023-08-02 14:01:56 -04:00
ed b96b0821c1 Fixes towards parsing (getting to line 12575 now of the singleheader. 2023-08-02 12:39:35 -04:00
ed 4c8a0f0005 Iterations on serialization improvements. 2023-08-01 20:56:00 -04:00
ed 684569750d first serialization of singlehearder without asserts. (Still failing after around 4k lines. 2023-08-01 16:07:47 -04:00
ed 0f16d1131e Got past parsing, fixing serialization 2023-08-01 14:02:54 -04:00
ed 528ef72a51 More progress on parsing
Made it to line 2597 of self parsing its singleheader

Complex global or member defintions are now supported.
2023-08-01 05:17:24 -04:00
ed 21a8f3bb39 WIP: It can parse to around ~2k lines. Need to improve its ability to detect when a forward declare of a class/enum/struct/union..
This language truly is a mess.
2023-08-01 00:42:08 -04:00
ed 2b63fc27cd Progress toward preprocessor parsing, lexing works, parsing does not. 2023-07-30 18:55:57 -04:00
ed bfbfae466f Naive preprocessor support initial implementation (compiles and runs, not heavily tested) 2023-07-30 01:21:04 -04:00
ed 03df940085 Improved parser scope errors.
Added the caret for indicating where the error is.
2023-07-29 17:14:02 -04:00
ed 0a5885495f got old tests working (test.parsing.cpp and test.upfront.cpp) 2023-07-29 16:00:06 -04:00
ed f09bb99fdf Fixes for test generation (sanity, soa). 2023-07-29 13:15:53 -04:00
ed 108b16739f bootstrap and singleheader compile and generate. 2023-07-29 12:25:38 -04:00
ed 689646c393 Finished iniital refactor pass. Comples, but has runtime issues. 2023-07-29 06:32:16 -04:00
ed c5afede7b5 Reorganization of files, refactors, doc updates (WIP)
Removing the gen. namespace from the files for components, dependencies, and file_processors.
They are only necessary if the include directory is transparent, and in my case those are not.

Made a docs directory. I'm offloading information from the main readme to there along with additional informationn I end up elaborating on down the line.
Enum tables were moved to their own directory (project/enums).

Library will not compile for now. Major refactor occuring with parsing related components.
2023-07-29 05:52:06 -04:00
ed 31e1c38c18 Started to implement context stack for parser. 2023-07-28 21:44:31 -04:00
ed 3f0b7e7fc6 Update to scripts, readme
Offloaded todo to the issues on github.
2023-07-28 03:15:50 -04:00
ed d977c82f37 Fixes from latest refactor of toktype enum. 2023-07-27 17:12:58 -04:00
ed b00c1ae522 ECode, ESpecifier, and ETokType are now all generated.
There is a redundant pattern for generating all three (as expected).

I'll use it to define a general way of doing this sort of behavior.
2023-07-27 02:51:36 -04:00
ed cf65638979 Started to generate the enums from csv (ECode, EOperator, ESpecifier).
- Changed the zpl csv parser to only accept hex values with 0x perfix. it was messing with the add term.
- Small changes to the clang format config.
2023-07-26 14:21:20 -04:00
ed 8232e79aac Adding pragma regions to all dependency components 2023-07-25 23:00:57 -04:00
ed a11117c97c Fixes to the parsing constructors 2023-07-25 19:23:21 -04:00
ed cd9b393790 Fixes to bootstrap and singleheader generation 2023-07-25 17:46:00 -04:00
ed 62b0ed2112 Finished initial implmentation bootstrap generation and singleheader implementation. 2023-07-25 15:12:51 -04:00
ed 88d36f5d06 Update readme and scripts
Both bootstrap and singleheader now name the files the same as the library's default.
Output now directed toward gen directory for the corresponding dir (project, singleheader, or test)
2023-07-24 23:10:10 -04:00