diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-05-04 13:46:24 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-04 10:46:24 -0700 |
| commit | f59978893fed309ff19bacd787398c4bab4aa7c8 (patch) | |
| tree | ad28eb79ca5bab13770f035d551c77ac67aa5756 /source/slang | |
| parent | 5d3a737e75346b6ced204829a60be2837589e9ad (diff) | |
C++ Extractor (#1337)
* WIP: Doing texing using slangs lexer for cpp-extractor
* Node tree for C++ extraction.
* Bug fixing.
Add dump of hierarchy.
* First pass at extracting fields.
* Parse template types.
* Use diagnostics defs for C++ extractor.
* Simplify Diagnostic Defs.
* Remove the brace stack.
* Added IdentifierLookup.
* Add handling for >> style template close.
* Improved identifier handling/keywords.
* Added ability to check if reader is at cursor position.
* Handling of an unspecified root type.
* Parsing code comments.
Tidy up some parsing - to use advanceIf functions more.
* Improve path handling.
* Fixes around changes to Path interface.
* Working Range, Type and Scope header.
* Extract the middle part of marker and put in output. Gives more flexibility at macro injection, and in class definitions.
* Split DERIVED types into it's own macro, to provide way to generate for derived types.
* Fix clang/g++ compile issue.
* Tabs -> spaces.
* Fix small bug in getFileNameWithoutExt
* Small improvement around naming.
Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-diagnostics.cpp | 9 | ||||
| -rw-r--r-- | source/slang/slang-diagnostics.h | 2 | ||||
| -rw-r--r-- | source/slang/slang-lexer.h | 4 | ||||
| -rw-r--r-- | source/slang/slang-options.cpp | 2 | ||||
| -rw-r--r-- | source/slang/slang-profile.cpp | 9 | ||||
| -rw-r--r-- | source/slang/slang-profile.h | 5 | ||||
| -rw-r--r-- | source/slang/slang-state-serialize.cpp | 4 |
7 files changed, 21 insertions, 14 deletions
diff --git a/source/slang/slang-diagnostics.cpp b/source/slang/slang-diagnostics.cpp index 99cae490e..bb8b63540 100644 --- a/source/slang/slang-diagnostics.cpp +++ b/source/slang/slang-diagnostics.cpp @@ -124,15 +124,6 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) } } -void printDiagnosticArg(StringBuilder& sb, Stage val) -{ - sb << getStageName(val); -} - -void printDiagnosticArg(StringBuilder& sb, ProfileVersion val) -{ - sb << Profile(val).getName(); -} SourceLoc const& getDiagnosticPos(SyntaxNode const* syntax) diff --git a/source/slang/slang-diagnostics.h b/source/slang/slang-diagnostics.h index 385a40167..8ab860708 100644 --- a/source/slang/slang-diagnostics.h +++ b/source/slang/slang-diagnostics.h @@ -99,8 +99,6 @@ namespace Slang void printDiagnosticArg(StringBuilder& sb, TokenType tokenType); void printDiagnosticArg(StringBuilder& sb, Token const& token); void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val); - void printDiagnosticArg(StringBuilder& sb, Stage val); - void printDiagnosticArg(StringBuilder& sb, ProfileVersion val); void printDiagnosticArg(StringBuilder& sb, Val* val); template<typename T> diff --git a/source/slang/slang-lexer.h b/source/slang/slang-lexer.h index d1a1ba844..d404296ff 100644 --- a/source/slang/slang-lexer.h +++ b/source/slang/slang-lexer.h @@ -69,6 +69,10 @@ namespace Slang m_cursor = cursor.tokenReaderCursor; m_nextToken = cursor.nextToken; } + bool isAtCursor(const ParsingCursor& cursor) const + { + return cursor.tokenReaderCursor == m_cursor; + } bool isAtEnd() const { return m_cursor == m_end; } Token& peekToken(); TokenType peekTokenType() const; diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp index 92ae637b1..c642c196a 100644 --- a/source/slang/slang-options.cpp +++ b/source/slang/slang-options.cpp @@ -341,7 +341,7 @@ struct OptionsParser void addOutputPath(char const* inPath) { String path = String(inPath); - String ext = Path::getFileExt(path); + String ext = Path::getPathExt(path); if (ext == "slang-module" || ext == "slang-lib") { diff --git a/source/slang/slang-profile.cpp b/source/slang/slang-profile.cpp index 204b467f9..e5ce6fde3 100644 --- a/source/slang/slang-profile.cpp +++ b/source/slang/slang-profile.cpp @@ -29,6 +29,15 @@ const char* getStageName(Stage stage) } +void printDiagnosticArg(StringBuilder& sb, Stage val) +{ + sb << getStageName(val); +} + +void printDiagnosticArg(StringBuilder& sb, ProfileVersion val) +{ + sb << Profile(val).getName(); +} } diff --git a/source/slang/slang-profile.h b/source/slang/slang-profile.h index 1ae752d5a..c90ca66d0 100644 --- a/source/slang/slang-profile.h +++ b/source/slang/slang-profile.h @@ -41,6 +41,9 @@ namespace Slang #include "slang-profile-defs.h" }; + + void printDiagnosticArg(StringBuilder& sb, ProfileVersion val); + enum class Stage : SlangStage { Unknown = SLANG_STAGE_NONE, @@ -51,6 +54,8 @@ namespace Slang const char* getStageName(Stage stage); + void printDiagnosticArg(StringBuilder& sb, Stage val); + ProfileFamily getProfileFamily(ProfileVersion version); struct Profile diff --git a/source/slang/slang-state-serialize.cpp b/source/slang/slang-state-serialize.cpp index 9122b80fd..abdaae7c6 100644 --- a/source/slang/slang-state-serialize.cpp +++ b/source/slang/slang-state-serialize.cpp @@ -571,7 +571,7 @@ static bool _isStorable(const PathInfo::Type type) } String filename = Path::getFileNameWithoutExt(path); - String ext = Path::getFileExt(path); + String ext = Path::getPathExt(path); StringBuilder uniqueName; for (Index j = 0; j < 0x10000; j++) @@ -1121,7 +1121,7 @@ struct LoadContext String parentDir = Path::getParentDirectory(absPath); String baseName = Path::getFileNameWithoutExt(filename); - String ext = Path::getFileExt(filename); + String ext = Path::getPathExt(filename); if (ext.getLength() == 0) { |
