Amaan Qureshi
c75868f8b5
feat: C23
3年前
Amaan Qureshi
bb4ab38847
feat: allow type_qualifiers after typedef specifier, alias char content
3年前
antoinemadec
7f678a26bb
Add else_clause
3年前
TJ DeVries
6b85e8478b
fix: Add compound statement to call expression
5年前
Christian Clason
6adee19458
feat: allow identifiers in string concatenations ( #145 )
* feat: allow identifiers in string concatenations
Resolves errors in strings of the form:
("failed in line %" PRIdLINENR)
---------
Co-authored-by: Lewis Russell <lewis6991@gmail.com>
3年前
Benjamin Brownlee
693d298099
feat: add gnu inline asm syntax ( #140 )
3年前
Benjamin Brownlee
bb74560cd4
fix: allow preproc define without value to preceed a line with whitespace at start
3年前
Amaan Qureshi
5b5367c4b8
feat: add underlying types in enums, allow bitfield clauses in repeated field declarators
3年前
Jason Brown
e1359a0a54
Adding support for offsetof
3年前
Amaan Qureshi
20fee37fd0
feat: add _Generic expressions and missing type qualifiers
_Generic is a C11 feature, __restrict__ and _Noreturn were added to type_qualifiers
3年前
Amaan Qureshi
c0b1db960d
feat: add and apply eslint formatting
3年前
Amaan Qureshi
b906e05ba4
docs: document grammar.js
3年前
Amaan Qureshi
16456ce9a1
fix: comments can have multiple delimiting backslashes
3年前
Amaan Qureshi
d4a789bf07
feat: support omitting consequences in conditional expressions
It's allowed in gcc and clang
3年前
Jade Lovelace
93135e2eb5
fix: implement Unicode identifiers
According to cppreference, identifiers are `(XID_Start | '_')
XID_Continue*`, which is the case as of C++23 and C2x. I have confirmed
this myself with the drafts of C++23 and C2x.
https://en.cppreference.com/w/cpp/language/identifiers
Clang indeed implements identifiers as `(XID_Start | '_') XID_Continue*`
in C++ mode and C2x mode, with a slight extension to the character set
to include some extra math characters:
231992d9b8/clang/lib/Lex/Lexer.cpp (L1517-L1530)
3年前
Ismail A Bella
94bc261b1a
fix: allow multiple expressions inside for_statement condition
4年前
John Drouhard
179b70c6be
Attributes: simplify attributed_statement by making it a valid type of non-case statement
This also lets it bind to _any_ statement, which is necessary for some
c++ attributes that can attach to the statement in if, while, and
do/while statements.
4年前
Ben Dunkin
517bf92b2c
add the body label to for loops to make it the same as other loops ( #110 )
4年前
John Drouhard
f71e80b9f2
Extract "..." into a named node called variadic_parameter. Fixes #73
4年前
jdrouhard
9bee34500c
Support attribute statements under case statements ( #83 )
4年前
John Drouhard
0aeed5578a
Fix indent-level whitespace
4年前
John Drouhard
b50e693547
Separate _declaration_modifiers from _declaration_specifiers to make it overridable in the cpp grammar
4年前
John Drouhard
0b714a5134
rename attribute_definition to attribute_declaration
4年前
jdrouhard
8fc135a72b
Add support for C23 attributes ( #81 )
* Add support for C23 attributes
https://en.cppreference.com/w/c/language/attributes
* Use wrapper for statements with attributes to reduce state machine size
* Missed a couple _declarators that needed attributes directly after
* Use annotated_declarator for declarators that have attributes immediately following them
* Give field and type declarators the same attribute treatment
4年前
berchn
008008e30a
Add operator field to field_expression ( #69 )
5年前
berchn
25fb87ce98
Add operation field to assignment_expression ( #68 )
5年前
Mathieu Nayrolles
88592f162e
Add support for Microsoft-specific modifiers ( #40 )
* Add support for Microsoft-specific modifiers
Microsoft-specific modifiers are keywords can be used to modify declarators to form derived types.
The specification for the modifiers themselves is here:
https://docs.microsoft.com/en-us/cpp/cpp/microsoft-specific-modifiers?view=vs-2019
* 0.16.1
6年前
calixteman
6002fcd5e8
Add a rule for left part of assignment: it'll be helpful to add scope… ( #37 )
* Add a rule for left part of assignment: it'll be helpful to add scoped_name_identifier (c++)
* Inline the assignment_left_expression rule
6年前
calixteman
c455818961
#include can be followed by a macro name or a macro call ( #38 )
* #include can be followed by a macro name or a macro call
* In preproc_include, use preproc_call_expression
6年前
Max Brunsfeld
b6ff8fbdaf
Handle line continuations with CRLF endings
6年前
calixteman
362c031880
Parse expressions in preprocessor #if statement ( #29 )
* Parse expressions in preprocessor #if statement
* Make preproc_expression look like a normal expression
* Hide the wrapper rules
* Alias the rulres to match their corresponding expression rule
* Handle line continuations as extra tokens
6年前
calixteman
2ed529f075
Add u|U|u8 string|char support ( #36 )
6年前
Max Brunsfeld
627806ec6a
Allow case statements separate from switch statements
Fixes #32
6年前
Max Brunsfeld
916be99704
Allow comma operator in return statement
Fixes #31
6年前
calixteman
c578638af2
Fix multi-statements in for initializer and update parts ( #27 )
* Fix multi-statements in for initializer and update parts
* Finally the bug was only in the initializer part
7年前
calixteman
c8061429cc
Fix error with ++L (consequence of support for L strings) ( #26 )
* Fix error with ++L (consequence of support for L strings)
* Update to tree-sitter 0.15.5
7年前
Max Brunsfeld
e0512072cc
Handle comments with escaped CRLF line endings
Fixes #24
7年前
Max Brunsfeld
0bc1adf0c2
Tweak fields
7年前
Max Brunsfeld
c3965938cc
Add node fields, update tree-sitter-cli
7年前
calixteman
ff4fc1c785
Handle L-strings and L-chars ( #25 )
7年前
calixteman
2945de0173
Fix precedences of * (deref) and & (address-of) ( #21 )
7年前
calixteman
adf868ce9a
Fix parenthesized expression on left side of assignment ( #22 )
7年前
calixteman
fb9fbd83f0
Handle __attribute__ in function declaration ( #19 )
* Handle __attribute__ in function declaration
* Fix tests in examples/
* Remove useless optional
7年前
Calixte Denizet
338f99e8a0
Fix comment containing backslash
7年前
Max Brunsfeld
42382f29bf
Restrict expressions that can appear as lhs in assignment
7年前
Max Brunsfeld
fd42e75886
Flesh out number literal parsing
Fixes atom/language-c#323
7年前
Max Brunsfeld
175d93b439
Handle postfix type qualifiers in compound literals
Fixes atom/language-c#312
7年前
Max Brunsfeld
95b5710ff9
Allow number literals with 'f' suffix and digit separators
Fixes tree-sitter/tree-sitter-cpp#24
Fixes tree-sitter/tree-sitter-cpp#34
7年前
Max Brunsfeld
5a25ac2983
Allow multiple names to be defined in a typedef statement
Fixes tree-sitter/tree-sitter-cpp#30
7年前
Max Brunsfeld
50c3a02bc7
Allow preprocessor directives in field decl lists
Fixes tree-sitter/tree-sitter-cpp#29
7年前