Commit Graph
100 Commits
Author SHA1 Message Date
ed e5616c5879 generated code update + reverting some fixes for now... 2024-10-25 02:59:56 -04:00
ed 40a256f6c3 initial setup for generating a library compatible for usage as an Unreal thirdyparty module. 2024-10-25 01:04:48 -04:00
ed b8e1aa6eb7 WIP : Fixes and other changes
* Number literals weren't getting properly lexed
* Fixes for compiler errors with Unreal Engine configuration.
* Support for "post-name" macros in parameters
* Support for variables initializing directly using constructor syntax.
* Explicitly added inline keyword to header inlines for compiling compile library in multiple translation units.
2024-10-25 01:04:17 -04:00
ed e1592ba410 Bug fixes and updates to package_release.ps1
- Incrased size of the defines_map_arena to 256KB
- Various fixes for the parser
- Various fixes for code serialization
- Fix for is_equal member func in Code types
- Fixes for hasthable container
- Added are_equal static func to String type for use against StrC
- Added starts_with functions to String type
- package_release.ps1 now packages all docs (forgot to update it with last release)
2024-05-05 21:53:22 -04:00
ed 4a2a93d41b Updated docs 2024-04-17 18:29:30 -04:00
ed 36260f6edb Updated gencpp with latest fixes used in other projects.
This variant can support parsing some Unreal Engine files!!
2024-04-17 17:40:32 -04:00
ed 83d691c65c Pushing latest changes for gencpp 2024-04-17 16:55:22 -04:00
ed 626ab703a7 Fixed some compilation errors 2023-11-22 15:41:41 -05:00
ed 6b10cd2b3e Updated AST_Types.md doc 2023-11-22 15:03:24 -05:00
ed 91a3250d4c Finished current iteration of parser_algo docs and parser.cpp inline comment docs
Added some todos and prep for upcoming changes
2023-11-22 14:23:21 -05:00
ed a667eb4afe Progress on parser documentation 2023-11-21 23:36:56 -05:00
ed f67f9547df WIP: Improvements to parser, updated docs
Trying to get support for typename keyword soon
2023-11-21 21:27:33 -05:00
ed 772db608be Added support for predefining preprocessor defines before parsing strings of code.
This prevents issues for preprocessor defines not getting treated properly for specific circumstances (such as macro wrappers for specifiers).
2023-11-21 20:09:14 -05:00
ed be023325a9 Added AST & Code definitions segemnted code defs to separate file
For upcoming statements & expression types, just beginning to lay things out for the future.
2023-11-21 20:07:49 -05:00
ed a0ee683f82 Added new csvs for ECode & ETokType to keep track of upcoming additions 2023-11-21 20:06:05 -05:00
ed 6ad0ae97bc Added bool type keyword to ETokType, move volatile pos in ESpecifier
volatile can be applied to a function so I moved it there.
2023-11-21 20:05:38 -05:00
ed 3319bfcaa9 Updates to test and workspace
Added a more granular test using the original library files. Already helped me identify a bug.
2023-11-21 20:03:51 -05:00
ed 9d27c7d37e Lexer improvement prep, segmentation of lexer and parser. 2023-11-20 21:24:27 -05:00
ed 5c73fbee83 WIP : AST serialization improvements
Code untestd its an initial draft
2023-11-19 20:35:21 -05:00
ed 36ebbfe29b Got refactored raylib working in the vis_ast binary
Now to make that debugger...
2023-11-19 00:01:35 -05:00
ed 053daaf877 Merge branch 'main' into dev 2023-11-17 19:26:21 -05:00
ed 040ec00606 Raylib c refactor scripts complete 2023-11-17 19:25:54 -05:00
ed 919166efa1 fix for build script 2023-10-25 23:55:29 -04:00
edandGitHub 9bd6dac783 Merge pull request #51 from Ed94/dev 2023-10-25 23:47:29 -04:00
ed 212d907d73 Fixed bug with inline comments for variables not parsing correctly. 2023-10-25 23:44:25 -04:00
ed c1ab233686 Fix for bug with comma separated declaration list vars
Known Bug: Inline comments are not printing now
2023-10-25 21:43:22 -04:00
ed b42b224c0d Forgot to push some parser fixes 2023-10-25 03:33:35 -04:00
ed 041671762b Got through parsing raylib.h, started to do some major refactors. 2023-10-25 03:26:25 -04:00
ed d0f3b6187e Added initial support for comma-separated variable declaration lists. 2023-10-25 00:25:35 -04:00
ed b22f589203 Progress on preparing raylib for usage 2023-10-24 12:46:59 -04:00
ed 4af85f8612 update gitignore for exes 2023-10-24 06:02:07 -04:00
ed e9c151f85d Deleting a sneaked in binary 2023-10-24 06:01:47 -04:00
ed a900e86b65 Got raylib bootstrapped to compile
Still need to setup a refactor script among other things before using.
2023-10-24 06:00:28 -04:00
ed d5a4b77033 Some initial boostrapping of new visual ast aux project 2023-10-24 03:14:20 -04:00
ed eaba60f80b Updated build scripts to latest setup used with HandmadeHero repo 2023-10-24 01:40:21 -04:00
ed 912cc6b538 Bugfixes during hiatus
Found while doing some metaprogramming for day 42 of handmade hero.
2023-10-22 21:41:36 -04:00
ed 3dd5482a46 set ContinuationIndentWidth to 4 for clang format. 2023-10-01 20:19:16 -04:00
ed 632fa10027 Updated readme with partial hiatus notice. 2023-10-01 12:37:29 -04:00
ed 6498b13658 Fix for non-foreign include content not getting parsed correctly. 2023-10-01 12:16:15 -04:00
ed 7f562cd77f Merge branch 'dev' 2023-09-28 20:36:12 -04:00
ed 3a0e971ebf Bugfix for parse_variable, const check for prefix specifiers causing infinite loop. 2023-09-28 20:35:20 -04:00
edandGitHub 4997cb5878 Merge pull request #45 from Ed94/dev
Dev
2023-09-25 17:50:16 -04:00
ed 729c891cbd Last fixes before handmade hero hiatus 2023-09-25 17:48:16 -04:00
ed 754bcfb31e Fixes to get it back to where I was last at with the const specifier issue 2023-09-25 16:42:29 -04:00
ed a8708abf8b WIP : Various changes to project before small hiatus. (Broken)
I need to manually review these as the changes have various errors that are difficult to diagnose why.

I took a break to do handmade hero and now a bit rusty.
2023-09-25 12:12:11 -04:00
ed 4b48b96a79 WIP : better AST::debug_str()
Now its more contexually rich to the ast type, however I need to hookup tokens from parsing to the AST. There needs to be a way for the debug string to lookup the token and provide the contexual line.
Can either pass it ( TokArray* toks ) from the parser on failure (or `CodeFile`)..
Technically there is more than enough room for another Token* ptr. I could add another and specifiers would still have at minimum 14 slots before needing to extended to next specs.
**************... yeah
2023-09-12 02:32:44 -04:00
ed 9495fc2985 Updates to documentation 2023-09-11 18:34:37 -04:00
ed 378de73a7d Merge branch 'main' of https://github.com/Ed94/gencpp 2023-09-08 15:15:13 -04:00
ed 35ac0c1048 Fix compile-error for singleheader found with scanner's scan_file. 2023-09-08 15:14:43 -04:00
edandGitHub 2c893d5e35 Merge pull request #34 from Ed94/dev
Dev
2023-09-07 23:06:02 -04:00
ed 6ea40094ee More fixes from clang warnings. Parser::lex prep for changes
parse_static_assert now properly adds new-line to end of statement.

I'm going to end up making a static_assert ast... that or when the statement ast is made it will handle adding that newline.
2023-09-07 22:52:51 -04:00
ed 0a8d3bfc6a Added fixed arenas (just ergonomics) 2023-09-07 22:29:04 -04:00
ed 212b4e6d16 Fixes for compiling with clang
Clang just had better errors and caught stuff msvc did not.
2023-09-07 21:11:57 -04:00
ed d606c790ca Added a new AST member NextVar to be used for comma separated variable support.
Interface adding has been adjusted to use ParentType->Next.

Using the AST_Class->Next was bad since that breaks the linked list a body AST would have used for traversal.
2023-09-06 03:06:30 -04:00
ed 2bfbef1d0c strip_formatting : Remove code thats no longer needed.
Its everyting related to stripping a function body.
2023-09-06 02:09:26 -04:00
ed f1fb75cc1c Progress on strip_formatting function, support for multi-dimentional array variables and typenames.
strip_formatting suffers from some edge failure with what looks to be escaped character literals (not entirely sure).

I've decided to not remove formatting from unvalidated function bodies since I plan to support parsing its content properly.
However expression values for a statement will fail to have their formatting removed with this.

Since I don't plan to parse those anytime soon, I'll have to fix any edge cases for those at least..
2023-09-06 02:07:09 -04:00
ed 2200bcde9a Improved singleheader test
Need to make the debug_str provided by the AST type aware to provide as much contextual information as possible (finally got to this point with validation).

Singleheader test now directly calls clang-format to cleanup the reconstructed copy of the singleheader. Its needed to remove any sort of formatting discrepancies found by the parser since its sensistive to that for new-lines, etc.
2023-09-05 13:36:59 -04:00
ed 3e249d9bc5 Reorganization of parser, refactor of parse_type( bool* ) and progression of parser docs
Wanted to make parser implementation easier to sift through, so I emphasized alphabetical order more.

Since I couldn't just strip whitespace from typenames I decided to make the parse_type more aware of the typename's components if it was a function signature.
This ofc lead to the dark & damp hell that is parsing typenames.

Also made initial implementation to support parsing decltype within a typename signature..

The test failure for the singleheader is still a thing, these changes have not addressed that.
2023-09-05 01:48:11 -04:00
ed 3868e1e811 Added cursed typedef 2023-09-04 12:32:31 -04:00
ed 543427dfe5 Fixes to parsing for validation
Removed whitespace stripping from parse_type, prepped for doing some major changes for function signature typenames

Moved template argument parsing to its own helper function since its used in more the one spot.

Latest failure is due to stack overflow when validating parameters. (Shouldn't be hard to debug)
2023-09-03 23:36:51 -04:00
ed f2d4ec96f0 Dumb fix for name check on parameters
Its now spitting out actual validation failures.
2023-09-03 20:34:27 -04:00
ed 1076818250 Got whitepace stripping properly working (AFAICT) for parse_define()
Made debug for viewing whitespace in AST::is_equal with String::visualize_whitespace()

Format stripping code is currently confined within parse_define()

I plan to move it to its own function soon, I just want to make sure its finalized first.

Other unvalidated content will need to have an extra check for preprocessed lines.
Example: Function bodies can have a #define <identifier> <definition>. I cannot strip the last <new line> as it will break the semantic importance to distinguish that line.
So it needs to be:
<content before> <new line>
<preprocessed line> <new line>
<content after>

In the content string that is minimally preserved
2023-09-03 20:29:49 -04:00
ed c4c308c8ba Fixes for auxilary code + typo fix in ast.cpp
Needed the intellisense directive ifdef wrap.
2023-08-29 00:03:08 -04:00
ed a4d9a63d71 Updated single-header based on last cs and also docs 2023-08-28 23:52:44 -04:00
ed 0197afd543 Changed how editor intellisense directives are handled for compoenents and dependencies
Didn't like the way I was processing them in scan_file.
2023-08-28 23:46:50 -04:00
ed 7249a7317d Added space stripping during for content of various ASTs
* Typedef/Typename
* Function Names
* Pragmas
* Attributes
2023-08-26 11:55:05 -04:00
ed abf51e4aa9 Adjustment to AST::is_equal based on issues found with last CS.
Defined check_member_content, will spit out the strings if they aren't equivalent so the user can verify for themselves if its correct.
2023-08-25 18:57:53 -04:00
ed 9b6dc3cbd8 Work on AST::is_equal.
The NumEntries checks need to be deferred until the end as a final unresolved check on valdiation. As if there really is a discrepancy of entires it should be revealed by the specific entry failing.

Right now the latest failure with the single header check involves a define directive specifically the define does omit whitespace properly and so the check interprets the different cached content to be non-equivalent.

This will happen with all unvalidated aspects of the AST ( expressions, function bodies, etc )

There are two ways to resolve, either make an AST that can tokenize all items (not realistic), or I need to strip non-syntax important whitespace and then cache the string. This would mean removing everything but a single whitespace for all content within a content string. Otherwise, I would have to somehow make sure the content of the string has the exact formatting between both files for the definitions that matter.

AST types with this issue:
* Define Directive
* Pragma Directive
* Comment
* Execution
* Platform Attributes
* Untyped

Comments can technically be left unverified as they do not matter semantically.
When the serialization is first emitted, the content these strings should for the most part be equivalent. However I do see some possible failures for that if a different style of bracket placment is used (between the serialization).

At that point what I could do is just leave those unverified and just emit the content to the user as warning that the ast and the other compared could not be verified.

Those technically can be handled on a per-eye basis, and worst case the tests with the compiler will in the determine if any critical defintions are missing for the user.
2023-08-25 18:40:13 -04:00
ed 9edcbad907 Fixes to parsing marco content, progress on validation test (single-header) 2023-08-23 21:19:31 -04:00
ed a6766cf0b1 Singleheader validation test got through ast reconstruction, failed to validate the reconstructed AST. 2023-08-23 18:16:45 -04:00
ed 8635b0fd1b doc update for parampack typename 2023-08-23 13:18:32 -04:00
ed 30eec99628 Changes to include usage, starting to attempt singleheader automated verification 2023-08-23 13:17:22 -04:00
ed f9117a2353 Added zpl's ivrtual memory to dependencies (unused for now) 2023-08-23 11:07:43 -04:00
ed c81f4b34ee Cleanup and doc updates 2023-08-23 02:17:47 -04:00
ed c97762ac16 Added support for inline comments
Also now doing comment serialization on def_comment directly as parse_comment doesn't need it.

Essentially comment ast types serialize the same way s untyped and execution ASTs
2023-08-23 00:25:14 -04:00
ed 5e79e8ba65 Started to setup for codebase validation tests.
Fleshed out initial version of AST::is_equal( AST* )

Setup the test directory with initial files for each major validation test.
2023-08-22 16:01:50 -04:00
ed 49a2cd7b2c Uncomment formatting comments in build script (forgot to after completing fixes) 2023-08-22 02:17:28 -04:00
ed a6c6574390 More formatting fixes 2023-08-22 02:09:20 -04:00
ed c4846dad26 Formatting fixes 2023-08-22 01:51:59 -04:00
ed a61a28b778 Fixx to bitfield variables
Related to https://github.com/Ed94/gencpp/issues/25
2023-08-22 00:40:38 -04:00
ed d0c995893d Lower inital memory allocation amounts. (Lower latency iteration for running generator)
I need to change it so that they all use one big arena allocation for the initial. This can be done when the global allocator is changed to a growable arena.
2023-08-21 23:49:23 -04:00
ed a42e241afb Got rid of the temp compoonent files, they are now generated via bootstrapping.
This isn't the last step though everything in the main project directory that isn't md files needs to be generated only.
Can't do that till testing is robust enough...
2023-08-21 23:28:39 -04:00
ed 6d85dd8fe8 Update vcproj 2023-08-21 23:09:40 -04:00
ed db6e8b33eb got intellisense working for the most part...
VScode works withs some issues.
VS2022 fails.
10xEditor works fine.
JetBrains Rider fails due to it not supporting <push/pop>_macro pragmas
2023-08-21 23:07:03 -04:00
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 4a2ed6de4e another vs code automated edit... 2023-08-21 21:40:05 -04:00
ed 9f64760b7a Commenting out includes to diagnose... 2023-08-21 21:20:29 -04:00
ed 68f34e6fab gitignore update for vc140.pdb
will remove after I figure out how its going rogue.
2023-08-21 21:12:52 -04:00
ed 1f9bbddbb7 vs setting update 2023-08-21 21:12:25 -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 7d1c499e7b Build script improvements
Made sure devshell only loads up the msvc env once.
2023-08-20 22:39:46 -04:00
ed b3f0c2734f Merge remote-tracking branch 'origin/main' into dev 2023-08-20 18:04:51 -04:00
ed eaeb8acee4 Remove Some vcproj changes, removal of the rogue vc140.pdb 2023-08-20 18:04:35 -04:00
edandGitHub 12bf878cb3 Merge pull request #23 from Ed94/dev
dev pull - Build script updates and misc fixes
2023-08-20 17:55:35 -04:00
ed 52ae431ad6 Made clean script remove the gen dir now from test dir. 2023-08-20 15:51:51 -04:00
ed 05fa62eced Test building & generation fixed with altest scripts 2023-08-20 15:45:06 -04:00
ed 2f7836b191 Fixes to buildscript 2023-08-20 13:18:09 -04:00
ed f574a9ba9a Further improvements to build script
test is failing to complete properly, need to debug...
2023-08-20 13:02:50 -04:00