Skip to main content

Crate treesitter_types_c

Crate treesitter_types_c 

Source
Expand description

Strongly-typed AST types for C, auto-generated from tree-sitter-c’s node-types.json.

This crate is generated by treesitter-types and is automatically kept up to date when a new version of the grammar crate is released.

These types have been tested by parsing the Git source code.

See the Tree-sitter project for more information about the underlying parser framework.

§Example

use treesitter_types_c::*;

// A minimal C hello-world program.
let src = b"\
#include <stdio.h>

int main() {
    printf(\"Hello, World!\\n\");
    return 0;
}
";

// Parse the source with tree-sitter and convert into typed AST.
let mut parser = tree_sitter::Parser::new();
parser.set_language(&tree_sitter_c::LANGUAGE.into()).unwrap();
let tree = parser.parse(src, None).unwrap();
let tu = TranslationUnit::from_node(tree.root_node(), src).unwrap();

// The translation unit has two top-level children.
assert_eq!(tu.children.len(), 2);

// 1) The #include directive.
let TranslationUnitChildren::PreprocInclude(include) = &tu.children[0] else {
    panic!("expected a preproc include");
};
assert_eq!(include.span.start.row, 0);

// 2) The `main` function definition with return type `int`.
let TranslationUnitChildren::FunctionDefinition(func) = &tu.children[1] else {
    panic!("expected a function definition");
};
let TypeSpecifier::PrimitiveType(return_type) = &func.r#type else {
    panic!("expected a primitive type");
};
assert_eq!(return_type.text(), "int");

// The declarator holds the function name and parameter list.
let Declarator::FunctionDeclarator(decl) = &func.declarator else {
    panic!("expected a function declarator");
};
assert!(decl.parameters.children.is_empty()); // no parameters

Re-exports§

pub use tree_sitter_c;
pub use treesitter_types::tree_sitter;

Structs§

AbstractArrayDeclarator
AbstractFunctionDeclarator
AbstractParenthesizedDeclarator
AbstractPointerDeclarator
AlignasQualifier
AlignofExpression
ArgumentList
ArrayDeclarator
AssignmentExpression
Attribute
AttributeDeclaration
AttributeSpecifier
AttributedDeclarator
AttributedStatement
BinaryExpression
BitfieldClause
BreakStatement
CallExpression
CaseStatement
CastExpression
CharLiteral
Character
CommaExpression
Comment
CompoundLiteralExpression
CompoundStatement
ConcatenatedString
ConditionalExpression
ContinueStatement
Declaration
DeclarationList
DoStatement
ElseClause
EnumSpecifier
Enumerator
EnumeratorList
EscapeSequence
ExpressionStatement
ExtensionExpression
False
FieldDeclaration
FieldDeclarationList
FieldDesignator
FieldExpression
FieldIdentifier
ForStatement
FunctionDeclarator
FunctionDefinition
GenericExpression
GnuAsmClobberList
GnuAsmExpression
GnuAsmGotoList
GnuAsmInputOperand
GnuAsmInputOperandList
GnuAsmOutputOperand
GnuAsmOutputOperandList
GnuAsmQualifier
GotoStatement
Identifier
IfStatement
InitDeclarator
InitializerList
InitializerPair
LabeledStatement
LinkageSpecification
MacroTypeSpecifier
MsBasedModifier
MsCallModifier
MsDeclspecModifier
MsPointerModifier
MsRestrictModifier
MsSignedPtrModifier
MsUnalignedPtrModifier
MsUnsignedPtrModifier
Null
NumberLiteral
OffsetofExpression
ParameterDeclaration
ParameterList
ParenthesizedDeclarator
ParenthesizedExpression
PointerDeclarator
PointerExpression
PreprocArg
PreprocCall
PreprocDef
PreprocDefined
PreprocDirective
PreprocElif
PreprocElifdef
PreprocElse
PreprocFunctionDef
PreprocIf
PreprocIfdef
PreprocInclude
PreprocParams
PrimitiveType
ReturnStatement
SehExceptClause
SehFinallyClause
SehLeaveStatement
SehTryStatement
SizedTypeSpecifier
SizeofExpression
Span
StatementIdentifier
StorageClassSpecifier
StringContent
StringLiteral
StructSpecifier
SubscriptDesignator
SubscriptExpression
SubscriptRangeDesignator
SwitchStatement
SystemLibString
TranslationUnit
True
TypeDefinition
TypeDescriptor
TypeIdentifier
TypeQualifier
UnaryExpression
UnionSpecifier
UpdateExpression
VariadicParameter
WhileStatement

Enums§

AbstractArrayDeclaratorSize
AbstractDeclarator
AbstractParenthesizedDeclaratorChildren
AbstractPointerDeclaratorChildren
AlignasQualifierChildren
AnyNode
ArgumentListChildren
ArrayDeclaratorDeclarator
ArrayDeclaratorSize
AssignmentExpressionLeft
AssignmentExpressionOperator
AttributedDeclaratorChildren
AttributedStatementChildren
BinaryExpressionLeft
BinaryExpressionOperator
BinaryExpressionRight
CaseStatementChildren
CharLiteralChildren
CommaExpressionRight
CompoundStatementChildren
ConcatenatedStringChildren
ConditionalExpressionConsequence
DeclarationChildren
DeclarationDeclarator
DeclarationListChildren
Declarator
EnumeratorListChildren
Expression
ExpressionStatementChildren
FieldDeclarationChildren
FieldDeclarationListChildren
FieldDeclarator
FieldExpressionOperator
ForStatementCondition
ForStatementInitializer
ForStatementUpdate
FunctionDeclaratorChildren
FunctionDeclaratorDeclarator
FunctionDefinitionChildren
GenericExpressionChildren
GnuAsmClobberListRegister
GnuAsmExpressionAssemblyCode
InitDeclaratorValue
InitializerListChildren
InitializerPairDesignator
InitializerPairValue
LabeledStatementChildren
LinkageSpecificationBody
MsPointerModifierChildren
ParameterDeclarationChildren
ParameterDeclarationDeclarator
ParameterListChildren
ParenthesizedDeclaratorChildren
ParenthesizedExpressionChildren
ParseError
PointerDeclaratorChildren
PointerDeclaratorDeclarator
PointerExpressionOperator
PreprocElifAlternative
PreprocElifChildren
PreprocElifCondition
PreprocElifdefAlternative
PreprocElifdefChildren
PreprocElseChildren
PreprocIfAlternative
PreprocIfChildren
PreprocIfCondition
PreprocIfdefAlternative
PreprocIfdefChildren
PreprocIncludePath
ReturnStatementChildren
SehTryStatementChildren
SizedTypeSpecifierType
Statement
StringLiteralChildren
StructSpecifierChildren
TranslationUnitChildren
TypeDeclarator
TypeDefinitionChildren
TypeSpecifier
UnaryExpressionArgument
UnaryExpressionOperator
UnionSpecifierChildren
UpdateExpressionOperator

Traits§

FromNode
Every generated struct and enum implements this.
LeafNode
Implemented by every generated leaf type (identifiers, literals, etc.)
Spanned
Implemented by every generated type that has a source location.