Dustin Spicuzza
34d7b4561b
Add easy to use preprocessor support via pcpp
...
- Fixes #60
2023-08-22 11:20:31 -04:00
Dustin Spicuzza
4febbe5d0d
Fix #line directives
2023-08-22 10:02:22 -04:00
Dustin Spicuzza
f597b691f7
Parse extra type information for conversion operators
...
- Fixes #57
2023-08-19 20:02:03 -04:00
Dustin Spicuzza
6ab0d00c2f
Merge pull request #56 from robotpy/remove-pp-and-handle-continuations
...
Remove pp and handle continuations
2023-08-19 19:45:25 -04:00
Dustin Spicuzza
bd9907ad79
Restructure preprocessor support
...
- Remove partial support for #define and other PP directives
- Allow pragma to span multiple lines
- Pragma now emits a list of tokens instead of a single string
- Ignore #warning directive if present
2023-08-19 19:42:05 -04:00
Dustin Spicuzza
b07e1f81a6
Discard line continuations
...
- Fixes #54
2023-07-23 17:02:32 -04:00
Tomaž Šuštar
3938d0ffef
fix #49 for anonymous unions ( #50 )
...
* fix #49 for anonymous unions
* fix formatting
* fix mypy and tests
* fix for structs
* fix formatting
2023-06-14 13:31:10 -04:00
Tomaž Šuštar
6461158422
bugfix #46 adding question mark to lexer
2023-03-22 16:15:48 +01:00
Dustin Spicuzza
2fe350bf35
Parse namespace alias and emit it
...
- Fixes #43
2023-03-17 01:24:23 -04:00
Dustin Spicuzza
1aa9e72ca1
Upgrade black to 2023.1
2023-03-16 18:45:34 -04:00
Dustin Spicuzza
e5295070a0
Add support for parsing user defined literals
2022-12-15 02:55:07 -05:00
Dustin Spicuzza
1eaa85ae8d
Split the lexer into PlyLexer and TokenStream components
...
- There are two types of token streams: file based, and list based
- I think this has better component separation
- Doxygen parsing is a bit weirder, but I think it's more straightforward to see all the pieces?
2022-12-15 02:38:44 -05:00
Dustin Spicuzza
2ba5c3c829
Support extracting doxygen comments when declspec or attributes are present
2022-12-15 01:49:49 -05:00
Dustin Spicuzza
079d643c67
Update PLY package to include version
2022-12-15 01:49:49 -05:00
Dustin Spicuzza
b54c807824
Remove unused lexer.filenames
2022-12-15 01:49:49 -05:00
Dustin Spicuzza
aee776072e
Grab string/character lexer constants from pycparser
2022-12-15 01:49:49 -05:00
Dustin Spicuzza
03c24a2074
Better lexer error handling
2022-12-15 01:49:49 -05:00
Dustin Spicuzza
b47eb7ce10
Use lex.TOKEN decorator for lexer tokens instead of docstrings
...
- Allows usage with -OO
2022-12-10 14:08:59 -05:00
Dustin Spicuzza
ace1d09d9d
Add throw/noexcept tests
2022-12-09 03:28:50 -05:00
Dustin Spicuzza
8a0568c0f5
Change balanced token handling to allow mismatched gt/lt tokens
...
- These can be used for math, so we just assume the code is doing that
2022-12-09 03:26:16 -05:00
Dustin Spicuzza
b08d8783d4
Remove unused pieces from coverage reporting
2022-12-09 01:29:59 -05:00
Dustin Spicuzza
ff645920b8
Capture doxygen comments for namespaces
2022-12-09 01:16:54 -05:00
Dustin Spicuzza
dc76328bd5
Add support for inline namespaces
2022-12-09 01:16:12 -05:00
Dustin Spicuzza
305312b095
Add ability to generate failure testcases
2022-12-09 01:10:39 -05:00
Dustin Spicuzza
919e35e45f
Correctly parse constructor implementations outside of a class
...
- Fixes #32
2022-12-08 02:00:05 -05:00
Dustin Spicuzza
15e4e0b879
Add support for parsing method implementations outside of a class
...
- Fixes #10
2022-12-08 01:26:16 -05:00
Dustin Spicuzza
ddad7cb6b1
Add support for parsing explicit template instantiation
2022-12-07 08:36:31 -05:00
Dustin Spicuzza
2192a92003
Adjust testcase generator to remove unneeded whitespace
2022-12-06 07:46:16 -05:00
Dustin Spicuzza
977fe133d0
Check codebase using mypy in github actions
2022-01-02 21:53:22 -05:00
Dustin Spicuzza
f29c1d5a30
mypy: address issues parsing const/volatile/*/& items
2022-01-02 21:52:36 -05:00
Dustin Spicuzza
83aa34d06e
mypy: functions should be a list of functions
2022-01-02 21:51:49 -05:00
Dustin Spicuzza
ce4124d5dd
mypy: add temporary variables to ease type checking
2022-01-02 21:51:19 -05:00
Dustin Spicuzza
b05b1b16c1
mypy: add assertions/logic to ensure that ClassScope/NamespaceScope are correct
2022-01-02 21:48:49 -05:00
Dustin Spicuzza
2eb13496fa
mypy: function return types marked as optional
...
Only methods can have optional return types, but it has to be applied to function
as well as method, otherwise mypy complains.
I considered making a special return type for constructors/destructors, but it
seemed to just make things too messy. Time will tell if this was the right
decision.
2022-01-02 21:45:06 -05:00
Dustin Spicuzza
36d23c37bd
mypy: add trivial annotations to functions that don't change logic
2022-01-02 21:41:34 -05:00
Dustin Spicuzza
9756025e2d
mypy: add None return types to functions that don't return a value
2022-01-02 21:30:41 -05:00
Dustin Spicuzza
cd6d4f23f3
parse errors should use standard filename:lineno prefix when possible
2021-12-17 00:22:21 -05:00
Dustin Spicuzza
5d564687c3
Add support for conversion operators
...
- Fixes #9
2021-11-29 22:56:43 -05:00
Dustin Spicuzza
92f8e72779
Support parsing MSVC calling conventions
...
- Fixes #5
- Fixes #33
2021-11-27 21:40:10 -05:00
Dustin Spicuzza
8d506e5700
Support __declspec (and other attributes) when parsing a name
...
- Sometimes this will lead to accepting invalid code, but "dont do that"
- Fixes #12
2021-11-26 10:03:26 -05:00
Dustin Spicuzza
3c5174b52f
Allow typedefs of function definitions
...
- Fixes #13
2021-11-26 01:11:50 -05:00
Dustin Spicuzza
b611b9189a
Allow using 'final' as a name in some contexts
...
- Strictly speaking, this fix will allow 'final' in some contexts where it isn't actually
allowed. However, cxxheaderparser "will not reject all invalid C++ headers!" so this is ok
- Fixes #14
2021-11-26 00:28:54 -05:00
Dustin Spicuzza
c7d480e8c3
Handle function pointer parameters where the return value is a reference
...
- Fixes #17
2021-11-26 00:11:36 -05:00
Michel Pelletier
83bb290379
allow single hyphen to represent stdin for filename.
2021-11-06 08:30:55 -07:00
Dustin Spicuzza
6435b47744
Support volatile keyword correctly
2021-08-16 16:07:13 -04:00
Dustin Spicuzza
3c51a30efe
Support using 'typename' qualifier before type names
...
- Fixes #7
2021-01-09 12:54:45 -05:00
Dustin Spicuzza
8c9f8fd8ba
Add support for C++17 trailing return types
2021-01-04 21:55:29 -05:00
Dustin Spicuzza
43431f3fe4
Use utf-8-sig to open files by default
2021-01-02 19:22:22 -05:00
Dustin Spicuzza
23b95f09f2
Make mypy happier
2021-01-01 15:49:43 -05:00
Dustin Spicuzza
1392fceeb5
Add documentation
2020-12-31 01:55:29 -05:00