diff options
author | Vitaly Cheptsov <4348897+vit9696@users.noreply.github.com> | 2021-08-31 16:05:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 06:05:01 -0700 |
commit | b1dbdc5e21346de0fec7fbb814dedbe1585bcfec (patch) | |
tree | f39a2416a742dcbf4193b96e7f8aa10c38d2618e /pycparser/c_lexer.py | |
parent | 302855a6f30bdec33614a145f1dbe031316f351a (diff) | |
download | pycparser-b1dbdc5e21346de0fec7fbb814dedbe1585bcfec.tar.gz |
Introduce partial C11 support (#429)
* Introduce partial C11 support
Implemented _Noreturn, _Static_assert, _Thread_local. Also fixed
tests with preprocessor on macOS.
* Add more tests
Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
Diffstat (limited to 'pycparser/c_lexer.py')
-rw-r--r-- | pycparser/c_lexer.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py index 045d24e..96c4aa7 100644 --- a/pycparser/c_lexer.py +++ b/pycparser/c_lexer.py @@ -100,7 +100,7 @@ class CLexer(object): ## Reserved keywords ## keywords = ( - '_BOOL', '_COMPLEX', 'AUTO', 'BREAK', 'CASE', 'CHAR', 'CONST', + 'AUTO', 'BREAK', 'CASE', 'CHAR', 'CONST', 'CONTINUE', 'DEFAULT', 'DO', 'DOUBLE', 'ELSE', 'ENUM', 'EXTERN', 'FLOAT', 'FOR', 'GOTO', 'IF', 'INLINE', 'INT', 'LONG', 'REGISTER', 'OFFSETOF', @@ -109,19 +109,23 @@ class CLexer(object): 'VOLATILE', 'WHILE', '__INT128', ) + keywords_new = ( + '_BOOL', '_COMPLEX', + '_NORETURN', '_THREAD_LOCAL', '_STATIC_ASSERT' + ) + keyword_map = {} + for keyword in keywords: - if keyword == '_BOOL': - keyword_map['_Bool'] = keyword - elif keyword == '_COMPLEX': - keyword_map['_Complex'] = keyword - else: keyword_map[keyword.lower()] = keyword + for keyword in keywords_new: + keyword_map[keyword[:2].upper() + keyword[2:].lower()] = keyword + ## ## All the tokens recognized by the lexer ## - tokens = keywords + ( + tokens = keywords + keywords_new + ( # Identifiers 'ID', |