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
pirms 7 gadiem
Max Brunsfeld
5a25ac2983
Allow multiple names to be defined in a typedef statement
Fixes tree-sitter/tree-sitter-cpp#30
pirms 7 gadiem
Max Brunsfeld
50c3a02bc7
Allow preprocessor directives in field decl lists
Fixes tree-sitter/tree-sitter-cpp#29
pirms 7 gadiem
Max Brunsfeld
1358e07759
Allow escaped newlines in single-line comments
Fixes tree-sitter/tree-sitter-cpp#26
pirms 7 gadiem
Max Brunsfeld
5b250e138a
Remove distinction between top-level and statement block items
pirms 7 gadiem
Max Brunsfeld
a71bef804d
Fix inefficient string tokenization
pirms 7 gadiem
Max Brunsfeld
7f827b42a8
Add explicit nodes for bitfield clauses
pirms 7 gadiem
Max Brunsfeld
ce980349b2
Fix preprocessor argument parsing with CRLF line endings
Fixes #11
pirms 7 gadiem
Max Brunsfeld
176fd5f077
Add signed keyword
Fixes #10
pirms 7 gadiem
Max Brunsfeld
2af332790e
Make case statements contain all subsequent statements until the next case
pirms 7 gadiem
Max Brunsfeld
6cbb20b681
Allow any sort of statement at the top level, not just calls
This way, we can parse snippets of C, like expressions, in the
case where C code is injected into a larger document.
pirms 7 gadiem
Max Brunsfeld
ed56d5e288
Fix array declarator parsing
Refs https://github.com/atom/atom/issues/18346#issuecomment-433734281
pirms 7 gadiem
Max Brunsfeld
6744ae08ea
Parse top-level macro invocations
Fixes atom/atom#18346
pirms 7 gadiem
Max Brunsfeld
5b5300388e
Add low dynamic precedence on macro_type_specifier
pirms 7 gadiem
Max Brunsfeld
07cafeac95
Use dynamic precedence to distinguish pointer declarators from multiplication
pirms 8 gadiem
Max Brunsfeld
9e8ac821e4
Don't allow whitespace inside of string literals
pirms 8 gadiem
Max Brunsfeld
067d3f9681
Use parenthesized_expression in if, while, do statements
pirms 8 gadiem
Max Brunsfeld
288d6b2b1c
Use immediate tokens for preprocessor functions
pirms 8 gadiem
Max Brunsfeld
df769721cb
Parse escape sequences
pirms 8 gadiem
Max Brunsfeld
f8cab65c3a
Allow type qualifier lists in pointer declarators
Fixes tree-sitter/tree-sitter-cpp#7
pirms 8 gadiem
Max Brunsfeld
3a185d00e2
Add explicit word token
Refs https://github.com/tree-sitter/tree-sitter/pull/176
pirms 8 gadiem
Max Brunsfeld
9e21e17371
Allow preprocessor conditionals inside of field declaration lists
Co-Authored-By: Thomas Johansen <thomasjo@gmail.com>
pirms 8 gadiem
Max Brunsfeld
cc0dff55a0
Don't allow newlines in system lib strings
pirms 8 gadiem
Max Brunsfeld
95b1b4315e
Add _Atomic and restrict type qualifiers
pirms 8 gadiem
Max Brunsfeld
e8b6879820
Use repeat in initializer lists
pirms 8 gadiem
Max Brunsfeld
0c38b9f8c9
Handle identifier starting with 'false', 'true', etc
pirms 8 gadiem
Max Brunsfeld
a76daa432c
Fix parsing of char16_t, char32_t
pirms 8 gadiem
Max Brunsfeld
3a97441df7
Require a line break after an unknown preprocessor directive
pirms 8 gadiem
Max Brunsfeld
e6c28cafb3
Avoid relying on old, non-standard tree-sitter regex feature
pirms 8 gadiem
Max Brunsfeld
db8d3af84f
Add #elifs inside of #ifdefs
Signed-off-by: Nathan Sobo <nathan@github.com>
pirms 8 gadiem
Max Brunsfeld
065bee2c23
Add preprocessor elif clauses
Signed-off-by: Nathan Sobo <nathan@github.com>
pirms 8 gadiem
Max Brunsfeld
fcb4537288
Fix regex for unknown preprocessor directives
Signed-off-by: Nathan Sobo <nathan@github.com>
pirms 8 gadiem
Max Brunsfeld
1e1f7c9cf8
Parse typedef names as type_identifiers
pirms 8 gadiem
Max Brunsfeld
060b072223
Fix interpretation of 'unsigned' et al as standalone types
pirms 8 gadiem
Max Brunsfeld
82b62611b6
Differentiate primitive types from other type names
pirms 8 gadiem
Max Brunsfeld
d80749fc3f
Boost the dynamic precedence of parameter lists (mostly for C++)
pirms 8 gadiem
Max Brunsfeld
c4ed85b79b
Call inline a storage class specifier like static
pirms 8 gadiem
Max Brunsfeld
31c966ece2
Handle multi-line comments with asterisks at the end
pirms 8 gadiem
Max Brunsfeld
f433b2bf8a
Tweak identifier naming convention
pirms 9 gadiem
Max Brunsfeld
809cd89afe
Use new alias API
pirms 9 gadiem
Max Brunsfeld
6147b5ecca
Rename label_name -> label, extract rules for identifier renames
pirms 9 gadiem
Max Brunsfeld
b8509fdf21
Function calls have higher precedence than unary operators
pirms 9 gadiem
Max Brunsfeld
7775b575e6
Differentiate between top-level items and those that appear in statement blocks
pirms 9 gadiem
Max Brunsfeld
66003e2afc
Rename type_clause -> type_descriptor and pull out the parens
pirms 9 gadiem
Max Brunsfeld
9e7706d922
Distinguish variables, types, fields and labels using renames
pirms 9 gadiem
Max Brunsfeld
debe919f84
Allow whitespace after the # in preprocessor directives
pirms 9 gadiem
Max Brunsfeld
d9c324ffce
Don't try to parse #if conditions as C expressions
Doing this required treating the newline that follows these conditions as significant
in order to avoid conflicts, but this caused problems for error recovery.
pirms 9 gadiem
Max Brunsfeld
eb82660b87
Generalize the ordering of type and declaration specifiers
pirms 9 gadiem
Max Brunsfeld
3f65e85781
Reuse declaration_specifiers rule in more places
pirms 9 gadiem
Max Brunsfeld
ab0162ce37
Make member_declaration_list its own rule
pirms 9 gadiem