Commit Graph

518 Commits

Author SHA1 Message Date
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
ed 9bd6dac783 Merge pull request #51 from Ed94/dev v0.16-Alpha 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.
v0.15-Alpha
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. v0.14-Alpha 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. v0.13-Alpha 2023-09-28 20:35:20 -04:00
ed 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 v0.12-Alpha 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 v0.11-Alpha 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
ed 2c893d5e35 Merge pull request #34 from Ed94/dev
Dev
v0.10-Alpha
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