Documentation
¶
Overview ¶
Package cc is a C99 compiler front end.
Changelog ¶
2018-07-01 This package is no longer maintained. Please see the v2 version at
https://github.com/cznic/cc/v2
Index ¶
- Constants
- func HostConfig(opts ...string) (predefined string, includePaths, sysIncludePaths []string, err error)
- func HostCppConfig(cpp string, opts ...string) (predefined string, includePaths, sysIncludePaths []string, err error)
- func ImportPath() (string, error)
- func IsArithmeticType(t Type) bool
- func IsIntType(t Type) bool
- func PrettyString(v interface{}) string
- func TokSrc(t xc.Token) string
- type AbstractDeclarator
- type AbstractDeclaratorOpt
- type ArgumentExpressionList
- type ArgumentExpressionListOpt
- type AssemblerInstructions
- type AssemblerOperand
- type AssemblerOperands
- type AssemblerStatement
- type AssemblerSymbolicNameOpt
- type BasicAssemblerStatement
- type Binding
- type Bindings
- type BlockItem
- type BlockItemList
- type BlockItemListOpt
- type Clobbers
- type CommaOpt
- type CompoundStatement
- type ComputedGotoID
- type ConstantExpression
- type ControlLine
- type Declaration
- type DeclarationList
- type DeclarationListOpt
- type DeclarationSpecifiers
- func (n *DeclarationSpecifiers) IsAuto() bool
- func (n *DeclarationSpecifiers) IsConst() bool
- func (n *DeclarationSpecifiers) IsExtern() bool
- func (n *DeclarationSpecifiers) IsInline() bool
- func (n *DeclarationSpecifiers) IsRegister() bool
- func (n *DeclarationSpecifiers) IsRestrict() bool
- func (n *DeclarationSpecifiers) IsStatic() bool
- func (n *DeclarationSpecifiers) IsTypedef() bool
- func (n *DeclarationSpecifiers) IsVolatile() bool
- func (n *DeclarationSpecifiers) Pos() token.Pos
- func (n *DeclarationSpecifiers) String() string
- func (n *DeclarationSpecifiers) TypedefName() int
- type DeclarationSpecifiersOpt
- type Declarator
- type DeclaratorOpt
- type Designation
- type DesignationOpt
- type Designator
- type DesignatorList
- type DirectAbstractDeclarator
- type DirectAbstractDeclaratorOpt
- type DirectDeclarator
- type ElifGroup
- type ElifGroupList
- type ElifGroupListOpt
- type ElseGroup
- type ElseGroupOpt
- type EndifLine
- type EnumConstant
- type EnumSpecifier
- type EnumerationConstant
- type Enumerator
- type EnumeratorList
- type Expression
- type ExpressionList
- type ExpressionListOpt
- type ExpressionOpt
- type ExpressionStatement
- type ExternalDeclaration
- type FunctionBody
- type FunctionDefinition
- type FunctionSpecifier
- type GroupList
- type GroupListOpt
- type IdentifierList
- type IdentifierListOpt
- type IdentifierOpt
- type IfGroup
- type IfSection
- type InitDeclarator
- type InitDeclaratorList
- type InitDeclaratorListOpt
- type Initializer
- type InitializerList
- type IterationStatement
- type JumpStatement
- type Kind
- type LabeledStatement
- type Linkage
- type LongStringLitID
- type Macro
- type Member
- type Model
- type ModelItem
- type Namespace
- type Node
- type Opt
- func AllowCompatibleTypedefRedefinitions() Opt
- func Cpp(f func([]xc.Token)) Opt
- func CrashOnError() Opt
- func EnableAlignOf() Opt
- func EnableAlternateKeywords() Opt
- func EnableAnonymousStructFields() Opt
- func EnableAsm() Opt
- func EnableBuiltinClassifyType() Opt
- func EnableBuiltinConstantP() Opt
- func EnableComputedGotos() Opt
- func EnableDefineOmitCommaBeforeDDD() Opt
- func EnableDlrInIdentifiers() Opt
- func EnableEmptyDeclarations() Opt
- func EnableEmptyDefine() Opt
- func EnableEmptyStructs() Opt
- func EnableImaginarySuffix() Opt
- func EnableImplicitFuncDef() Opt
- func EnableImplicitIntType() Opt
- func EnableIncludeNext() Opt
- func EnableLegacyDesignators() Opt
- func EnableNonConstStaticInitExpressions() Opt
- func EnableNoreturn() Opt
- func EnableOmitConditionalOperand() Opt
- func EnableOmitFuncArgTypes() Opt
- func EnableOmitFuncRetType() Opt
- func EnableParenthesizedCompoundStatemen() Opt
- func EnableStaticAssert() Opt
- func EnableTypeOf() Opt
- func EnableUndefExtraTokens() Opt
- func EnableUnsignedEnums() Opt
- func EnableWideBitFieldTypes() Opt
- func EnableWideEnumValues() Opt
- func ErrLimit(n int) Opt
- func IncludePaths(paths []string) Opt
- func KeepComments() Opt
- func Mode99c() Opt
- func SysIncludePaths(paths []string) Opt
- func Trigraphs() Opt
- func YyDebug(n int) Opt
- type PPTokenList
- type Parameter
- type ParameterDeclaration
- type ParameterList
- type ParameterTypeList
- type ParameterTypeListOpt
- type Pointer
- type PointerOpt
- type PreprocessingFile
- type Scope
- type SelectionStatement
- type Specifier
- type SpecifierQualifierList
- func (n *SpecifierQualifierList) IsAuto() bool
- func (n *SpecifierQualifierList) IsConst() bool
- func (n *SpecifierQualifierList) IsExtern() bool
- func (n *SpecifierQualifierList) IsInline() bool
- func (n *SpecifierQualifierList) IsRegister() bool
- func (n *SpecifierQualifierList) IsRestrict() bool
- func (n *SpecifierQualifierList) IsStatic() bool
- func (n *SpecifierQualifierList) IsTypedef() bool
- func (n *SpecifierQualifierList) IsVolatile() bool
- func (n *SpecifierQualifierList) Pos() token.Pos
- func (n *SpecifierQualifierList) String() string
- func (n *SpecifierQualifierList) TypedefName() int
- type SpecifierQualifierListOpt
- type Statement
- type StaticAssertDeclaration
- type StorageClassSpecifier
- type StringLitID
- type StructDeclaration
- type StructDeclarationList
- type StructDeclarator
- type StructDeclaratorList
- type StructOrUnion
- type StructOrUnionSpecifier
- type TranslationUnit
- type Type
- type TypeName
- type TypeQualifier
- type TypeQualifierList
- type TypeQualifierListOpt
- type TypeSpecifier
- type VolatileOpt
Examples ¶
- AbstractDeclarator
- AbstractDeclarator (Case1)
- AbstractDeclaratorOpt
- AbstractDeclaratorOpt (Case1)
- ArgumentExpressionList
- ArgumentExpressionList (Case1)
- ArgumentExpressionListOpt
- ArgumentExpressionListOpt (Case1)
- AssemblerInstructions
- AssemblerInstructions (Case1)
- AssemblerOperand
- AssemblerOperands
- AssemblerOperands (Case1)
- AssemblerStatement
- AssemblerStatement (Case1)
- AssemblerStatement (Case2)
- AssemblerStatement (Case3)
- AssemblerStatement (Case4)
- AssemblerStatement (Case5)
- AssemblerStatement (Case6)
- AssemblerSymbolicNameOpt
- AssemblerSymbolicNameOpt (Case1)
- BasicAssemblerStatement
- BlockItem
- BlockItem (Case1)
- BlockItemList
- BlockItemList (Case1)
- BlockItemListOpt
- BlockItemListOpt (Case1)
- Clobbers
- Clobbers (Case1)
- CommaOpt
- CommaOpt (Case1)
- CompoundStatement
- ConstantExpression
- ControlLine
- ControlLine (Case01)
- ControlLine (Case02)
- ControlLine (Case03)
- ControlLine (Case04)
- ControlLine (Case05)
- ControlLine (Case06)
- ControlLine (Case07)
- ControlLine (Case08)
- ControlLine (Case09)
- ControlLine (Case10)
- ControlLine (Case11)
- ControlLine (Case12)
- ControlLine (Case13)
- Declaration
- Declaration (Case1)
- DeclarationList
- DeclarationList (Case1)
- DeclarationListOpt
- DeclarationListOpt (Case1)
- DeclarationSpecifiers
- DeclarationSpecifiers (Case1)
- DeclarationSpecifiers (Case2)
- DeclarationSpecifiers (Case3)
- DeclarationSpecifiersOpt
- DeclarationSpecifiersOpt (Case1)
- Declarator
- DeclaratorOpt
- DeclaratorOpt (Case1)
- Designation
- DesignationOpt
- DesignationOpt (Case1)
- Designator
- Designator (Case1)
- DesignatorList
- DesignatorList (Case1)
- DirectAbstractDeclarator
- DirectAbstractDeclarator (Case1)
- DirectAbstractDeclarator (Case2)
- DirectAbstractDeclarator (Case3)
- DirectAbstractDeclarator (Case4)
- DirectAbstractDeclarator (Case5)
- DirectAbstractDeclarator (Case6)
- DirectAbstractDeclarator (Case7)
- DirectAbstractDeclaratorOpt
- DirectAbstractDeclaratorOpt (Case1)
- DirectDeclarator
- DirectDeclarator (Case1)
- DirectDeclarator (Case2)
- DirectDeclarator (Case3)
- DirectDeclarator (Case4)
- DirectDeclarator (Case5)
- DirectDeclarator (Case6)
- DirectDeclarator (Case7)
- ElifGroup
- ElifGroupList
- ElifGroupList (Case1)
- ElifGroupListOpt
- ElifGroupListOpt (Case1)
- ElseGroup
- ElseGroupOpt
- ElseGroupOpt (Case1)
- EndifLine
- EnumSpecifier
- EnumSpecifier (Case1)
- EnumerationConstant
- Enumerator
- Enumerator (Case1)
- EnumeratorList
- EnumeratorList (Case1)
- Expression
- Expression (Case01)
- Expression (Case02)
- Expression (Case03)
- Expression (Case04)
- Expression (Case05)
- Expression (Case06)
- Expression (Case07)
- Expression (Case08)
- Expression (Case09)
- Expression (Case10)
- Expression (Case11)
- Expression (Case12)
- Expression (Case13)
- Expression (Case14)
- Expression (Case15)
- Expression (Case16)
- Expression (Case17)
- Expression (Case18)
- Expression (Case19)
- Expression (Case20)
- Expression (Case21)
- Expression (Case22)
- Expression (Case23)
- Expression (Case24)
- Expression (Case25)
- Expression (Case26)
- Expression (Case27)
- Expression (Case28)
- Expression (Case29)
- Expression (Case30)
- Expression (Case31)
- Expression (Case32)
- Expression (Case33)
- Expression (Case34)
- Expression (Case35)
- Expression (Case36)
- Expression (Case37)
- Expression (Case38)
- Expression (Case39)
- Expression (Case40)
- Expression (Case41)
- Expression (Case42)
- Expression (Case43)
- Expression (Case44)
- Expression (Case45)
- Expression (Case46)
- Expression (Case47)
- Expression (Case48)
- Expression (Case49)
- Expression (Case50)
- Expression (Case51)
- Expression (Case52)
- Expression (Case53)
- Expression (Case54)
- Expression (Case55)
- Expression (Case56)
- Expression (Case57)
- Expression (Case58)
- Expression (Case59)
- ExpressionList
- ExpressionList (Case1)
- ExpressionListOpt
- ExpressionListOpt (Case1)
- ExpressionOpt
- ExpressionOpt (Case1)
- ExpressionStatement
- ExternalDeclaration
- ExternalDeclaration (Case1)
- ExternalDeclaration (Case2)
- ExternalDeclaration (Case3)
- FunctionBody
- FunctionBody (Case1)
- FunctionDefinition
- FunctionDefinition (Case1)
- FunctionSpecifier
- FunctionSpecifier (Case1)
- GroupList
- GroupList (Case1)
- GroupListOpt
- GroupListOpt (Case1)
- IdentifierList
- IdentifierList (Case1)
- IdentifierListOpt
- IdentifierListOpt (Case1)
- IdentifierOpt
- IdentifierOpt (Case1)
- IfGroup
- IfGroup (Case1)
- IfGroup (Case2)
- IfSection
- InitDeclarator
- InitDeclarator (Case1)
- InitDeclaratorList
- InitDeclaratorList (Case1)
- InitDeclaratorListOpt
- InitDeclaratorListOpt (Case1)
- Initializer
- Initializer (Case1)
- Initializer (Case2)
- InitializerList
- InitializerList (Case1)
- InitializerList (Case2)
- IterationStatement
- IterationStatement (Case1)
- IterationStatement (Case2)
- IterationStatement (Case3)
- JumpStatement
- JumpStatement (Case1)
- JumpStatement (Case2)
- JumpStatement (Case3)
- JumpStatement (Case4)
- LabeledStatement
- LabeledStatement (Case1)
- LabeledStatement (Case2)
- ParameterDeclaration
- ParameterDeclaration (Case1)
- ParameterList
- ParameterList (Case1)
- ParameterTypeList
- ParameterTypeList (Case1)
- ParameterTypeListOpt
- ParameterTypeListOpt (Case1)
- Pointer
- Pointer (Case1)
- PointerOpt
- PointerOpt (Case1)
- PreprocessingFile
- SelectionStatement
- SelectionStatement (Case1)
- SelectionStatement (Case2)
- SpecifierQualifierList
- SpecifierQualifierList (Case1)
- SpecifierQualifierListOpt
- SpecifierQualifierListOpt (Case1)
- Statement
- Statement (Case1)
- Statement (Case2)
- Statement (Case3)
- Statement (Case4)
- Statement (Case5)
- Statement (Case6)
- StaticAssertDeclaration
- StorageClassSpecifier
- StorageClassSpecifier (Case1)
- StorageClassSpecifier (Case2)
- StorageClassSpecifier (Case3)
- StorageClassSpecifier (Case4)
- StructDeclaration
- StructDeclaration (Case1)
- StructDeclaration (Case2)
- StructDeclarationList
- StructDeclarationList (Case1)
- StructDeclarator
- StructDeclarator (Case1)
- StructDeclaratorList
- StructDeclaratorList (Case1)
- StructOrUnion
- StructOrUnion (Case1)
- StructOrUnionSpecifier
- StructOrUnionSpecifier (Case1)
- StructOrUnionSpecifier (Case2)
- TranslationUnit
- TranslationUnit (Case1)
- TypeName
- TypeQualifier
- TypeQualifier (Case1)
- TypeQualifier (Case2)
- TypeQualifierList
- TypeQualifierList (Case1)
- TypeQualifierListOpt
- TypeQualifierListOpt (Case1)
- TypeSpecifier
- TypeSpecifier (Case01)
- TypeSpecifier (Case02)
- TypeSpecifier (Case03)
- TypeSpecifier (Case04)
- TypeSpecifier (Case05)
- TypeSpecifier (Case06)
- TypeSpecifier (Case07)
- TypeSpecifier (Case08)
- TypeSpecifier (Case09)
- TypeSpecifier (Case10)
- TypeSpecifier (Case11)
- TypeSpecifier (Case12)
- TypeSpecifier (Case13)
- TypeSpecifier (Case14)
- TypeSpecifier (Case15)
- VolatileOpt
- VolatileOpt (Case1)
Constants ¶
const ( ADDASSIGN = 57346 ALIGNOF = 57347 ANDAND = 57348 ANDASSIGN = 57349 ARROW = 57350 ASM = 57351 AUTO = 57352 BOOL = 57353 BREAK = 57354 CASE = 57355 CAST = 57356 CHAR = 57357 CHARCONST = 57358 COMPLEX = 57359 CONST = 57360 CONSTANT_EXPRESSION = 1048577 CONTINUE = 57361 DDD = 57362 DEC = 57363 DEFAULT = 57364 DIVASSIGN = 57365 DO = 57366 DOUBLE = 57367 ELSE = 57368 ENUM = 57369 EQ = 57370 EXTERN = 57371 FLOAT = 57372 FLOATCONST = 57373 FOR = 57374 GEQ = 57375 GOTO = 57376 IDENTIFIER = 57377 IDENTIFIER_LPAREN = 57378 IDENTIFIER_NONREPL = 57379 IF = 57380 INC = 57381 INLINE = 57382 INT = 57383 INTCONST = 57384 LEQ = 57385 LONG = 57386 LONGCHARCONST = 57387 LONGSTRINGLITERAL = 57388 LSH = 57389 LSHASSIGN = 57390 MODASSIGN = 57391 MULASSIGN = 57392 NEQ = 57393 NOELSE = 57394 NORETURN = 57395 NOSEMI = 57396 ORASSIGN = 57397 OROR = 57398 PPDEFINE = 57399 PPELIF = 57400 PPELSE = 57401 PPENDIF = 57402 PPERROR = 57403 PPHASH_NL = 57404 PPHEADER_NAME = 57405 PPIF = 57406 PPIFDEF = 57407 PPIFNDEF = 57408 PPINCLUDE = 57409 PPINCLUDE_NEXT = 57410 PPLINE = 57411 PPNONDIRECTIVE = 57412 PPNUMBER = 57413 PPOTHER = 57414 PPPASTE = 57415 PPPRAGMA = 57416 PPUNDEF = 57417 PREPROCESSING_FILE = 1048576 REGISTER = 57418 RESTRICT = 57419 RETURN = 57420 RSH = 57421 RSHASSIGN = 57422 SHORT = 57423 SIGNED = 57424 SIZEOF = 57425 STATIC = 57426 STATIC_ASSERT = 57427 STRINGLITERAL = 57428 STRUCT = 57429 SUBASSIGN = 57430 SWITCH = 57431 TRANSLATION_UNIT = 1048578 TYPEDEF = 57432 TYPEDEFNAME = 57433 TYPEOF = 57434 UNARY = 57435 UNION = 57436 UNSIGNED = 57437 VOID = 57438 VOLATILE = 57439 WHILE = 57440 XORASSIGN = 57441 )
Variables ¶
This section is empty.
Functions ¶
func HostConfig ¶
func HostConfig(opts ...string) (predefined string, includePaths, sysIncludePaths []string, err error)
HostConfig executes HostCppConfig with the cpp argument set to "cpp". For more info please see the documentation of HostCppConfig.
func HostCppConfig ¶
func HostCppConfig(cpp string, opts ...string) (predefined string, includePaths, sysIncludePaths []string, err error)
HostCppConfig returns the system C preprocessor configuration, or an error, if any. The configuration is obtained by running the cpp command. For the predefined macros list the '-dM' options is added. For the include paths lists, the option '-v' is added and the output is parsed to extract the "..." include and <...> include paths. To add any other options to cpp, list them in opts.
The function relies on a POSIX compatible C preprocessor installed. Execution of HostConfig is not free, so caching the results is recommended whenever possible.
func ImportPath ¶
ImportPath returns the import path of this package or an error, if any.
func IsArithmeticType ¶
IsArithmeticType reports wheter t.Kind() is one of UintPtr, Char, SChar, UChar, Short, UShort, Int, UInt, Long, ULong, LongLong, ULongLong, Float, Double, LongDouble, FloatComplex, DoubleComplex, LongDoubleComplex, Bool or Enum.
func IsIntType ¶
IsIntType reports t.Kind() is one of Char, SChar, UChar, Short, UShort, Int, UInt, Long, ULong, LongLong, ULongLong, Bool or Enum.
func PrettyString ¶
func PrettyString(v interface{}) string
PrettyString pretty prints things produced by this package.
Types ¶
type AbstractDeclarator ¶
type AbstractDeclarator struct {
Case int
DirectAbstractDeclarator *DirectAbstractDeclarator
Pointer *Pointer
PointerOpt *PointerOpt
// contains filtered or unexported fields
}
AbstractDeclarator represents data reduced by productions:
AbstractDeclarator:
Pointer
| PointerOpt DirectAbstractDeclarator // Case 1
Example ¶
fmt.Println(exampleAST(185, "\U00100001 ( _Bool * )"))
Output: &cc.AbstractDeclarator{ · Pointer: &cc.Pointer{ · · Token: example185.c:1:10: '*', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(186, "\U00100001 ( _Bool ( ) )"))
Output: &cc.AbstractDeclarator{ · Case: 1, · DirectAbstractDeclarator: &cc.DirectAbstractDeclarator{ · · Case: 6, · · Token: example186.c:1:10: '(', · · Token2: example186.c:1:12: ')', · }, }
func (*AbstractDeclarator) Pos ¶
func (n *AbstractDeclarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AbstractDeclarator) String ¶
func (n *AbstractDeclarator) String() string
String implements fmt.Stringer.
type AbstractDeclaratorOpt ¶
type AbstractDeclaratorOpt struct {
AbstractDeclarator *AbstractDeclarator
}
AbstractDeclaratorOpt represents data reduced by productions:
AbstractDeclaratorOpt:
/* empty */
| AbstractDeclarator // Case 1
Example ¶
fmt.Println(exampleAST(187, "\U00100001 ( _Bool )") == (*AbstractDeclaratorOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(188, "\U00100001 ( _Bool * )"))
Output: &cc.AbstractDeclaratorOpt{ · AbstractDeclarator: &cc.AbstractDeclarator{ · · Pointer: &cc.Pointer{ · · · Token: example188.c:1:10: '*', · · }, · }, }
func (*AbstractDeclaratorOpt) Pos ¶
func (n *AbstractDeclaratorOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AbstractDeclaratorOpt) String ¶
func (n *AbstractDeclaratorOpt) String() string
String implements fmt.Stringer.
type ArgumentExpressionList ¶
type ArgumentExpressionList struct {
ArgumentExpressionList *ArgumentExpressionList
Case int
Expression *Expression
Token xc.Token
}
ArgumentExpressionList represents data reduced by productions:
ArgumentExpressionList:
Expression
| ArgumentExpressionList ',' Expression // Case 1
Example ¶
fmt.Println(exampleAST(8, "\U00100001 'a' ( 'b' )"))
Output: &cc.ArgumentExpressionList{ · Expression: &cc.Expression{ · · Case: 1, · · Token: example8.c:1:8: CHARCONST "'b'", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(9, "\U00100001 'a' ( 'b' , 'c' )"))
Output: &cc.ArgumentExpressionList{ · ArgumentExpressionList: &cc.ArgumentExpressionList{ · · Case: 1, · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example9.c:1:14: CHARCONST "'c'", · · }, · · Token: example9.c:1:12: ',', · }, · Expression: &cc.Expression{ · · Case: 1, · · Token: example9.c:1:8: CHARCONST "'b'", · }, }
func (*ArgumentExpressionList) Pos ¶
func (n *ArgumentExpressionList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ArgumentExpressionList) String ¶
func (n *ArgumentExpressionList) String() string
String implements fmt.Stringer.
type ArgumentExpressionListOpt ¶
type ArgumentExpressionListOpt struct {
ArgumentExpressionList *ArgumentExpressionList
}
ArgumentExpressionListOpt represents data reduced by productions:
ArgumentExpressionListOpt:
/* empty */
| ArgumentExpressionList // Case 1
Example ¶
fmt.Println(exampleAST(10, "\U00100001 'a' ( )") == (*ArgumentExpressionListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(11, "\U00100001 'a' ( 'b' )"))
Output: &cc.ArgumentExpressionListOpt{ · ArgumentExpressionList: &cc.ArgumentExpressionList{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example11.c:1:8: CHARCONST "'b'", · · }, · }, }
func (*ArgumentExpressionListOpt) Pos ¶
func (n *ArgumentExpressionListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ArgumentExpressionListOpt) String ¶
func (n *ArgumentExpressionListOpt) String() string
String implements fmt.Stringer.
type AssemblerInstructions ¶
type AssemblerInstructions struct {
AssemblerInstructions *AssemblerInstructions
Case int
Token xc.Token
}
AssemblerInstructions represents data reduced by productions:
AssemblerInstructions:
STRINGLITERAL
| AssemblerInstructions STRINGLITERAL // Case 1
Example ¶
fmt.Println(exampleAST(265, "\U00100002 asm ( \"a\" )"))
Output: &cc.AssemblerInstructions{ · Token: example265.c:1:8: STRINGLITERAL "\"a\"", }
Example (Case1) ¶
fmt.Println(exampleAST(266, "\U00100002 asm ( \"a\" \"b\" )"))
Output: &cc.AssemblerInstructions{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Case: 1, · · Token: example266.c:1:12: STRINGLITERAL "\"b\"", · }, · Token: example266.c:1:8: STRINGLITERAL "\"a\"", }
func (*AssemblerInstructions) Pos ¶
func (n *AssemblerInstructions) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AssemblerInstructions) String ¶
func (n *AssemblerInstructions) String() string
String implements fmt.Stringer.
type AssemblerOperand ¶
type AssemblerOperand struct {
AssemblerSymbolicNameOpt *AssemblerSymbolicNameOpt
Expression *Expression
Token xc.Token
Token2 xc.Token
Token3 xc.Token
}
AssemblerOperand represents data reduced by production:
AssemblerOperand:
AssemblerSymbolicNameOpt STRINGLITERAL '(' Expression ')'
Example ¶
fmt.Println(exampleAST(270, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) )"))
Output: &cc.AssemblerOperand{ · Expression: &cc.Expression{ · · Case: 1, · · Token: example270.c:1:22: CHARCONST "'d'", · }, · Token: example270.c:1:16: STRINGLITERAL "\"c\"", · Token2: example270.c:1:20: '(', · Token3: example270.c:1:26: ')', }
func (*AssemblerOperand) Pos ¶
func (n *AssemblerOperand) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AssemblerOperand) String ¶
func (n *AssemblerOperand) String() string
String implements fmt.Stringer.
type AssemblerOperands ¶
type AssemblerOperands struct {
AssemblerOperand *AssemblerOperand
AssemblerOperands *AssemblerOperands
Case int
Token xc.Token
}
AssemblerOperands represents data reduced by productions:
AssemblerOperands:
AssemblerOperand
| AssemblerOperands ',' AssemblerOperand // Case 1
Example ¶
fmt.Println(exampleAST(271, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) )"))
Output: &cc.AssemblerOperands{ · AssemblerOperand: &cc.AssemblerOperand{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example271.c:1:22: CHARCONST "'d'", · · }, · · Token: example271.c:1:16: STRINGLITERAL "\"c\"", · · Token2: example271.c:1:20: '(', · · Token3: example271.c:1:26: ')', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(272, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) , \"e\" ( 'f' ) )"))
Output: &cc.AssemblerOperands{ · AssemblerOperand: &cc.AssemblerOperand{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example272.c:1:22: CHARCONST "'d'", · · }, · · Token: example272.c:1:16: STRINGLITERAL "\"c\"", · · Token2: example272.c:1:20: '(', · · Token3: example272.c:1:26: ')', · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example272.c:1:36: CHARCONST "'f'", · · · }, · · · Token: example272.c:1:30: STRINGLITERAL "\"e\"", · · · Token2: example272.c:1:34: '(', · · · Token3: example272.c:1:40: ')', · · }, · · Case: 1, · · Token: example272.c:1:28: ',', · }, }
func (*AssemblerOperands) Pos ¶
func (n *AssemblerOperands) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AssemblerOperands) String ¶
func (n *AssemblerOperands) String() string
String implements fmt.Stringer.
type AssemblerStatement ¶
type AssemblerStatement struct {
AssemblerInstructions *AssemblerInstructions
AssemblerOperands *AssemblerOperands
AssemblerOperands2 *AssemblerOperands
BasicAssemblerStatement *BasicAssemblerStatement
Case int
Clobbers *Clobbers
IdentifierList *IdentifierList
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
Token5 xc.Token
Token6 xc.Token
Token7 xc.Token
Token8 xc.Token
VolatileOpt *VolatileOpt
}
AssemblerStatement represents data reduced by productions:
AssemblerStatement:
BasicAssemblerStatement
| "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ')' // Case 1
| "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ':' AssemblerOperands ')' // Case 2
| "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ':' AssemblerOperands ':' Clobbers ')' // Case 3
| "asm" VolatileOpt "goto" '(' AssemblerInstructions ':' ':' AssemblerOperands ':' Clobbers ':' IdentifierList ')' // Case 4
| "asm" VolatileOpt '(' AssemblerInstructions ':' ')' // Case 5
| "asm" VolatileOpt '(' AssemblerInstructions ':' ':' AssemblerOperands ')' // Case 6
Example ¶
fmt.Println(exampleAST(277, "\U00100002 a asm ( \"b\" ) !"))
Output: &cc.AssemblerStatement{ · BasicAssemblerStatement: &cc.BasicAssemblerStatement{ · · AssemblerInstructions: &cc.AssemblerInstructions{ · · · Token: example277.c:1:10: STRINGLITERAL "\"b\"", · · }, · · Token: example277.c:1:4: ASM "asm", · · Token2: example277.c:1:8: '(', · · Token3: example277.c:1:14: ')', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(278, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example278.c:1:10: STRINGLITERAL "\"b\"", · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example278.c:1:22: CHARCONST "'d'", · · · }, · · · Token: example278.c:1:16: STRINGLITERAL "\"c\"", · · · Token2: example278.c:1:20: '(', · · · Token3: example278.c:1:26: ')', · · }, · }, · Case: 1, · Token: example278.c:1:4: ASM "asm", · Token2: example278.c:1:8: '(', · Token3: example278.c:1:14: ':', · Token4: example278.c:1:28: ')', }
Example (Case2) ¶
fmt.Println(exampleAST(279, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) : \"e\" ( 'f' ) ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example279.c:1:10: STRINGLITERAL "\"b\"", · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example279.c:1:22: CHARCONST "'d'", · · · }, · · · Token: example279.c:1:16: STRINGLITERAL "\"c\"", · · · Token2: example279.c:1:20: '(', · · · Token3: example279.c:1:26: ')', · · }, · }, · AssemblerOperands2: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example279.c:1:36: CHARCONST "'f'", · · · }, · · · Token: example279.c:1:30: STRINGLITERAL "\"e\"", · · · Token2: example279.c:1:34: '(', · · · Token3: example279.c:1:40: ')', · · }, · }, · Case: 2, · Token: example279.c:1:4: ASM "asm", · Token2: example279.c:1:8: '(', · Token3: example279.c:1:14: ':', · Token4: example279.c:1:28: ':', · Token5: example279.c:1:42: ')', }
Example (Case3) ¶
fmt.Println(exampleAST(280, "\U00100002 a asm ( \"b\" : \"c\" ( 'd' ) : \"e\" ( 'f' ) : \"g\" ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example280.c:1:10: STRINGLITERAL "\"b\"", · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example280.c:1:22: CHARCONST "'d'", · · · }, · · · Token: example280.c:1:16: STRINGLITERAL "\"c\"", · · · Token2: example280.c:1:20: '(', · · · Token3: example280.c:1:26: ')', · · }, · }, · AssemblerOperands2: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example280.c:1:36: CHARCONST "'f'", · · · }, · · · Token: example280.c:1:30: STRINGLITERAL "\"e\"", · · · Token2: example280.c:1:34: '(', · · · Token3: example280.c:1:40: ')', · · }, · }, · Case: 3, · Clobbers: &cc.Clobbers{ · · Token: example280.c:1:44: STRINGLITERAL "\"g\"", · }, · Token: example280.c:1:4: ASM "asm", · Token2: example280.c:1:8: '(', · Token3: example280.c:1:14: ':', · Token4: example280.c:1:28: ':', · Token5: example280.c:1:42: ':', · Token6: example280.c:1:48: ')', }
Example (Case4) ¶
fmt.Println(exampleAST(281, "\U00100002 a asm goto ( \"b\" : : \"c\" ( 'd' ) : \"e\" : f ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example281.c:1:15: STRINGLITERAL "\"b\"", · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example281.c:1:29: CHARCONST "'d'", · · · }, · · · Token: example281.c:1:23: STRINGLITERAL "\"c\"", · · · Token2: example281.c:1:27: '(', · · · Token3: example281.c:1:33: ')', · · }, · }, · Case: 4, · Clobbers: &cc.Clobbers{ · · Token: example281.c:1:37: STRINGLITERAL "\"e\"", · }, · IdentifierList: &cc.IdentifierList{ · · Token: example281.c:1:43: IDENTIFIER "f", · }, · Token: example281.c:1:4: ASM "asm", · Token2: example281.c:1:8: GOTO "goto", · Token3: example281.c:1:13: '(', · Token4: example281.c:1:19: ':', · Token5: example281.c:1:21: ':', · Token6: example281.c:1:35: ':', · Token7: example281.c:1:41: ':', · Token8: example281.c:1:45: ')', }
Example (Case5) ¶
fmt.Println(exampleAST(282, "\U00100002 a asm ( \"b\" : ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example282.c:1:10: STRINGLITERAL "\"b\"", · }, · Case: 5, · Token: example282.c:1:4: ASM "asm", · Token2: example282.c:1:8: '(', · Token3: example282.c:1:14: ':', · Token4: example282.c:1:16: ')', }
Example (Case6) ¶
fmt.Println(exampleAST(283, "\U00100002 a asm ( \"b\" : : \"c\" ( 'd' ) ) !"))
Output: &cc.AssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example283.c:1:10: STRINGLITERAL "\"b\"", · }, · AssemblerOperands: &cc.AssemblerOperands{ · · AssemblerOperand: &cc.AssemblerOperand{ · · · Expression: &cc.Expression{ · · · · Case: 1, · · · · Token: example283.c:1:24: CHARCONST "'d'", · · · }, · · · Token: example283.c:1:18: STRINGLITERAL "\"c\"", · · · Token2: example283.c:1:22: '(', · · · Token3: example283.c:1:28: ')', · · }, · }, · Case: 6, · Token: example283.c:1:4: ASM "asm", · Token2: example283.c:1:8: '(', · Token3: example283.c:1:14: ':', · Token4: example283.c:1:16: ':', · Token5: example283.c:1:30: ')', }
func (*AssemblerStatement) Pos ¶
func (n *AssemblerStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AssemblerStatement) String ¶
func (n *AssemblerStatement) String() string
String implements fmt.Stringer.
type AssemblerSymbolicNameOpt ¶
AssemblerSymbolicNameOpt represents data reduced by productions:
AssemblerSymbolicNameOpt:
/* empty */
| '[' IDENTIFIER ']' // Case 1
Example ¶
fmt.Println(exampleAST(273, "\U00100002 a asm goto ( \"b\" : : \"c\"") == (*AssemblerSymbolicNameOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(274, "\U00100002 a asm ( \"b\" : [ c ] \"d\""))
Output: &cc.AssemblerSymbolicNameOpt{ · Token: example274.c:1:16: '[', · Token2: example274.c:1:18: IDENTIFIER "c", · Token3: example274.c:1:20: ']', }
func (*AssemblerSymbolicNameOpt) Pos ¶
func (n *AssemblerSymbolicNameOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*AssemblerSymbolicNameOpt) String ¶
func (n *AssemblerSymbolicNameOpt) String() string
String implements fmt.Stringer.
type BasicAssemblerStatement ¶
type BasicAssemblerStatement struct {
AssemblerInstructions *AssemblerInstructions
Token xc.Token
Token2 xc.Token
Token3 xc.Token
VolatileOpt *VolatileOpt
}
BasicAssemblerStatement represents data reduced by production:
BasicAssemblerStatement:
"asm" VolatileOpt '(' AssemblerInstructions ')'
Example ¶
fmt.Println(exampleAST(267, "\U00100002 asm ( \"a\" ) !"))
Output: &cc.BasicAssemblerStatement{ · AssemblerInstructions: &cc.AssemblerInstructions{ · · Token: example267.c:1:8: STRINGLITERAL "\"a\"", · }, · Token: example267.c:1:2: ASM "asm", · Token2: example267.c:1:6: '(', · Token3: example267.c:1:12: ')', }
func (*BasicAssemblerStatement) Pos ¶
func (n *BasicAssemblerStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*BasicAssemblerStatement) String ¶
func (n *BasicAssemblerStatement) String() string
String implements fmt.Stringer.
type Binding ¶
type Binding struct {
Node Node
// contains filtered or unexported fields
}
Binding records the declaration Node of a declared name.
In the NSIdentifiers namespace the dynamic type of Node for declared names is always *DirectDeclarator. The *Declarator associated with the direct declarator is available via (*DirectDeclarator).TopDeclarator().
int* p;
In the NSTags namespace the dynamic type of Node is xc.Token when a tag is declared:
struct foo; enum bar;
When a tag is defined, the dynamic type of Node is *EnumSpecifier or *StructOrUnionSpecifier:
struct foo { int i; };
enum bar { a = 1 };
type Bindings ¶
type Bindings struct {
Identifiers map[int]Binding // NSIdentifiers name space bindings.
Tags map[int]Binding // NSTags name space bindings.
Parent *Bindings // Parent scope or nil for ScopeFile.
// contains filtered or unexported fields
}
Bindings record names declared in a scope.
func (*Bindings) Lookup ¶
Lookup returns the Binding of id in ns or any of its parents. If id is undeclared, the returned Binding has its Node field set to nil.
type BlockItem ¶
type BlockItem struct {
Case int
Declaration *Declaration
Statement *Statement
}
BlockItem represents data reduced by productions:
BlockItem:
Declaration
| Statement // Case 1
Example ¶
fmt.Println(exampleAST(230, "\U00100001 ( { auto ; !"))
Output: &cc.BlockItem{ · Declaration: &cc.Declaration{ · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example230.c:1:6: AUTO "auto", · · · }, · · }, · · Token: example230.c:1:11: ';', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(231, "\U00100001 ( { ; !"))
Output: &cc.BlockItem{ · Case: 1, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example231.c:1:6: ';', · · }, · }, }
type BlockItemList ¶
type BlockItemList struct {
BlockItem *BlockItem
BlockItemList *BlockItemList
Case int
}
BlockItemList represents data reduced by productions:
BlockItemList:
BlockItem
| BlockItemList BlockItem // Case 1
Example ¶
fmt.Println(exampleAST(226, "\U00100001 ( { ; !"))
Output: &cc.BlockItemList{ · BlockItem: &cc.BlockItem{ · · Case: 1, · · Statement: &cc.Statement{ · · · Case: 2, · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · Token: example226.c:1:6: ';', · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(227, "\U00100001 ( { ; ; !"))
Output: &cc.BlockItemList{ · BlockItem: &cc.BlockItem{ · · Case: 1, · · Statement: &cc.Statement{ · · · Case: 2, · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · Token: example227.c:1:6: ';', · · · }, · · }, · }, · BlockItemList: &cc.BlockItemList{ · · BlockItem: &cc.BlockItem{ · · · Case: 1, · · · Statement: &cc.Statement{ · · · · Case: 2, · · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · · Token: example227.c:1:8: ';', · · · · }, · · · }, · · }, · · Case: 1, · }, }
func (*BlockItemList) Pos ¶
func (n *BlockItemList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*BlockItemList) String ¶
func (n *BlockItemList) String() string
String implements fmt.Stringer.
type BlockItemListOpt ¶
type BlockItemListOpt struct {
BlockItemList *BlockItemList
}
BlockItemListOpt represents data reduced by productions:
BlockItemListOpt:
/* empty */
| BlockItemList // Case 1
Example ¶
fmt.Println(exampleAST(228, "\U00100001 ( { }") == (*BlockItemListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(229, "\U00100001 ( { ; }"))
Output: &cc.BlockItemListOpt{ · BlockItemList: &cc.BlockItemList{ · · BlockItem: &cc.BlockItem{ · · · Case: 1, · · · Statement: &cc.Statement{ · · · · Case: 2, · · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · · Token: example229.c:1:6: ';', · · · · }, · · · }, · · }, · }, }
func (*BlockItemListOpt) Pos ¶
func (n *BlockItemListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*BlockItemListOpt) String ¶
func (n *BlockItemListOpt) String() string
String implements fmt.Stringer.
type Clobbers ¶
Clobbers represents data reduced by productions:
Clobbers:
STRINGLITERAL
| Clobbers ',' STRINGLITERAL // Case 1
Example ¶
fmt.Println(exampleAST(275, "\U00100002 a asm goto ( \"b\" : : \"c\" ( 'd' ) : \"e\" )"))
Output: &cc.Clobbers{ · Token: example275.c:1:37: STRINGLITERAL "\"e\"", }
Example (Case1) ¶
fmt.Println(exampleAST(276, "\U00100002 a asm goto ( \"b\" : : \"c\" ( 'd' ) : \"e\" , \"f\" )"))
Output: &cc.Clobbers{ · Clobbers: &cc.Clobbers{ · · Case: 1, · · Token: example276.c:1:41: ',', · · Token2: example276.c:1:43: STRINGLITERAL "\"f\"", · }, · Token: example276.c:1:37: STRINGLITERAL "\"e\"", }
type CommaOpt ¶
CommaOpt represents data reduced by productions:
CommaOpt:
/* empty */
| ',' // Case 1
Example ¶
fmt.Println(exampleAST(135, "\U00100002 auto a = { }") == (*CommaOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(136, "\U00100002 auto a = { , }"))
Output: &cc.CommaOpt{ · Token: example136.c:1:13: ',', }
type CompoundStatement ¶
type CompoundStatement struct {
BlockItemListOpt *BlockItemListOpt
Token xc.Token
Token2 xc.Token
// contains filtered or unexported fields
}
CompoundStatement represents data reduced by production:
CompoundStatement:
'{' BlockItemListOpt '}'
Example ¶
fmt.Println(exampleAST(225, "\U00100001 ( { }"))
Output: &cc.CompoundStatement{ · Token: example225.c:1:4: '{', · Token2: example225.c:1:6: '}', }
func (*CompoundStatement) Pos ¶
func (n *CompoundStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*CompoundStatement) Scope ¶
func (n *CompoundStatement) Scope() *Bindings
Scope returns n's scope.
func (*CompoundStatement) String ¶
func (n *CompoundStatement) String() string
String implements fmt.Stringer.
type ComputedGotoID ¶
type ComputedGotoID int
StringLitID is the type of an Expression.Value representing the numeric ID of a label name used in &&label.
type ConstantExpression ¶
type ConstantExpression struct {
Type Type // Type of expression.
Value interface{} // Non nil for certain constant expressions.
Expression *Expression
// contains filtered or unexported fields
}
ConstantExpression represents data reduced by production:
ConstantExpression:
Expression
Example ¶
fmt.Println(exampleAST(79, "\U00100001 'a'"))
Output: &cc.ConstantExpression{ · Type: int, · Value: 97, · Expression: &cc.Expression{ · · Type: int, · · Value: 97, · · Case: 1, · · Token: example79.c:1:2: CHARCONST "'a'", · }, }
func (*ConstantExpression) Pos ¶
func (n *ConstantExpression) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ConstantExpression) String ¶
func (n *ConstantExpression) String() string
String implements fmt.Stringer.
type ControlLine ¶
type ControlLine struct {
Case int
IdentifierList *IdentifierList
IdentifierListOpt *IdentifierListOpt
PPTokenList PPTokenList
PPTokenListOpt PPTokenList
ReplacementList PPTokenList
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
Token5 xc.Token
}
ControlLine represents data reduced by productions:
ControlLine:
PPDEFINE IDENTIFIER ReplacementList
| PPDEFINE IDENTIFIER_LPAREN "..." ')' ReplacementList // Case 1
| PPDEFINE IDENTIFIER_LPAREN IdentifierList ',' "..." ')' ReplacementList // Case 2
| PPDEFINE IDENTIFIER_LPAREN IdentifierListOpt ')' ReplacementList // Case 3
| PPERROR PPTokenListOpt // Case 4
| PPHASH_NL // Case 5
| PPINCLUDE PPTokenList '\n' // Case 6
| PPLINE PPTokenList '\n' // Case 7
| PPPRAGMA PPTokenListOpt // Case 8
| PPUNDEF IDENTIFIER '\n' // Case 9
| PPDEFINE IDENTIFIER_LPAREN IdentifierList "..." ')' ReplacementList // Case 10
| PPDEFINE '\n' // Case 11
| PPUNDEF IDENTIFIER PPTokenList '\n' // Case 12
| PPINCLUDE_NEXT PPTokenList '\n' // Case 13
Example ¶
fmt.Println(exampleAST(307, "\U00100000 \n#define a "))
Output: &cc.ControlLine{ · ReplacementList: []xc.Token{ // len 1 · · 0: example307.c:2:10: ' ', · }, · Token: example307.c:2:2: PPDEFINE, · Token2: example307.c:2:9: IDENTIFIER "a", }
Example (Case01) ¶
fmt.Println(exampleAST(308, "\U00100000 \n#define a( ... ) "))
Output: &cc.ControlLine{ · Case: 1, · ReplacementList: []xc.Token{ // len 1 · · 0: example308.c:2:17: ' ', · }, · Token: example308.c:2:2: PPDEFINE, · Token2: example308.c:2:9: IDENTIFIER_LPAREN "a(", · Token3: example308.c:2:12: DDD, · Token4: example308.c:2:16: ')', }
Example (Case02) ¶
fmt.Println(exampleAST(309, "\U00100000 \n#define a( b , ... ) "))
Output: &cc.ControlLine{ · Case: 2, · IdentifierList: &cc.IdentifierList{ · · Token: example309.c:2:12: IDENTIFIER "b", · }, · ReplacementList: []xc.Token{ // len 1 · · 0: example309.c:2:21: ' ', · }, · Token: example309.c:2:2: PPDEFINE, · Token2: example309.c:2:9: IDENTIFIER_LPAREN "a(", · Token3: example309.c:2:14: ',', · Token4: example309.c:2:16: DDD, · Token5: example309.c:2:20: ')', }
Example (Case03) ¶
fmt.Println(exampleAST(310, "\U00100000 \n#define a( ) "))
Output: &cc.ControlLine{ · Case: 3, · ReplacementList: []xc.Token{ // len 1 · · 0: example310.c:2:13: ' ', · }, · Token: example310.c:2:2: PPDEFINE, · Token2: example310.c:2:9: IDENTIFIER_LPAREN "a(", · Token3: example310.c:2:12: ')', }
Example (Case04) ¶
fmt.Println(exampleAST(311, "\U00100000 \n#error "))
Output: &cc.ControlLine{ · Case: 4, · PPTokenListOpt: []xc.Token{ // len 1 · · 0: example311.c:2:7: ' ', · }, · Token: example311.c:2:2: PPERROR, }
Example (Case05) ¶
fmt.Println(exampleAST(312, "\U00100000 \n#"))
Output: &cc.ControlLine{ · Case: 5, · Token: example312.c:2:2: PPHASH_NL, }
Example (Case06) ¶
fmt.Println(exampleAST(313, "\U00100000 \n#include other_a "))
Output: &cc.ControlLine{ · Case: 6, · PPTokenList: []xc.Token{ // len 3 · · 0: example313.c:2:9: ' ', · · 1: example313.c:2:10: IDENTIFIER "other_a", · · 2: example313.c:2:17: ' ', · }, · Token: example313.c:2:2: PPINCLUDE, · Token2: example313.c:2:18: '\n', }
Example (Case07) ¶
fmt.Println(exampleAST(314, "\U00100000 \n#line other_a "))
Output: &cc.ControlLine{ · Case: 7, · PPTokenList: []xc.Token{ // len 3 · · 0: example314.c:2:6: ' ', · · 1: example314.c:2:7: IDENTIFIER "other_a", · · 2: example314.c:2:14: ' ', · }, · Token: example314.c:2:2: PPLINE, · Token2: example314.c:2:15: '\n', }
Example (Case08) ¶
fmt.Println(exampleAST(315, "\U00100000 \n#pragma "))
Output: &cc.ControlLine{ · Case: 8, · PPTokenListOpt: []xc.Token{ // len 1 · · 0: example315.c:2:8: ' ', · }, · Token: example315.c:2:2: PPPRAGMA, }
Example (Case09) ¶
fmt.Println(exampleAST(316, "\U00100000 \n#undef foo"))
Output: &cc.ControlLine{ · Case: 9, · Token: example316.c:2:2: PPUNDEF, · Token2: example316.c:2:8: IDENTIFIER "foo", · Token3: example316.c:2:11: '\n', }
Example (Case10) ¶
fmt.Println(exampleAST(317, "\U00100000 \n#define a( b ... ) "))
Output: &cc.ControlLine{ · Case: 10, · IdentifierList: &cc.IdentifierList{ · · Token: example317.c:2:12: IDENTIFIER "b", · }, · ReplacementList: []xc.Token{ // len 1 · · 0: example317.c:2:19: ' ', · }, · Token: example317.c:2:2: PPDEFINE, · Token2: example317.c:2:9: IDENTIFIER_LPAREN "a(", · Token3: example317.c:2:14: DDD, · Token4: example317.c:2:18: ')', }
Example (Case11) ¶
fmt.Println(exampleAST(318, "\U00100000 \n#define "))
Output: &cc.ControlLine{ · Case: 11, · Token: example318.c:2:2: PPDEFINE, · Token2: example318.c:2:9: '\n', }
Example (Case12) ¶
fmt.Println(exampleAST(319, "\U00100000 \n#undef foo(bar)"))
Output: &cc.ControlLine{ · Case: 12, · PPTokenList: []xc.Token{ // len 3 · · 0: example319.c:2:11: '(', · · 1: example319.c:2:12: IDENTIFIER "bar", · · 2: example319.c:2:15: ')', · }, · Token: example319.c:2:2: PPUNDEF, · Token2: example319.c:2:8: IDENTIFIER "foo", · Token3: example319.c:2:16: '\n', }
Example (Case13) ¶
fmt.Println(exampleAST(320, "\U00100000 \n#include_next other_a "))
Output: &cc.ControlLine{ · Case: 13, · PPTokenList: []xc.Token{ // len 3 · · 0: example320.c:2:14: ' ', · · 1: example320.c:2:15: IDENTIFIER "other_a", · · 2: example320.c:2:22: ' ', · }, · Token: example320.c:2:2: PPINCLUDE_NEXT, · Token2: example320.c:2:23: '\n', }
func (*ControlLine) Pos ¶
func (n *ControlLine) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type Declaration ¶
type Declaration struct {
Case int
DeclarationSpecifiers *DeclarationSpecifiers
InitDeclaratorListOpt *InitDeclaratorListOpt
StaticAssertDeclaration *StaticAssertDeclaration
Token xc.Token
// contains filtered or unexported fields
}
Declaration represents data reduced by productions:
Declaration:
DeclarationSpecifiers InitDeclaratorListOpt ';'
| StaticAssertDeclaration // Case 1
Example ¶
fmt.Println(exampleAST(80, "\U00100002 auto ;"))
Output: &cc.Declaration{ · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · Case: 3, · · · Token: example80.c:1:2: AUTO "auto", · · }, · }, · Token: example80.c:1:7: ';', }
Example (Case1) ¶
fmt.Println(exampleAST(81, "\U00100002 _Static_assert ( 'a' , \"b\" ) ;"))
Output: &cc.Declaration{ · Case: 1, · StaticAssertDeclaration: &cc.StaticAssertDeclaration{ · · ConstantExpression: &cc.ConstantExpression{ · · · Type: int, · · · Value: 97, · · · Expression: &cc.Expression{ · · · · Type: int, · · · · Value: 97, · · · · Case: 1, · · · · Token: example81.c:1:19: CHARCONST "'a'", · · · }, · · }, · · Token: example81.c:1:2: STATIC_ASSERT "_Static_assert", · · Token2: example81.c:1:17: '(', · · Token3: example81.c:1:23: ',', · · Token4: example81.c:1:25: STRINGLITERAL "\"b\"", · · Token5: example81.c:1:29: ')', · · Token6: example81.c:1:31: ';', · }, }
func (*Declaration) Declarator ¶
func (n *Declaration) Declarator() *Declarator
Declarator returns a synthetic Declarator when n.InitDeclaratorListOpt is nil.
func (*Declaration) Pos ¶
func (n *Declaration) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type DeclarationList ¶
type DeclarationList struct {
Case int
Declaration *Declaration
DeclarationList *DeclarationList
}
DeclarationList represents data reduced by productions:
DeclarationList:
Declaration
| DeclarationList Declaration // Case 1
Example ¶
fmt.Println(exampleAST(260, "\U00100002 a auto ; {"))
Output: &cc.DeclarationList{ · Declaration: &cc.Declaration{ · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example260.c:1:4: AUTO "auto", · · · }, · · }, · · Token: example260.c:1:9: ';', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(261, "\U00100002 a auto ; auto ; {"))
Output: &cc.DeclarationList{ · Declaration: &cc.Declaration{ · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example261.c:1:4: AUTO "auto", · · · }, · · }, · · Token: example261.c:1:9: ';', · }, · DeclarationList: &cc.DeclarationList{ · · Case: 1, · · Declaration: &cc.Declaration{ · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · Case: 3, · · · · · Token: example261.c:1:11: AUTO "auto", · · · · }, · · · }, · · · Token: example261.c:1:16: ';', · · }, · }, }
func (*DeclarationList) Pos ¶
func (n *DeclarationList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DeclarationList) String ¶
func (n *DeclarationList) String() string
String implements fmt.Stringer.
type DeclarationListOpt ¶
type DeclarationListOpt struct {
DeclarationList *DeclarationList
// contains filtered or unexported fields
}
DeclarationListOpt represents data reduced by productions:
DeclarationListOpt:
/* empty */
| DeclarationList // Case 1
Example ¶
fmt.Println(exampleAST(262, "\U00100002 a {") == (*DeclarationListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(264, "\U00100002 a auto ; {"))
Output: &cc.DeclarationListOpt{ · DeclarationList: &cc.DeclarationList{ · · Declaration: &cc.Declaration{ · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · Case: 3, · · · · · Token: example264.c:1:4: AUTO "auto", · · · · }, · · · }, · · · Token: example264.c:1:9: ';', · · }, · }, }
func (*DeclarationListOpt) Pos ¶
func (n *DeclarationListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DeclarationListOpt) String ¶
func (n *DeclarationListOpt) String() string
String implements fmt.Stringer.
type DeclarationSpecifiers ¶
type DeclarationSpecifiers struct {
Case int
DeclarationSpecifiersOpt *DeclarationSpecifiersOpt
FunctionSpecifier *FunctionSpecifier
StorageClassSpecifier *StorageClassSpecifier
TypeQualifier *TypeQualifier
TypeSpecifier *TypeSpecifier
// contains filtered or unexported fields
}
DeclarationSpecifiers represents data reduced by productions:
DeclarationSpecifiers:
StorageClassSpecifier DeclarationSpecifiersOpt
| TypeSpecifier DeclarationSpecifiersOpt // Case 1
| TypeQualifier DeclarationSpecifiersOpt // Case 2
| FunctionSpecifier DeclarationSpecifiersOpt // Case 3
Example ¶
fmt.Println(exampleAST(82, "\U00100002 auto ("))
Output: &cc.DeclarationSpecifiers{ · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · Case: 3, · · Token: example82.c:1:2: AUTO "auto", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(83, "\U00100002 _Bool ("))
Output: &cc.DeclarationSpecifiers{ · Case: 1, · TypeSpecifier: &cc.TypeSpecifier{ · · Case: 9, · · Token: example83.c:1:2: BOOL "_Bool", · }, }
Example (Case2) ¶
fmt.Println(exampleAST(84, "\U00100002 const ("))
Output: &cc.DeclarationSpecifiers{ · Case: 2, · TypeQualifier: &cc.TypeQualifier{ · · Token: example84.c:1:2: CONST "const", · }, }
Example (Case3) ¶
fmt.Println(exampleAST(85, "\U00100002 inline ("))
Output: &cc.DeclarationSpecifiers{ · Case: 3, · FunctionSpecifier: &cc.FunctionSpecifier{ · · Token: example85.c:1:2: INLINE "inline", · }, }
func (*DeclarationSpecifiers) IsAuto ¶
func (n *DeclarationSpecifiers) IsAuto() bool
IsAuto implements specifier.
func (*DeclarationSpecifiers) IsConst ¶
func (n *DeclarationSpecifiers) IsConst() bool
IsConst returns whether n includes the 'const' type qualifier.
func (*DeclarationSpecifiers) IsExtern ¶
func (n *DeclarationSpecifiers) IsExtern() bool
IsExtern implements specifier.
func (*DeclarationSpecifiers) IsInline ¶
func (n *DeclarationSpecifiers) IsInline() bool
IsInline implements specifier.
func (*DeclarationSpecifiers) IsRegister ¶
func (n *DeclarationSpecifiers) IsRegister() bool
IsRegister implements specifier.
func (*DeclarationSpecifiers) IsRestrict ¶
func (n *DeclarationSpecifiers) IsRestrict() bool
IsRestrict implements specifier.
func (*DeclarationSpecifiers) IsStatic ¶
func (n *DeclarationSpecifiers) IsStatic() bool
IsStatic implements specifier.
func (*DeclarationSpecifiers) IsTypedef ¶
func (n *DeclarationSpecifiers) IsTypedef() bool
IsTypedef implements specifier.
func (*DeclarationSpecifiers) IsVolatile ¶
func (n *DeclarationSpecifiers) IsVolatile() bool
IsVolatile implements specifier.
func (*DeclarationSpecifiers) Pos ¶
func (n *DeclarationSpecifiers) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DeclarationSpecifiers) String ¶
func (n *DeclarationSpecifiers) String() string
String implements fmt.Stringer.
func (*DeclarationSpecifiers) TypedefName ¶
func (n *DeclarationSpecifiers) TypedefName() int
TypedefName implements Specifier.
type DeclarationSpecifiersOpt ¶
type DeclarationSpecifiersOpt struct {
DeclarationSpecifiers *DeclarationSpecifiers
// contains filtered or unexported fields
}
DeclarationSpecifiersOpt represents data reduced by productions:
DeclarationSpecifiersOpt:
/* empty */
| DeclarationSpecifiers // Case 1
Example ¶
fmt.Println(exampleAST(86, "\U00100002 auto (") == (*DeclarationSpecifiersOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(87, "\U00100002 auto auto ("))
Output: &cc.DeclarationSpecifiersOpt{ · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · Case: 3, · · · Token: example87.c:1:7: AUTO "auto", · · }, · }, }
func (*DeclarationSpecifiersOpt) Pos ¶
func (n *DeclarationSpecifiersOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DeclarationSpecifiersOpt) String ¶
func (n *DeclarationSpecifiersOpt) String() string
String implements fmt.Stringer.
type Declarator ¶
type Declarator struct {
Linkage Linkage
Type Type
DirectDeclarator *DirectDeclarator
PointerOpt *PointerOpt
// contains filtered or unexported fields
}
Declarator represents data reduced by production:
Declarator:
PointerOpt DirectDeclarator
Example ¶
fmt.Println(exampleAST(149, "\U00100002 a )"))
Output: &cc.Declarator{ · Linkage: None, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example149.c:1:2: IDENTIFIER "a", · }, }
func (*Declarator) Identifier ¶
func (n *Declarator) Identifier() (int, *Bindings)
Identifier returns the ID of the name declared by n and the scope the name is declared in.
func (*Declarator) Pos ¶
func (n *Declarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*Declarator) RawSpecifier ¶
func (n *Declarator) RawSpecifier() Specifier
RawSpecifier returns the raw Specifier associated with n before expanding typedefs. The effective Specifier is accessible via the Type field of n.
type DeclaratorOpt ¶
type DeclaratorOpt struct {
Declarator *Declarator
}
DeclaratorOpt represents data reduced by productions:
DeclaratorOpt:
/* empty */
| Declarator // Case 1
Example ¶
fmt.Println(exampleAST(150, "\U00100002 struct { _Bool :") == (*DeclaratorOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(151, "\U00100002 struct { _Bool a :"))
Output: &cc.DeclaratorOpt{ · Declarator: &cc.Declarator{ · · Linkage: None, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example151.c:1:17: IDENTIFIER "a", · · }, · }, }
func (*DeclaratorOpt) Pos ¶
func (n *DeclaratorOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DeclaratorOpt) String ¶
func (n *DeclaratorOpt) String() string
String implements fmt.Stringer.
type Designation ¶
type Designation struct {
DesignatorList *DesignatorList
Token xc.Token
}
Designation represents data reduced by production:
Designation:
DesignatorList '='
Example ¶
fmt.Println(exampleAST(207, "\U00100002 auto a = { . b = !"))
Output: &cc.Designation{ · DesignatorList: &cc.DesignatorList{ · · Designator: &cc.Designator{ · · · Case: 1, · · · Token: example207.c:1:13: '.', · · · Token2: example207.c:1:15: IDENTIFIER "b", · · }, · }, · Token: example207.c:1:17: '=', }
func (*Designation) Pos ¶
func (n *Designation) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type DesignationOpt ¶
type DesignationOpt struct {
Designation *Designation
}
DesignationOpt represents data reduced by productions:
DesignationOpt:
/* empty */
| Designation // Case 1
Example ¶
fmt.Println(exampleAST(208, "\U00100002 auto a = { !") == (*DesignationOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(209, "\U00100002 auto a = { . b = !"))
Output: &cc.DesignationOpt{ · Designation: &cc.Designation{ · · DesignatorList: &cc.DesignatorList{ · · · Designator: &cc.Designator{ · · · · Case: 1, · · · · Token: example209.c:1:13: '.', · · · · Token2: example209.c:1:15: IDENTIFIER "b", · · · }, · · }, · · Token: example209.c:1:17: '=', · }, }
func (*DesignationOpt) Pos ¶
func (n *DesignationOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DesignationOpt) String ¶
func (n *DesignationOpt) String() string
String implements fmt.Stringer.
type Designator ¶
type Designator struct {
Case int
ConstantExpression *ConstantExpression
Token xc.Token
Token2 xc.Token
}
Designator represents data reduced by productions:
Designator:
'[' ConstantExpression ']'
| '.' IDENTIFIER // Case 1
Example ¶
fmt.Println(exampleAST(212, "\U00100002 auto a = { [ 'b' ] ."))
Output: &cc.Designator{ · ConstantExpression: &cc.ConstantExpression{ · · Type: int, · · Value: 98, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 98, · · · Case: 1, · · · Token: example212.c:1:15: CHARCONST "'b'", · · }, · }, · Token: example212.c:1:13: '[', · Token2: example212.c:1:19: ']', }
Example (Case1) ¶
fmt.Println(exampleAST(213, "\U00100002 auto a = { . b ."))
Output: &cc.Designator{ · Case: 1, · Token: example213.c:1:13: '.', · Token2: example213.c:1:15: IDENTIFIER "b", }
func (*Designator) Pos ¶
func (n *Designator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type DesignatorList ¶
type DesignatorList struct {
Case int
Designator *Designator
DesignatorList *DesignatorList
}
DesignatorList represents data reduced by productions:
DesignatorList:
Designator
| DesignatorList Designator // Case 1
Example ¶
fmt.Println(exampleAST(210, "\U00100002 auto a = { . b ."))
Output: &cc.DesignatorList{ · Designator: &cc.Designator{ · · Case: 1, · · Token: example210.c:1:13: '.', · · Token2: example210.c:1:15: IDENTIFIER "b", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(211, "\U00100002 auto a = { . b . c ."))
Output: &cc.DesignatorList{ · Designator: &cc.Designator{ · · Case: 1, · · Token: example211.c:1:13: '.', · · Token2: example211.c:1:15: IDENTIFIER "b", · }, · DesignatorList: &cc.DesignatorList{ · · Case: 1, · · Designator: &cc.Designator{ · · · Case: 1, · · · Token: example211.c:1:17: '.', · · · Token2: example211.c:1:19: IDENTIFIER "c", · · }, · }, }
func (*DesignatorList) Pos ¶
func (n *DesignatorList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DesignatorList) String ¶
func (n *DesignatorList) String() string
String implements fmt.Stringer.
type DirectAbstractDeclarator ¶
type DirectAbstractDeclarator struct {
AbstractDeclarator *AbstractDeclarator
Case int
DirectAbstractDeclarator *DirectAbstractDeclarator
DirectAbstractDeclaratorOpt *DirectAbstractDeclaratorOpt
Expression *Expression
ExpressionOpt *ExpressionOpt
ParameterTypeListOpt *ParameterTypeListOpt
Token xc.Token
Token2 xc.Token
Token3 xc.Token
TypeQualifierList *TypeQualifierList
TypeQualifierListOpt *TypeQualifierListOpt
// contains filtered or unexported fields
}
DirectAbstractDeclarator represents data reduced by productions:
DirectAbstractDeclarator:
'(' AbstractDeclarator ')'
| DirectAbstractDeclaratorOpt '[' ExpressionOpt ']' // Case 1
| DirectAbstractDeclaratorOpt '[' TypeQualifierList ExpressionOpt ']' // Case 2
| DirectAbstractDeclaratorOpt '[' "static" TypeQualifierListOpt Expression ']' // Case 3
| DirectAbstractDeclaratorOpt '[' TypeQualifierList "static" Expression ']' // Case 4
| DirectAbstractDeclaratorOpt '[' '*' ']' // Case 5
| '(' ParameterTypeListOpt ')' // Case 6
| DirectAbstractDeclarator '(' ParameterTypeListOpt ')' // Case 7
Example ¶
fmt.Println(exampleAST(189, "\U00100001 ( _Bool ( * ) ("))
Output: &cc.DirectAbstractDeclarator{ · AbstractDeclarator: &cc.AbstractDeclarator{ · · Pointer: &cc.Pointer{ · · · Token: example189.c:1:12: '*', · · }, · }, · Token: example189.c:1:10: '(', · Token2: example189.c:1:14: ')', }
Example (Case1) ¶
fmt.Println(exampleAST(190, "\U00100001 ( _Bool [ ] ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 1, · Token: example190.c:1:10: '[', · Token2: example190.c:1:12: ']', }
Example (Case2) ¶
fmt.Println(exampleAST(191, "\U00100001 ( _Bool [ const ] ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 2, · Token: example191.c:1:10: '[', · Token2: example191.c:1:18: ']', · TypeQualifierList: &cc.TypeQualifierList{ · · TypeQualifier: &cc.TypeQualifier{ · · · Token: example191.c:1:12: CONST "const", · · }, · }, }
Example (Case3) ¶
fmt.Println(exampleAST(192, "\U00100001 ( _Bool [ static 'a' ] ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 3, · Expression: &cc.Expression{ · · Type: int, · · Value: 97, · · Case: 1, · · Token: example192.c:1:19: CHARCONST "'a'", · }, · Token: example192.c:1:10: '[', · Token2: example192.c:1:12: STATIC "static", · Token3: example192.c:1:23: ']', }
Example (Case4) ¶
fmt.Println(exampleAST(193, "\U00100001 ( _Bool [ const static 'a' ] ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 4, · Expression: &cc.Expression{ · · Type: int, · · Value: 97, · · Case: 1, · · Token: example193.c:1:25: CHARCONST "'a'", · }, · Token: example193.c:1:10: '[', · Token2: example193.c:1:18: STATIC "static", · Token3: example193.c:1:29: ']', · TypeQualifierList: &cc.TypeQualifierList{ · · TypeQualifier: &cc.TypeQualifier{ · · · Token: example193.c:1:12: CONST "const", · · }, · }, }
Example (Case5) ¶
fmt.Println(exampleAST(194, "\U00100001 ( _Bool [ * ] ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 5, · Token: example194.c:1:10: '[', · Token2: example194.c:1:12: '*', · Token3: example194.c:1:14: ']', }
Example (Case6) ¶
fmt.Println(exampleAST(196, "\U00100001 ( _Bool ( ) ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 6, · Token: example196.c:1:10: '(', · Token2: example196.c:1:12: ')', }
Example (Case7) ¶
fmt.Println(exampleAST(198, "\U00100001 ( _Bool ( ) ( ) ("))
Output: &cc.DirectAbstractDeclarator{ · Case: 7, · DirectAbstractDeclarator: &cc.DirectAbstractDeclarator{ · · Case: 6, · · Token: example198.c:1:10: '(', · · Token2: example198.c:1:12: ')', · }, · Token: example198.c:1:14: '(', · Token2: example198.c:1:16: ')', }
func (*DirectAbstractDeclarator) Pos ¶
func (n *DirectAbstractDeclarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DirectAbstractDeclarator) String ¶
func (n *DirectAbstractDeclarator) String() string
String implements fmt.Stringer.
type DirectAbstractDeclaratorOpt ¶
type DirectAbstractDeclaratorOpt struct {
DirectAbstractDeclarator *DirectAbstractDeclarator
}
DirectAbstractDeclaratorOpt represents data reduced by productions:
DirectAbstractDeclaratorOpt:
/* empty */
| DirectAbstractDeclarator // Case 1
Example ¶
fmt.Println(exampleAST(199, "\U00100001 ( _Bool [") == (*DirectAbstractDeclaratorOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(200, "\U00100001 ( _Bool ( ) ["))
Output: &cc.DirectAbstractDeclaratorOpt{ · DirectAbstractDeclarator: &cc.DirectAbstractDeclarator{ · · Case: 6, · · Token: example200.c:1:10: '(', · · Token2: example200.c:1:12: ')', · }, }
func (*DirectAbstractDeclaratorOpt) Pos ¶
func (n *DirectAbstractDeclaratorOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DirectAbstractDeclaratorOpt) String ¶
func (n *DirectAbstractDeclaratorOpt) String() string
String implements fmt.Stringer.
type DirectDeclarator ¶
type DirectDeclarator struct {
EnumVal interface{} // Non nil if DD declares an enumeration constant.
Case int
Declarator *Declarator
DirectDeclarator *DirectDeclarator
Expression *Expression
ExpressionOpt *ExpressionOpt
IdentifierListOpt *IdentifierListOpt
ParameterTypeList *ParameterTypeList
Token xc.Token
Token2 xc.Token
Token3 xc.Token
TypeQualifierList *TypeQualifierList
TypeQualifierListOpt *TypeQualifierListOpt
// contains filtered or unexported fields
}
DirectDeclarator represents data reduced by productions:
DirectDeclarator:
IDENTIFIER
| '(' Declarator ')' // Case 1
| DirectDeclarator '[' TypeQualifierListOpt ExpressionOpt ']' // Case 2
| DirectDeclarator '[' "static" TypeQualifierListOpt Expression ']' // Case 3
| DirectDeclarator '[' TypeQualifierList "static" Expression ']' // Case 4
| DirectDeclarator '[' TypeQualifierListOpt '*' ']' // Case 5
| DirectDeclarator '(' ParameterTypeList ')' // Case 6
| DirectDeclarator '(' IdentifierListOpt ')' // Case 7
Example ¶
fmt.Println(exampleAST(152, "\U00100002 a ("))
Output: &cc.DirectDeclarator{ · Token: example152.c:1:2: IDENTIFIER "a", }
Example (Case1) ¶
fmt.Println(exampleAST(153, "\U00100002 ( a ) ("))
Output: &cc.DirectDeclarator{ · Case: 1, · Declarator: &cc.Declarator{ · · Linkage: None, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example153.c:1:4: IDENTIFIER "a", · · }, · }, · Token: example153.c:1:2: '(', · Token2: example153.c:1:6: ')', }
Example (Case2) ¶
fmt.Println(exampleAST(154, "\U00100002 a [ ] ("))
Output: &cc.DirectDeclarator{ · Case: 2, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example154.c:1:2: IDENTIFIER "a", · }, · Token: example154.c:1:4: '[', · Token2: example154.c:1:6: ']', }
Example (Case3) ¶
fmt.Println(exampleAST(155, "\U00100002 a [ static 'b' ] ("))
Output: &cc.DirectDeclarator{ · Case: 3, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example155.c:1:2: IDENTIFIER "a", · }, · Expression: &cc.Expression{ · · Type: int, · · Value: 98, · · Case: 1, · · Token: example155.c:1:13: CHARCONST "'b'", · }, · Token: example155.c:1:4: '[', · Token2: example155.c:1:6: STATIC "static", · Token3: example155.c:1:17: ']', }
Example (Case4) ¶
fmt.Println(exampleAST(156, "\U00100002 a [ const static 'b' ] ("))
Output: &cc.DirectDeclarator{ · Case: 4, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example156.c:1:2: IDENTIFIER "a", · }, · Expression: &cc.Expression{ · · Type: int, · · Value: 98, · · Case: 1, · · Token: example156.c:1:19: CHARCONST "'b'", · }, · Token: example156.c:1:4: '[', · Token2: example156.c:1:12: STATIC "static", · Token3: example156.c:1:23: ']', · TypeQualifierList: &cc.TypeQualifierList{ · · TypeQualifier: &cc.TypeQualifier{ · · · Token: example156.c:1:6: CONST "const", · · }, · }, }
Example (Case5) ¶
fmt.Println(exampleAST(157, "\U00100002 a [ * ] ("))
Output: &cc.DirectDeclarator{ · Case: 5, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example157.c:1:2: IDENTIFIER "a", · }, · Token: example157.c:1:4: '[', · Token2: example157.c:1:6: '*', · Token3: example157.c:1:8: ']', }
Example (Case6) ¶
fmt.Println(exampleAST(159, "\U00100002 a ( auto ) ("))
Output: &cc.DirectDeclarator{ · Case: 6, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example159.c:1:2: IDENTIFIER "a", · }, · ParameterTypeList: &cc.ParameterTypeList{ · · ParameterList: &cc.ParameterList{ · · · ParameterDeclaration: &cc.ParameterDeclaration{ · · · · Case: 1, · · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · · Case: 3, · · · · · · Token: example159.c:1:6: AUTO "auto", · · · · · }, · · · · }, · · · }, · · }, · }, · Token: example159.c:1:4: '(', · Token2: example159.c:1:11: ')', }
Example (Case7) ¶
fmt.Println(exampleAST(160, "\U00100002 a ( ) ("))
Output: &cc.DirectDeclarator{ · Case: 7, · DirectDeclarator: &cc.DirectDeclarator{ · · Token: example160.c:1:2: IDENTIFIER "a", · }, · Token: example160.c:1:4: '(', · Token2: example160.c:1:6: ')', }
func (*DirectDeclarator) DeclarationScope ¶
func (n *DirectDeclarator) DeclarationScope() *Bindings
DeclarationScope returns the scope a name declared by n is in. If n does not declare a name or n declares a name of a built in type, DeclarationScope returns nil.
func (*DirectDeclarator) Pos ¶
func (n *DirectDeclarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*DirectDeclarator) String ¶
func (n *DirectDeclarator) String() string
String implements fmt.Stringer.
func (*DirectDeclarator) TopDeclarator ¶
func (n *DirectDeclarator) TopDeclarator() *Declarator
TopDeclarator returns the top level Declarator associated with n.
type ElifGroup ¶
type ElifGroup struct {
GroupListOpt *GroupListOpt
PPTokenList PPTokenList
Token xc.Token
Token2 xc.Token
}
ElifGroup represents data reduced by production:
ElifGroup:
PPELIF PPTokenList '\n' GroupListOpt
Example ¶
fmt.Println(exampleAST(302, "\U00100000 \n#if other_a \n#elif other_b \n#elif"))
Output: &cc.ElifGroup{ · PPTokenList: []xc.Token{ // len 4 · · 0: example302.c:3:6: ' ', · · 1: example302.c:3:7: IDENTIFIER "other_b", · · 2: example302.c:3:14: ' ', · · 3: example302.c:3:16: ' ', · }, · Token: example302.c:3:2: PPELIF, · Token2: example302.c:3:16: '\n', }
type ElifGroupList ¶
type ElifGroupList struct {
Case int
ElifGroup *ElifGroup
ElifGroupList *ElifGroupList
}
ElifGroupList represents data reduced by productions:
ElifGroupList:
ElifGroup
| ElifGroupList ElifGroup // Case 1
Example ¶
fmt.Println(exampleAST(298, "\U00100000 \n#if other_a \n#elif other_b \n#elif"))
Output: &cc.ElifGroupList{ · ElifGroup: &cc.ElifGroup{ · · PPTokenList: []xc.Token{ // len 4 · · · 0: example298.c:3:6: ' ', · · · 1: example298.c:3:7: IDENTIFIER "other_b", · · · 2: example298.c:3:14: ' ', · · · 3: example298.c:3:16: ' ', · · }, · · Token: example298.c:3:2: PPELIF, · · Token2: example298.c:3:16: '\n', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(299, "\U00100000 \n#if other_a \n#elif other_b \n#elif other_c \n#elif"))
Output: &cc.ElifGroupList{ · ElifGroup: &cc.ElifGroup{ · · PPTokenList: []xc.Token{ // len 4 · · · 0: example299.c:3:6: ' ', · · · 1: example299.c:3:7: IDENTIFIER "other_b", · · · 2: example299.c:3:14: ' ', · · · 3: example299.c:3:16: ' ', · · }, · · Token: example299.c:3:2: PPELIF, · · Token2: example299.c:3:16: '\n', · }, · ElifGroupList: &cc.ElifGroupList{ · · Case: 1, · · ElifGroup: &cc.ElifGroup{ · · · PPTokenList: []xc.Token{ // len 4 · · · · 0: example299.c:4:6: ' ', · · · · 1: example299.c:4:7: IDENTIFIER "other_c", · · · · 2: example299.c:4:14: ' ', · · · · 3: example299.c:4:16: ' ', · · · }, · · · Token: example299.c:4:2: PPELIF, · · · Token2: example299.c:4:16: '\n', · · }, · }, }
func (*ElifGroupList) Pos ¶
func (n *ElifGroupList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ElifGroupList) String ¶
func (n *ElifGroupList) String() string
String implements fmt.Stringer.
type ElifGroupListOpt ¶
type ElifGroupListOpt struct {
ElifGroupList *ElifGroupList
}
ElifGroupListOpt represents data reduced by productions:
ElifGroupListOpt:
/* empty */
| ElifGroupList // Case 1
Example ¶
fmt.Println(exampleAST(300, "\U00100000 \n#if other_a \n#else") == (*ElifGroupListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(301, "\U00100000 \n#if other_a \n#elif other_b \n#else"))
Output: &cc.ElifGroupListOpt{ · ElifGroupList: &cc.ElifGroupList{ · · ElifGroup: &cc.ElifGroup{ · · · PPTokenList: []xc.Token{ // len 4 · · · · 0: example301.c:3:6: ' ', · · · · 1: example301.c:3:7: IDENTIFIER "other_b", · · · · 2: example301.c:3:14: ' ', · · · · 3: example301.c:3:16: ' ', · · · }, · · · Token: example301.c:3:2: PPELIF, · · · Token2: example301.c:3:16: '\n', · · }, · }, }
func (*ElifGroupListOpt) Pos ¶
func (n *ElifGroupListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ElifGroupListOpt) String ¶
func (n *ElifGroupListOpt) String() string
String implements fmt.Stringer.
type ElseGroup ¶
type ElseGroup struct {
GroupListOpt *GroupListOpt
Token xc.Token
Token2 xc.Token
}
ElseGroup represents data reduced by production:
ElseGroup:
PPELSE '\n' GroupListOpt
Example ¶
fmt.Println(exampleAST(303, "\U00100000 \n#if other_a \n#else \n#endif"))
Output: &cc.ElseGroup{ · Token: example303.c:3:2: PPELSE, · Token2: example303.c:3:8: '\n', }
type ElseGroupOpt ¶
type ElseGroupOpt struct {
ElseGroup *ElseGroup
}
ElseGroupOpt represents data reduced by productions:
ElseGroupOpt:
/* empty */
| ElseGroup // Case 1
Example ¶
fmt.Println(exampleAST(304, "\U00100000 \n#if other_a \n#endif") == (*ElseGroupOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(305, "\U00100000 \n#if other_a \n#else \n#endif"))
Output: &cc.ElseGroupOpt{ · ElseGroup: &cc.ElseGroup{ · · Token: example305.c:3:2: PPELSE, · · Token2: example305.c:3:8: '\n', · }, }
func (*ElseGroupOpt) Pos ¶
func (n *ElseGroupOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ElseGroupOpt) String ¶
func (n *ElseGroupOpt) String() string
String implements fmt.Stringer.
type EndifLine ¶
EndifLine represents data reduced by production:
EndifLine:
PPENDIF
Example ¶
fmt.Println(exampleAST(306, "\U00100000 \n#if other_a \n#endif"))
Output: &cc.EndifLine{ · Token: example306.c:3:2: PPENDIF, }
type EnumConstant ¶
type EnumConstant struct {
DefTok xc.Token // Enumeration constant name definition token.
Value interface{} // Value represented by name. Type of Value is C int.
Tokens []xc.Token // The tokens the constant expression consists of.
}
EnumConstant represents the name/value pair defined by an Enumerator.
type EnumSpecifier ¶
type EnumSpecifier struct {
Case int
CommaOpt *CommaOpt
EnumeratorList *EnumeratorList
IdentifierOpt *IdentifierOpt
Token xc.Token
Token2 xc.Token
Token3 xc.Token
// contains filtered or unexported fields
}
EnumSpecifier represents data reduced by productions:
EnumSpecifier:
"enum" IdentifierOpt '{' EnumeratorList CommaOpt '}'
| "enum" IDENTIFIER // Case 1
Example ¶
fmt.Println(exampleAST(138, "\U00100002 enum { a } ("))
Output: &cc.EnumSpecifier{ · EnumeratorList: &cc.EnumeratorList{ · · Enumerator: &cc.Enumerator{ · · · EnumerationConstant: &cc.EnumerationConstant{ · · · · Token: example138.c:1:9: IDENTIFIER "a", · · · }, · · }, · }, · Token: example138.c:1:2: ENUM "enum", · Token2: example138.c:1:7: '{', · Token3: example138.c:1:11: '}', }
Example (Case1) ¶
fmt.Println(exampleAST(139, "\U00100002 enum a ("))
Output: &cc.EnumSpecifier{ · Case: 1, · Token: example139.c:1:2: ENUM "enum", · Token2: example139.c:1:7: IDENTIFIER "a", }
func (*EnumSpecifier) Pos ¶
func (n *EnumSpecifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*EnumSpecifier) String ¶
func (n *EnumSpecifier) String() string
String implements fmt.Stringer.
type EnumerationConstant ¶
EnumerationConstant represents data reduced by production:
EnumerationConstant:
IDENTIFIER
Example ¶
fmt.Println(exampleAST(7, "\U00100002 enum { a ,"))
Output: &cc.EnumerationConstant{ · Token: example7.c:1:9: IDENTIFIER "a", }
func (*EnumerationConstant) Pos ¶
func (n *EnumerationConstant) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*EnumerationConstant) String ¶
func (n *EnumerationConstant) String() string
String implements fmt.Stringer.
type Enumerator ¶
type Enumerator struct {
Value interface{} // Enumerator's value.
Case int
ConstantExpression *ConstantExpression
EnumerationConstant *EnumerationConstant
Token xc.Token
}
Enumerator represents data reduced by productions:
Enumerator:
EnumerationConstant
| EnumerationConstant '=' ConstantExpression // Case 1
Example ¶
fmt.Println(exampleAST(142, "\U00100002 enum { a ,"))
Output: &cc.Enumerator{ · EnumerationConstant: &cc.EnumerationConstant{ · · Token: example142.c:1:9: IDENTIFIER "a", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(143, "\U00100002 enum { a = 'b' ,"))
Output: &cc.Enumerator{ · Value: 98, · Case: 1, · ConstantExpression: &cc.ConstantExpression{ · · Type: int, · · Value: 98, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 98, · · · Case: 1, · · · Token: example143.c:1:13: CHARCONST "'b'", · · }, · }, · EnumerationConstant: &cc.EnumerationConstant{ · · Token: example143.c:1:9: IDENTIFIER "a", · }, · Token: example143.c:1:11: '=', }
func (*Enumerator) Pos ¶
func (n *Enumerator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type EnumeratorList ¶
type EnumeratorList struct {
Case int
Enumerator *Enumerator
EnumeratorList *EnumeratorList
Token xc.Token
}
EnumeratorList represents data reduced by productions:
EnumeratorList:
Enumerator
| EnumeratorList ',' Enumerator // Case 1
Example ¶
fmt.Println(exampleAST(140, "\U00100002 enum { a ,"))
Output: &cc.EnumeratorList{ · Enumerator: &cc.Enumerator{ · · EnumerationConstant: &cc.EnumerationConstant{ · · · Token: example140.c:1:9: IDENTIFIER "a", · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(141, "\U00100002 enum { a , b ,"))
Output: &cc.EnumeratorList{ · Enumerator: &cc.Enumerator{ · · EnumerationConstant: &cc.EnumerationConstant{ · · · Token: example141.c:1:9: IDENTIFIER "a", · · }, · }, · EnumeratorList: &cc.EnumeratorList{ · · Case: 1, · · Enumerator: &cc.Enumerator{ · · · Value: 1, · · · EnumerationConstant: &cc.EnumerationConstant{ · · · · Token: example141.c:1:13: IDENTIFIER "b", · · · }, · · }, · · Token: example141.c:1:11: ',', · }, }
func (*EnumeratorList) Pos ¶
func (n *EnumeratorList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*EnumeratorList) String ¶
func (n *EnumeratorList) String() string
String implements fmt.Stringer.
type Expression ¶
type Expression struct {
BinOpType Type // The type operands of binary expression are coerced into, if different from Type.
Type Type // Type of expression.
Value interface{} // Non nil for certain constant expressions.
ArgumentExpressionListOpt *ArgumentExpressionListOpt
Case int
CommaOpt *CommaOpt
CompoundStatement *CompoundStatement
Expression *Expression
Expression2 *Expression
ExpressionList *ExpressionList
InitializerList *InitializerList
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
TypeName *TypeName
// contains filtered or unexported fields
}
Expression represents data reduced by productions:
Expression:
IDENTIFIER
| CHARCONST // Case 1
| FLOATCONST // Case 2
| INTCONST // Case 3
| LONGCHARCONST // Case 4
| LONGSTRINGLITERAL // Case 5
| STRINGLITERAL // Case 6
| '(' ExpressionList ')' // Case 7
| Expression '[' ExpressionList ']' // Case 8
| Expression '(' ArgumentExpressionListOpt ')' // Case 9
| Expression '.' IDENTIFIER // Case 10
| Expression "->" IDENTIFIER // Case 11
| Expression "++" // Case 12
| Expression "--" // Case 13
| '(' TypeName ')' '{' InitializerList CommaOpt '}' // Case 14
| "++" Expression // Case 15
| "--" Expression // Case 16
| '&' Expression // Case 17
| '*' Expression // Case 18
| '+' Expression // Case 19
| '-' Expression // Case 20
| '~' Expression // Case 21
| '!' Expression // Case 22
| "sizeof" Expression // Case 23
| "sizeof" '(' TypeName ')' // Case 24
| '(' TypeName ')' Expression // Case 25
| Expression '*' Expression // Case 26
| Expression '/' Expression // Case 27
| Expression '%' Expression // Case 28
| Expression '+' Expression // Case 29
| Expression '-' Expression // Case 30
| Expression "<<" Expression // Case 31
| Expression ">>" Expression // Case 32
| Expression '<' Expression // Case 33
| Expression '>' Expression // Case 34
| Expression "<=" Expression // Case 35
| Expression ">=" Expression // Case 36
| Expression "==" Expression // Case 37
| Expression "!=" Expression // Case 38
| Expression '&' Expression // Case 39
| Expression '^' Expression // Case 40
| Expression '|' Expression // Case 41
| Expression "&&" Expression // Case 42
| Expression "||" Expression // Case 43
| Expression '?' ExpressionList ':' Expression // Case 44
| Expression '=' Expression // Case 45
| Expression "*=" Expression // Case 46
| Expression "/=" Expression // Case 47
| Expression "%=" Expression // Case 48
| Expression "+=" Expression // Case 49
| Expression "-=" Expression // Case 50
| Expression "<<=" Expression // Case 51
| Expression ">>=" Expression // Case 52
| Expression "&=" Expression // Case 53
| Expression "^=" Expression // Case 54
| Expression "|=" Expression // Case 55
| "_Alignof" '(' TypeName ')' // Case 56
| '(' CompoundStatement ')' // Case 57
| "&&" IDENTIFIER // Case 58
| Expression '?' ':' Expression // Case 59
Example ¶
fmt.Println(exampleAST(12, "\U00100001 a"))
Output: &cc.Expression{ · Token: example12.c:1:2: IDENTIFIER "a", }
Example (Case01) ¶
fmt.Println(exampleAST(13, "\U00100001 'a'"))
Output: &cc.Expression{ · Case: 1, · Token: example13.c:1:2: CHARCONST "'a'", }
Example (Case02) ¶
fmt.Println(exampleAST(14, "\U00100001 1.97"))
Output: &cc.Expression{ · Case: 2, · Token: example14.c:1:2: FLOATCONST "1.97", }
Example (Case03) ¶
fmt.Println(exampleAST(15, "\U00100001 97"))
Output: &cc.Expression{ · Case: 3, · Token: example15.c:1:2: INTCONST "97", }
Example (Case04) ¶
fmt.Println(exampleAST(16, "\U00100001 L'a'"))
Output: &cc.Expression{ · Case: 4, · Token: example16.c:1:2: LONGCHARCONST "L'a'", }
Example (Case05) ¶
fmt.Println(exampleAST(17, "\U00100001 L\"a\""))
Output: &cc.Expression{ · Case: 5, · Token: example17.c:1:2: LONGSTRINGLITERAL "L\"a\"", }
Example (Case06) ¶
fmt.Println(exampleAST(18, "\U00100001 \"a\""))
Output: &cc.Expression{ · Case: 6, · Token: example18.c:1:2: STRINGLITERAL "\"a\"", }
Example (Case07) ¶
fmt.Println(exampleAST(19, "\U00100001 ( 'a' )"))
Output: &cc.Expression{ · Case: 7, · ExpressionList: &cc.ExpressionList{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example19.c:1:4: CHARCONST "'a'", · · }, · }, · Token: example19.c:1:2: '(', · Token2: example19.c:1:8: ')', }
Example (Case08) ¶
fmt.Println(exampleAST(20, "\U00100001 'a' [ 'b' ]"))
Output: &cc.Expression{ · Case: 8, · Expression: &cc.Expression{ · · Case: 1, · · Token: example20.c:1:2: CHARCONST "'a'", · }, · ExpressionList: &cc.ExpressionList{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example20.c:1:8: CHARCONST "'b'", · · }, · }, · Token: example20.c:1:6: '[', · Token2: example20.c:1:12: ']', }
Example (Case09) ¶
fmt.Println(exampleAST(21, "\U00100001 'a' ( )"))
Output: &cc.Expression{ · Case: 9, · Expression: &cc.Expression{ · · Case: 1, · · Token: example21.c:1:2: CHARCONST "'a'", · }, · Token: example21.c:1:6: '(', · Token2: example21.c:1:8: ')', }
Example (Case10) ¶
fmt.Println(exampleAST(22, "\U00100001 'a' . b"))
Output: &cc.Expression{ · Case: 10, · Expression: &cc.Expression{ · · Case: 1, · · Token: example22.c:1:2: CHARCONST "'a'", · }, · Token: example22.c:1:6: '.', · Token2: example22.c:1:8: IDENTIFIER "b", }
Example (Case11) ¶
fmt.Println(exampleAST(23, "\U00100001 'a' -> b"))
Output: &cc.Expression{ · Case: 11, · Expression: &cc.Expression{ · · Case: 1, · · Token: example23.c:1:2: CHARCONST "'a'", · }, · Token: example23.c:1:6: ARROW, · Token2: example23.c:1:9: IDENTIFIER "b", }
Example (Case12) ¶
fmt.Println(exampleAST(24, "\U00100001 'a' ++"))
Output: &cc.Expression{ · Case: 12, · Expression: &cc.Expression{ · · Case: 1, · · Token: example24.c:1:2: CHARCONST "'a'", · }, · Token: example24.c:1:6: INC, }
Example (Case13) ¶
fmt.Println(exampleAST(25, "\U00100001 'a' --"))
Output: &cc.Expression{ · Case: 13, · Expression: &cc.Expression{ · · Case: 1, · · Token: example25.c:1:2: CHARCONST "'a'", · }, · Token: example25.c:1:6: DEC, }
Example (Case14) ¶
fmt.Println(exampleAST(26, "\U00100001 ( _Bool ) { }"))
Output: &cc.Expression{ · Case: 14, · Token: example26.c:1:2: '(', · Token2: example26.c:1:10: ')', · Token3: example26.c:1:12: '{', · Token4: example26.c:1:14: '}', · TypeName: &cc.TypeName{ · · Type: bool, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example26.c:1:4: BOOL "_Bool", · · · }, · · }, · }, }
Example (Case15) ¶
fmt.Println(exampleAST(27, "\U00100001 ++ 'a'"))
Output: &cc.Expression{ · Case: 15, · Expression: &cc.Expression{ · · Case: 1, · · Token: example27.c:1:5: CHARCONST "'a'", · }, · Token: example27.c:1:2: INC, }
Example (Case16) ¶
fmt.Println(exampleAST(28, "\U00100001 -- 'a'"))
Output: &cc.Expression{ · Case: 16, · Expression: &cc.Expression{ · · Case: 1, · · Token: example28.c:1:5: CHARCONST "'a'", · }, · Token: example28.c:1:2: DEC, }
Example (Case17) ¶
fmt.Println(exampleAST(29, "\U00100001 & 'a'"))
Output: &cc.Expression{ · Case: 17, · Expression: &cc.Expression{ · · Case: 1, · · Token: example29.c:1:4: CHARCONST "'a'", · }, · Token: example29.c:1:2: '&', }
Example (Case18) ¶
fmt.Println(exampleAST(30, "\U00100001 * 'a'"))
Output: &cc.Expression{ · Case: 18, · Expression: &cc.Expression{ · · Case: 1, · · Token: example30.c:1:4: CHARCONST "'a'", · }, · Token: example30.c:1:2: '*', }
Example (Case19) ¶
fmt.Println(exampleAST(31, "\U00100001 + 'a'"))
Output: &cc.Expression{ · Case: 19, · Expression: &cc.Expression{ · · Case: 1, · · Token: example31.c:1:4: CHARCONST "'a'", · }, · Token: example31.c:1:2: '+', }
Example (Case20) ¶
fmt.Println(exampleAST(32, "\U00100001 - 'a'"))
Output: &cc.Expression{ · Case: 20, · Expression: &cc.Expression{ · · Case: 1, · · Token: example32.c:1:4: CHARCONST "'a'", · }, · Token: example32.c:1:2: '-', }
Example (Case21) ¶
fmt.Println(exampleAST(33, "\U00100001 ~ 'a'"))
Output: &cc.Expression{ · Case: 21, · Expression: &cc.Expression{ · · Case: 1, · · Token: example33.c:1:4: CHARCONST "'a'", · }, · Token: example33.c:1:2: '~', }
Example (Case22) ¶
fmt.Println(exampleAST(34, "\U00100001 ! 'a'"))
Output: &cc.Expression{ · Case: 22, · Expression: &cc.Expression{ · · Case: 1, · · Token: example34.c:1:4: CHARCONST "'a'", · }, · Token: example34.c:1:2: '!', }
Example (Case23) ¶
fmt.Println(exampleAST(35, "\U00100001 sizeof 'a'"))
Output: &cc.Expression{ · Case: 23, · Expression: &cc.Expression{ · · Case: 1, · · Token: example35.c:1:9: CHARCONST "'a'", · }, · Token: example35.c:1:2: SIZEOF "sizeof", }
Example (Case24) ¶
fmt.Println(exampleAST(36, "\U00100001 sizeof ( _Bool )"))
Output: &cc.Expression{ · Case: 24, · Token: example36.c:1:2: SIZEOF "sizeof", · Token2: example36.c:1:9: '(', · Token3: example36.c:1:17: ')', · TypeName: &cc.TypeName{ · · Type: bool, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example36.c:1:11: BOOL "_Bool", · · · }, · · }, · }, }
Example (Case25) ¶
fmt.Println(exampleAST(37, "\U00100001 ( _Bool ) 'a'"))
Output: &cc.Expression{ · Case: 25, · Expression: &cc.Expression{ · · Case: 1, · · Token: example37.c:1:12: CHARCONST "'a'", · }, · Token: example37.c:1:2: '(', · Token2: example37.c:1:10: ')', · TypeName: &cc.TypeName{ · · Type: bool, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example37.c:1:4: BOOL "_Bool", · · · }, · · }, · }, }
Example (Case26) ¶
fmt.Println(exampleAST(38, "\U00100001 'a' * 'b'"))
Output: &cc.Expression{ · Case: 26, · Expression: &cc.Expression{ · · Case: 1, · · Token: example38.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example38.c:1:8: CHARCONST "'b'", · }, · Token: example38.c:1:6: '*', }
Example (Case27) ¶
fmt.Println(exampleAST(39, "\U00100001 'a' / 'b'"))
Output: &cc.Expression{ · Case: 27, · Expression: &cc.Expression{ · · Case: 1, · · Token: example39.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example39.c:1:8: CHARCONST "'b'", · }, · Token: example39.c:1:6: '/', }
Example (Case28) ¶
fmt.Println(exampleAST(40, "\U00100001 'a' % 'b'"))
Output: &cc.Expression{ · Case: 28, · Expression: &cc.Expression{ · · Case: 1, · · Token: example40.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example40.c:1:8: CHARCONST "'b'", · }, · Token: example40.c:1:6: '%', }
Example (Case29) ¶
fmt.Println(exampleAST(41, "\U00100001 'a' + 'b'"))
Output: &cc.Expression{ · Case: 29, · Expression: &cc.Expression{ · · Case: 1, · · Token: example41.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example41.c:1:8: CHARCONST "'b'", · }, · Token: example41.c:1:6: '+', }
Example (Case30) ¶
fmt.Println(exampleAST(42, "\U00100001 'a' - 'b'"))
Output: &cc.Expression{ · Case: 30, · Expression: &cc.Expression{ · · Case: 1, · · Token: example42.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example42.c:1:8: CHARCONST "'b'", · }, · Token: example42.c:1:6: '-', }
Example (Case31) ¶
fmt.Println(exampleAST(43, "\U00100001 'a' << 'b'"))
Output: &cc.Expression{ · Case: 31, · Expression: &cc.Expression{ · · Case: 1, · · Token: example43.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example43.c:1:9: CHARCONST "'b'", · }, · Token: example43.c:1:6: LSH, }
Example (Case32) ¶
fmt.Println(exampleAST(44, "\U00100001 'a' >> 'b'"))
Output: &cc.Expression{ · Case: 32, · Expression: &cc.Expression{ · · Case: 1, · · Token: example44.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example44.c:1:9: CHARCONST "'b'", · }, · Token: example44.c:1:6: RSH, }
Example (Case33) ¶
fmt.Println(exampleAST(45, "\U00100001 'a' < 'b'"))
Output: &cc.Expression{ · Case: 33, · Expression: &cc.Expression{ · · Case: 1, · · Token: example45.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example45.c:1:8: CHARCONST "'b'", · }, · Token: example45.c:1:6: '<', }
Example (Case34) ¶
fmt.Println(exampleAST(46, "\U00100001 'a' > 'b'"))
Output: &cc.Expression{ · Case: 34, · Expression: &cc.Expression{ · · Case: 1, · · Token: example46.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example46.c:1:8: CHARCONST "'b'", · }, · Token: example46.c:1:6: '>', }
Example (Case35) ¶
fmt.Println(exampleAST(47, "\U00100001 'a' <= 'b'"))
Output: &cc.Expression{ · Case: 35, · Expression: &cc.Expression{ · · Case: 1, · · Token: example47.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example47.c:1:9: CHARCONST "'b'", · }, · Token: example47.c:1:6: LEQ, }
Example (Case36) ¶
fmt.Println(exampleAST(48, "\U00100001 'a' >= 'b'"))
Output: &cc.Expression{ · Case: 36, · Expression: &cc.Expression{ · · Case: 1, · · Token: example48.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example48.c:1:9: CHARCONST "'b'", · }, · Token: example48.c:1:6: GEQ, }
Example (Case37) ¶
fmt.Println(exampleAST(49, "\U00100001 'a' == 'b'"))
Output: &cc.Expression{ · Case: 37, · Expression: &cc.Expression{ · · Case: 1, · · Token: example49.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example49.c:1:9: CHARCONST "'b'", · }, · Token: example49.c:1:6: EQ, }
Example (Case38) ¶
fmt.Println(exampleAST(50, "\U00100001 'a' != 'b'"))
Output: &cc.Expression{ · Case: 38, · Expression: &cc.Expression{ · · Case: 1, · · Token: example50.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example50.c:1:9: CHARCONST "'b'", · }, · Token: example50.c:1:6: NEQ, }
Example (Case39) ¶
fmt.Println(exampleAST(51, "\U00100001 'a' & 'b'"))
Output: &cc.Expression{ · Case: 39, · Expression: &cc.Expression{ · · Case: 1, · · Token: example51.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example51.c:1:8: CHARCONST "'b'", · }, · Token: example51.c:1:6: '&', }
Example (Case40) ¶
fmt.Println(exampleAST(52, "\U00100001 'a' ^ 'b'"))
Output: &cc.Expression{ · Case: 40, · Expression: &cc.Expression{ · · Case: 1, · · Token: example52.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example52.c:1:8: CHARCONST "'b'", · }, · Token: example52.c:1:6: '^', }
Example (Case41) ¶
fmt.Println(exampleAST(53, "\U00100001 'a' | 'b'"))
Output: &cc.Expression{ · Case: 41, · Expression: &cc.Expression{ · · Case: 1, · · Token: example53.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example53.c:1:8: CHARCONST "'b'", · }, · Token: example53.c:1:6: '|', }
Example (Case42) ¶
fmt.Println(exampleAST(54, "\U00100001 'a' && 'b'"))
Output: &cc.Expression{ · Case: 42, · Expression: &cc.Expression{ · · Case: 1, · · Token: example54.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example54.c:1:9: CHARCONST "'b'", · }, · Token: example54.c:1:6: ANDAND, }
Example (Case43) ¶
fmt.Println(exampleAST(55, "\U00100001 'a' || 'b'"))
Output: &cc.Expression{ · Case: 43, · Expression: &cc.Expression{ · · Case: 1, · · Token: example55.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example55.c:1:9: CHARCONST "'b'", · }, · Token: example55.c:1:6: OROR, }
Example (Case44) ¶
fmt.Println(exampleAST(56, "\U00100001 'a' ? 'b' : 'c'"))
Output: &cc.Expression{ · Case: 44, · Expression: &cc.Expression{ · · Case: 1, · · Token: example56.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example56.c:1:14: CHARCONST "'c'", · }, · ExpressionList: &cc.ExpressionList{ · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example56.c:1:8: CHARCONST "'b'", · · }, · }, · Token: example56.c:1:6: '?', · Token2: example56.c:1:12: ':', }
Example (Case45) ¶
fmt.Println(exampleAST(57, "\U00100001 'a' = 'b'"))
Output: &cc.Expression{ · Case: 45, · Expression: &cc.Expression{ · · Case: 1, · · Token: example57.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example57.c:1:8: CHARCONST "'b'", · }, · Token: example57.c:1:6: '=', }
Example (Case46) ¶
fmt.Println(exampleAST(58, "\U00100001 'a' *= 'b'"))
Output: &cc.Expression{ · Case: 46, · Expression: &cc.Expression{ · · Case: 1, · · Token: example58.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example58.c:1:9: CHARCONST "'b'", · }, · Token: example58.c:1:6: MULASSIGN, }
Example (Case47) ¶
fmt.Println(exampleAST(59, "\U00100001 'a' /= 'b'"))
Output: &cc.Expression{ · Case: 47, · Expression: &cc.Expression{ · · Case: 1, · · Token: example59.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example59.c:1:9: CHARCONST "'b'", · }, · Token: example59.c:1:6: DIVASSIGN, }
Example (Case48) ¶
fmt.Println(exampleAST(60, "\U00100001 'a' %= 'b'"))
Output: &cc.Expression{ · Case: 48, · Expression: &cc.Expression{ · · Case: 1, · · Token: example60.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example60.c:1:9: CHARCONST "'b'", · }, · Token: example60.c:1:6: MODASSIGN, }
Example (Case49) ¶
fmt.Println(exampleAST(61, "\U00100001 'a' += 'b'"))
Output: &cc.Expression{ · Case: 49, · Expression: &cc.Expression{ · · Case: 1, · · Token: example61.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example61.c:1:9: CHARCONST "'b'", · }, · Token: example61.c:1:6: ADDASSIGN, }
Example (Case50) ¶
fmt.Println(exampleAST(62, "\U00100001 'a' -= 'b'"))
Output: &cc.Expression{ · Case: 50, · Expression: &cc.Expression{ · · Case: 1, · · Token: example62.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example62.c:1:9: CHARCONST "'b'", · }, · Token: example62.c:1:6: SUBASSIGN, }
Example (Case51) ¶
fmt.Println(exampleAST(63, "\U00100001 'a' <<= 'b'"))
Output: &cc.Expression{ · Case: 51, · Expression: &cc.Expression{ · · Case: 1, · · Token: example63.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example63.c:1:10: CHARCONST "'b'", · }, · Token: example63.c:1:6: LSHASSIGN, }
Example (Case52) ¶
fmt.Println(exampleAST(64, "\U00100001 'a' >>= 'b'"))
Output: &cc.Expression{ · Case: 52, · Expression: &cc.Expression{ · · Case: 1, · · Token: example64.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example64.c:1:10: CHARCONST "'b'", · }, · Token: example64.c:1:6: RSHASSIGN, }
Example (Case53) ¶
fmt.Println(exampleAST(65, "\U00100001 'a' &= 'b'"))
Output: &cc.Expression{ · Case: 53, · Expression: &cc.Expression{ · · Case: 1, · · Token: example65.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example65.c:1:9: CHARCONST "'b'", · }, · Token: example65.c:1:6: ANDASSIGN, }
Example (Case54) ¶
fmt.Println(exampleAST(66, "\U00100001 'a' ^= 'b'"))
Output: &cc.Expression{ · Case: 54, · Expression: &cc.Expression{ · · Case: 1, · · Token: example66.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example66.c:1:9: CHARCONST "'b'", · }, · Token: example66.c:1:6: XORASSIGN, }
Example (Case55) ¶
fmt.Println(exampleAST(67, "\U00100001 'a' |= 'b'"))
Output: &cc.Expression{ · Case: 55, · Expression: &cc.Expression{ · · Case: 1, · · Token: example67.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example67.c:1:9: CHARCONST "'b'", · }, · Token: example67.c:1:6: ORASSIGN, }
Example (Case56) ¶
fmt.Println(exampleAST(68, "\U00100001 _Alignof ( _Bool )"))
Output: &cc.Expression{ · Case: 56, · Token: example68.c:1:2: ALIGNOF "_Alignof", · Token2: example68.c:1:11: '(', · Token3: example68.c:1:19: ')', · TypeName: &cc.TypeName{ · · Type: bool, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example68.c:1:13: BOOL "_Bool", · · · }, · · }, · }, }
Example (Case57) ¶
fmt.Println(exampleAST(69, "\U00100001 ( { } )"))
Output: &cc.Expression{ · Case: 57, · CompoundStatement: &cc.CompoundStatement{ · · Token: example69.c:1:4: '{', · · Token2: example69.c:1:6: '}', · }, · Token: example69.c:1:2: '(', · Token2: example69.c:1:8: ')', }
Example (Case58) ¶
fmt.Println(exampleAST(70, "\U00100001 && a"))
Output: &cc.Expression{ · Case: 58, · Token: example70.c:1:2: ANDAND, · Token2: example70.c:1:5: IDENTIFIER "a", }
Example (Case59) ¶
fmt.Println(exampleAST(71, "\U00100001 'a' ? : 'b'"))
Output: &cc.Expression{ · Case: 59, · Expression: &cc.Expression{ · · Case: 1, · · Token: example71.c:1:2: CHARCONST "'a'", · }, · Expression2: &cc.Expression{ · · Case: 1, · · Token: example71.c:1:10: CHARCONST "'b'", · }, · Token: example71.c:1:6: '?', · Token2: example71.c:1:8: ':', }
func (*Expression) IdentResolutionScope ¶
func (n *Expression) IdentResolutionScope() *Bindings
IdentResolutionScope returns the scope an identifier is resolved in. If n is not an identifier (n.Case == 0), IdentResolutionScope returns nil.
func (*Expression) Pos ¶
func (n *Expression) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type ExpressionList ¶
type ExpressionList struct {
Type Type // Type of expression.
Value interface{} // Non nil for certain constant expressions.
Case int
Expression *Expression
ExpressionList *ExpressionList
Token xc.Token
}
ExpressionList represents data reduced by productions:
ExpressionList:
Expression
| ExpressionList ',' Expression // Case 1
Example ¶
fmt.Println(exampleAST(74, "\U00100001 ( 'a' )"))
Output: &cc.ExpressionList{ · Expression: &cc.Expression{ · · Case: 1, · · Token: example74.c:1:4: CHARCONST "'a'", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(75, "\U00100001 ( 'a' , 'b' )"))
Output: &cc.ExpressionList{ · Expression: &cc.Expression{ · · Case: 1, · · Token: example75.c:1:4: CHARCONST "'a'", · }, · ExpressionList: &cc.ExpressionList{ · · Case: 1, · · Expression: &cc.Expression{ · · · Case: 1, · · · Token: example75.c:1:10: CHARCONST "'b'", · · }, · · Token: example75.c:1:8: ',', · }, }
func (*ExpressionList) Len ¶
func (n *ExpressionList) Len() (r int)
Len returns the number of items in n.
func (*ExpressionList) Pos ¶
func (n *ExpressionList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ExpressionList) String ¶
func (n *ExpressionList) String() string
String implements fmt.Stringer.
type ExpressionListOpt ¶
type ExpressionListOpt struct {
ExpressionList *ExpressionList
}
ExpressionListOpt represents data reduced by productions:
ExpressionListOpt:
/* empty */
| ExpressionList // Case 1
Example ¶
fmt.Println(exampleAST(76, "\U00100001 ( { ;") == (*ExpressionListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(77, "\U00100001 ( { 'a' )"))
Output: &cc.ExpressionListOpt{ · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example77.c:1:6: CHARCONST "'a'", · · }, · }, }
func (*ExpressionListOpt) Pos ¶
func (n *ExpressionListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ExpressionListOpt) String ¶
func (n *ExpressionListOpt) String() string
String implements fmt.Stringer.
type ExpressionOpt ¶
type ExpressionOpt struct {
Expression *Expression
}
ExpressionOpt represents data reduced by productions:
ExpressionOpt:
/* empty */
| Expression // Case 1
Example ¶
fmt.Println(exampleAST(72, "\U00100001 ( _Bool [ ]") == (*ExpressionOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(73, "\U00100002 a [ 'b' ]"))
Output: &cc.ExpressionOpt{ · Expression: &cc.Expression{ · · Type: int, · · Value: 98, · · Case: 1, · · Token: example73.c:1:6: CHARCONST "'b'", · }, }
func (*ExpressionOpt) Pos ¶
func (n *ExpressionOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ExpressionOpt) String ¶
func (n *ExpressionOpt) String() string
String implements fmt.Stringer.
type ExpressionStatement ¶
type ExpressionStatement struct {
ExpressionListOpt *ExpressionListOpt
Token xc.Token
}
ExpressionStatement represents data reduced by production:
ExpressionStatement:
ExpressionListOpt ';'
Example ¶
fmt.Println(exampleAST(232, "\U00100001 ( { ; !"))
Output: &cc.ExpressionStatement{ · Token: example232.c:1:6: ';', }
func (*ExpressionStatement) Pos ¶
func (n *ExpressionStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ExpressionStatement) String ¶
func (n *ExpressionStatement) String() string
String implements fmt.Stringer.
type ExternalDeclaration ¶
type ExternalDeclaration struct {
BasicAssemblerStatement *BasicAssemblerStatement
Case int
Declaration *Declaration
FunctionDefinition *FunctionDefinition
Token xc.Token
}
ExternalDeclaration represents data reduced by productions:
ExternalDeclaration:
FunctionDefinition
| Declaration // Case 1
| BasicAssemblerStatement ';' // Case 2
| ';' // Case 3
Example ¶
fmt.Println(exampleAST(247, "\U00100002 a { }"))
Output: &cc.ExternalDeclaration{ · FunctionDefinition: &cc.FunctionDefinition{ · · Case: 1, · · Declarator: &cc.Declarator{ · · · Linkage: External, · · · Type: int, · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · Token: example247.c:1:2: IDENTIFIER "a", · · · }, · · }, · · FunctionBody: &cc.FunctionBody{ · · · CompoundStatement: &cc.CompoundStatement{ · · · · Token: example247.c:1:4: '{', · · · · Token2: example247.c:1:6: '}', · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(248, "\U00100002 auto ;"))
Output: &cc.ExternalDeclaration{ · Case: 1, · Declaration: &cc.Declaration{ · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example248.c:1:2: AUTO "auto", · · · }, · · }, · · Token: example248.c:1:7: ';', · }, }
Example (Case2) ¶
fmt.Println(exampleAST(249, "\U00100002 asm ( \"a\" ) ;"))
Output: &cc.ExternalDeclaration{ · BasicAssemblerStatement: &cc.BasicAssemblerStatement{ · · AssemblerInstructions: &cc.AssemblerInstructions{ · · · Token: example249.c:1:8: STRINGLITERAL "\"a\"", · · }, · · Token: example249.c:1:2: ASM "asm", · · Token2: example249.c:1:6: '(', · · Token3: example249.c:1:12: ')', · }, · Case: 2, · Token: example249.c:1:14: ';', }
Example (Case3) ¶
fmt.Println(exampleAST(250, "\U00100002 ;"))
Output: &cc.ExternalDeclaration{ · Case: 3, · Token: example250.c:1:2: ';', }
func (*ExternalDeclaration) Pos ¶
func (n *ExternalDeclaration) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ExternalDeclaration) String ¶
func (n *ExternalDeclaration) String() string
String implements fmt.Stringer.
type FunctionBody ¶
type FunctionBody struct {
AssemblerStatement *AssemblerStatement
Case int
CompoundStatement *CompoundStatement
Token xc.Token
// contains filtered or unexported fields
}
FunctionBody represents data reduced by productions:
FunctionBody:
CompoundStatement
| AssemblerStatement ';' // Case 1
Example ¶
fmt.Println(exampleAST(257, "\U00100002 a { }"))
Output: &cc.FunctionBody{ · CompoundStatement: &cc.CompoundStatement{ · · Token: example257.c:1:4: '{', · · Token2: example257.c:1:6: '}', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(259, "\U00100002 a asm ( \"b\" ) ;"))
Output: &cc.FunctionBody{ · AssemblerStatement: &cc.AssemblerStatement{ · · BasicAssemblerStatement: &cc.BasicAssemblerStatement{ · · · AssemblerInstructions: &cc.AssemblerInstructions{ · · · · Token: example259.c:1:10: STRINGLITERAL "\"b\"", · · · }, · · · Token: example259.c:1:4: ASM "asm", · · · Token2: example259.c:1:8: '(', · · · Token3: example259.c:1:14: ')', · · }, · }, · Case: 1, · Token: example259.c:1:16: ';', }
func (*FunctionBody) Pos ¶
func (n *FunctionBody) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*FunctionBody) String ¶
func (n *FunctionBody) String() string
String implements fmt.Stringer.
type FunctionDefinition ¶
type FunctionDefinition struct {
Case int
DeclarationListOpt *DeclarationListOpt
DeclarationSpecifiers *DeclarationSpecifiers
Declarator *Declarator
FunctionBody *FunctionBody
}
FunctionDefinition represents data reduced by productions:
FunctionDefinition:
DeclarationSpecifiers Declarator DeclarationListOpt FunctionBody
| Declarator DeclarationListOpt FunctionBody // Case 1
Example ¶
fmt.Println(exampleAST(252, "\U00100002 auto a { }"))
Output: &cc.FunctionDefinition{ · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · Case: 3, · · · Token: example252.c:1:2: AUTO "auto", · · }, · }, · Declarator: &cc.Declarator{ · · Linkage: None, · · Type: auto int, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example252.c:1:7: IDENTIFIER "a", · · }, · }, · FunctionBody: &cc.FunctionBody{ · · CompoundStatement: &cc.CompoundStatement{ · · · Token: example252.c:1:9: '{', · · · Token2: example252.c:1:11: '}', · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(255, "\U00100002 a { }"))
Output: &cc.FunctionDefinition{ · Case: 1, · Declarator: &cc.Declarator{ · · Linkage: External, · · Type: int, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example255.c:1:2: IDENTIFIER "a", · · }, · }, · FunctionBody: &cc.FunctionBody{ · · CompoundStatement: &cc.CompoundStatement{ · · · Token: example255.c:1:4: '{', · · · Token2: example255.c:1:6: '}', · · }, · }, }
func (*FunctionDefinition) Pos ¶
func (n *FunctionDefinition) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*FunctionDefinition) String ¶
func (n *FunctionDefinition) String() string
String implements fmt.Stringer.
type FunctionSpecifier ¶
FunctionSpecifier represents data reduced by productions:
FunctionSpecifier:
"inline"
| "_Noreturn" // Case 1
Example ¶
fmt.Println(exampleAST(147, "\U00100002 inline ("))
Output: &cc.FunctionSpecifier{ · Token: example147.c:1:2: INLINE "inline", }
Example (Case1) ¶
fmt.Println(exampleAST(148, "\U00100002 _Noreturn ("))
Output: &cc.FunctionSpecifier{ · Case: 1, · Token: example148.c:1:2: NORETURN "_Noreturn", }
func (*FunctionSpecifier) Pos ¶
func (n *FunctionSpecifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*FunctionSpecifier) String ¶
func (n *FunctionSpecifier) String() string
String implements fmt.Stringer.
type GroupList ¶
GroupList represents data reduced by productions:
GroupList:
GroupPart
| GroupList GroupPart // Case 1
Example ¶
fmt.Println(exampleAST(286, "\U00100000 "))
Output: &cc.GroupList{ }
Example (Case1) ¶
fmt.Println(exampleAST(287, "\U00100000int\nf() {}"))
Output: &cc.GroupList{ · GroupList: &cc.GroupList{ · · Case: 1, · · GroupPart: []xc.Token{ // len 6 · · · 0: example287.c:2:1: IDENTIFIER "f", · · · 1: example287.c:2:2: '(', · · · 2: example287.c:2:3: ')', · · · 3: example287.c:2:4: ' ', · · · 4: example287.c:2:5: '{', · · · 5: example287.c:2:6: '}', · · }, · }, · GroupPart: []xc.Token{ // len 2 · · 0: example287.c:1:1: IDENTIFIER "int", · · 1: example287.c:1:4: ' ', · }, }
type GroupListOpt ¶
type GroupListOpt struct {
GroupList *GroupList
}
GroupListOpt represents data reduced by productions:
GroupListOpt:
/* empty */
| GroupList // Case 1
Example ¶
fmt.Println(exampleAST(288, "\U00100000 \n#ifndef a \n#elif") == (*GroupListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(289, "\U00100000 \n#ifndef a\nb\n#elif"))
Output: &cc.GroupListOpt{ · GroupList: &cc.GroupList{ · · GroupPart: []xc.Token{ // len 2 · · · 0: example289.c:3:1: IDENTIFIER "b", · · · 1: example289.c:3:2: ' ', · · }, · }, }
func (*GroupListOpt) Pos ¶
func (n *GroupListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*GroupListOpt) String ¶
func (n *GroupListOpt) String() string
String implements fmt.Stringer.
type IdentifierList ¶
type IdentifierList struct {
Case int
IdentifierList *IdentifierList
Token xc.Token
Token2 xc.Token
}
IdentifierList represents data reduced by productions:
IdentifierList:
IDENTIFIER
| IdentifierList ',' IDENTIFIER // Case 1
Example ¶
fmt.Println(exampleAST(177, "\U00100002 a ( b )"))
Output: &cc.IdentifierList{ · Token: example177.c:1:6: IDENTIFIER "b", }
Example (Case1) ¶
fmt.Println(exampleAST(178, "\U00100002 a ( b , c )"))
Output: &cc.IdentifierList{ · IdentifierList: &cc.IdentifierList{ · · Case: 1, · · Token: example178.c:1:8: ',', · · Token2: example178.c:1:10: IDENTIFIER "c", · }, · Token: example178.c:1:6: IDENTIFIER "b", }
func (*IdentifierList) Pos ¶
func (n *IdentifierList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*IdentifierList) String ¶
func (n *IdentifierList) String() string
String implements fmt.Stringer.
type IdentifierListOpt ¶
type IdentifierListOpt struct {
IdentifierList *IdentifierList
// contains filtered or unexported fields
}
IdentifierListOpt represents data reduced by productions:
IdentifierListOpt:
/* empty */
| IdentifierList // Case 1
Example ¶
fmt.Println(exampleAST(179, "\U00100002 a ( )") == (*IdentifierListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(180, "\U00100002 a ( b )"))
Output: &cc.IdentifierListOpt{ · IdentifierList: &cc.IdentifierList{ · · Token: example180.c:1:6: IDENTIFIER "b", · }, }
func (*IdentifierListOpt) Pos ¶
func (n *IdentifierListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*IdentifierListOpt) String ¶
func (n *IdentifierListOpt) String() string
String implements fmt.Stringer.
type IdentifierOpt ¶
IdentifierOpt represents data reduced by productions:
IdentifierOpt:
/* empty */
| IDENTIFIER // Case 1
Example ¶
fmt.Println(exampleAST(181, "\U00100002 struct {") == (*IdentifierOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(182, "\U00100002 enum a {"))
Output: &cc.IdentifierOpt{ · Token: example182.c:1:7: IDENTIFIER "a", }
func (*IdentifierOpt) Pos ¶
func (n *IdentifierOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*IdentifierOpt) String ¶
func (n *IdentifierOpt) String() string
String implements fmt.Stringer.
type IfGroup ¶
type IfGroup struct {
Case int
GroupListOpt *GroupListOpt
PPTokenList PPTokenList
Token xc.Token
Token2 xc.Token
Token3 xc.Token
}
IfGroup represents data reduced by productions:
IfGroup:
PPIF PPTokenList '\n' GroupListOpt
| PPIFDEF IDENTIFIER '\n' GroupListOpt // Case 1
| PPIFNDEF IDENTIFIER '\n' GroupListOpt // Case 2
Example ¶
fmt.Println(exampleAST(295, "\U00100000 \n#if other_a \n#elif"))
Output: &cc.IfGroup{ · PPTokenList: []xc.Token{ // len 4 · · 0: example295.c:2:4: ' ', · · 1: example295.c:2:5: IDENTIFIER "other_a", · · 2: example295.c:2:12: ' ', · · 3: example295.c:2:14: ' ', · }, · Token: example295.c:2:2: PPIF, · Token2: example295.c:2:14: '\n', }
Example (Case1) ¶
fmt.Println(exampleAST(296, "\U00100000 \n#ifdef a \n#elif"))
Output: &cc.IfGroup{ · Case: 1, · Token: example296.c:2:2: PPIFDEF, · Token2: example296.c:2:8: IDENTIFIER "a", · Token3: example296.c:2:11: '\n', }
Example (Case2) ¶
fmt.Println(exampleAST(297, "\U00100000 \n#ifndef a \n#elif"))
Output: &cc.IfGroup{ · Case: 2, · Token: example297.c:2:2: PPIFNDEF, · Token2: example297.c:2:9: IDENTIFIER "a", · Token3: example297.c:2:12: '\n', }
type IfSection ¶
type IfSection struct {
ElifGroupListOpt *ElifGroupListOpt
ElseGroupOpt *ElseGroupOpt
EndifLine *EndifLine
IfGroup *IfGroup
}
IfSection represents data reduced by production:
IfSection:
IfGroup ElifGroupListOpt ElseGroupOpt EndifLine
Example ¶
fmt.Println(exampleAST(294, "\U00100000 \n#if other_a \n#endif"))
Output: &cc.IfSection{ · EndifLine: &cc.EndifLine{ · · Token: example294.c:3:2: PPENDIF, · }, · IfGroup: &cc.IfGroup{ · · PPTokenList: []xc.Token{ // len 4 · · · 0: example294.c:2:4: ' ', · · · 1: example294.c:2:5: IDENTIFIER "other_a", · · · 2: example294.c:2:12: ' ', · · · 3: example294.c:2:14: ' ', · · }, · · Token: example294.c:2:2: PPIF, · · Token2: example294.c:2:14: '\n', · }, }
type InitDeclarator ¶
type InitDeclarator struct {
Case int
Declarator *Declarator
Initializer *Initializer
Token xc.Token
}
InitDeclarator represents data reduced by productions:
InitDeclarator:
Declarator
| Declarator '=' Initializer // Case 1
Example ¶
fmt.Println(exampleAST(92, "\U00100002 a auto b ,"))
Output: &cc.InitDeclarator{ · Declarator: &cc.Declarator{ · · Linkage: None, · · Type: auto undefined, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example92.c:1:9: IDENTIFIER "b", · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(94, "\U00100002 auto a = 'b' ,"))
Output: &cc.InitDeclarator{ · Case: 1, · Declarator: &cc.Declarator{ · · Linkage: None, · · Type: auto undefined, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example94.c:1:7: IDENTIFIER "a", · · }, · }, · Initializer: &cc.Initializer{ · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 98, · · · Case: 1, · · · Token: example94.c:1:11: CHARCONST "'b'", · · }, · }, · Token: example94.c:1:9: '=', }
func (*InitDeclarator) Pos ¶
func (n *InitDeclarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*InitDeclarator) String ¶
func (n *InitDeclarator) String() string
String implements fmt.Stringer.
type InitDeclaratorList ¶
type InitDeclaratorList struct {
Case int
InitDeclarator *InitDeclarator
InitDeclaratorList *InitDeclaratorList
Token xc.Token
}
InitDeclaratorList represents data reduced by productions:
InitDeclaratorList:
InitDeclarator
| InitDeclaratorList ',' InitDeclarator // Case 1
Example ¶
fmt.Println(exampleAST(88, "\U00100002 auto a ,"))
Output: &cc.InitDeclaratorList{ · InitDeclarator: &cc.InitDeclarator{ · · Declarator: &cc.Declarator{ · · · Linkage: None, · · · Type: auto undefined, · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · Token: example88.c:1:7: IDENTIFIER "a", · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(89, "\U00100002 auto a , b ,"))
Output: &cc.InitDeclaratorList{ · InitDeclarator: &cc.InitDeclarator{ · · Declarator: &cc.Declarator{ · · · Linkage: None, · · · Type: auto undefined, · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · Token: example89.c:1:7: IDENTIFIER "a", · · · }, · · }, · }, · InitDeclaratorList: &cc.InitDeclaratorList{ · · Case: 1, · · InitDeclarator: &cc.InitDeclarator{ · · · Declarator: &cc.Declarator{ · · · · Linkage: None, · · · · Type: auto undefined, · · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · · Token: example89.c:1:11: IDENTIFIER "b", · · · · }, · · · }, · · }, · · Token: example89.c:1:9: ',', · }, }
func (*InitDeclaratorList) Pos ¶
func (n *InitDeclaratorList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*InitDeclaratorList) String ¶
func (n *InitDeclaratorList) String() string
String implements fmt.Stringer.
type InitDeclaratorListOpt ¶
type InitDeclaratorListOpt struct {
InitDeclaratorList *InitDeclaratorList
}
InitDeclaratorListOpt represents data reduced by productions:
InitDeclaratorListOpt:
/* empty */
| InitDeclaratorList // Case 1
Example ¶
fmt.Println(exampleAST(90, "\U00100002 auto ;") == (*InitDeclaratorListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(91, "\U00100002 auto a ;"))
Output: &cc.InitDeclaratorListOpt{ · InitDeclaratorList: &cc.InitDeclaratorList{ · · InitDeclarator: &cc.InitDeclarator{ · · · Declarator: &cc.Declarator{ · · · · Linkage: None, · · · · Type: auto undefined, · · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · · Token: example91.c:1:7: IDENTIFIER "a", · · · · }, · · · }, · · }, · }, }
func (*InitDeclaratorListOpt) Pos ¶
func (n *InitDeclaratorListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*InitDeclaratorListOpt) String ¶
func (n *InitDeclaratorListOpt) String() string
String implements fmt.Stringer.
type Initializer ¶
type Initializer struct {
Case int
CommaOpt *CommaOpt
Expression *Expression
Initializer *Initializer
InitializerList *InitializerList
Token xc.Token
Token2 xc.Token
}
Initializer represents data reduced by productions:
Initializer:
Expression
| '{' InitializerList CommaOpt '}' // Case 1
| IDENTIFIER ':' Initializer // Case 2
Example ¶
fmt.Println(exampleAST(201, "\U00100002 auto a = 'b' ,"))
Output: &cc.Initializer{ · Expression: &cc.Expression{ · · Type: int, · · Value: 98, · · Case: 1, · · Token: example201.c:1:11: CHARCONST "'b'", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(202, "\U00100002 auto a = { } ,"))
Output: &cc.Initializer{ · Case: 1, · Token: example202.c:1:11: '{', · Token2: example202.c:1:13: '}', }
Example (Case2) ¶
fmt.Println(exampleAST(203, "\U00100002 auto a = b : 'c' ,"))
Output: &cc.Initializer{ · Case: 2, · Initializer: &cc.Initializer{ · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 99, · · · Case: 1, · · · Token: example203.c:1:15: CHARCONST "'c'", · · }, · }, · Token: example203.c:1:11: IDENTIFIER "b", · Token2: example203.c:1:13: ':', }
func (*Initializer) Pos ¶
func (n *Initializer) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type InitializerList ¶
type InitializerList struct {
Case int
DesignationOpt *DesignationOpt
Initializer *Initializer
InitializerList *InitializerList
Token xc.Token
}
InitializerList represents data reduced by productions:
InitializerList:
DesignationOpt Initializer
| InitializerList ',' DesignationOpt Initializer // Case 1
| /* empty */ // Case 2
Example ¶
fmt.Println(exampleAST(204, "\U00100002 auto a = { 'b' ,"))
Output: &cc.InitializerList{ · Initializer: &cc.Initializer{ · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 98, · · · Case: 1, · · · Token: example204.c:1:13: CHARCONST "'b'", · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(205, "\U00100002 auto a = { , 'b' ,"))
Output: &cc.InitializerList{ · Case: 1, · Initializer: &cc.Initializer{ · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 98, · · · Case: 1, · · · Token: example205.c:1:15: CHARCONST "'b'", · · }, · }, · Token: example205.c:1:13: ',', }
Example (Case2) ¶
fmt.Println(exampleAST(206, "\U00100002 auto a = { ,") == (*InitializerList)(nil))
Output: true
func (*InitializerList) Len ¶
func (n *InitializerList) Len() (r int)
Len returns the number of items in n.
func (*InitializerList) Pos ¶
func (n *InitializerList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*InitializerList) String ¶
func (n *InitializerList) String() string
String implements fmt.Stringer.
type IterationStatement ¶
type IterationStatement struct {
Case int
Declaration *Declaration
ExpressionList *ExpressionList
ExpressionListOpt *ExpressionListOpt
ExpressionListOpt2 *ExpressionListOpt
ExpressionListOpt3 *ExpressionListOpt
Statement *Statement
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
Token5 xc.Token
}
IterationStatement represents data reduced by productions:
IterationStatement:
"while" '(' ExpressionList ')' Statement
| "do" Statement "while" '(' ExpressionList ')' ';' // Case 1
| "for" '(' ExpressionListOpt ';' ExpressionListOpt ';' ExpressionListOpt ')' Statement // Case 2
| "for" '(' Declaration ExpressionListOpt ';' ExpressionListOpt ')' Statement // Case 3
Example ¶
fmt.Println(exampleAST(236, "\U00100001 ( { while ( 'a' ) ; !"))
Output: &cc.IterationStatement{ · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example236.c:1:14: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example236.c:1:20: ';', · · }, · }, · Token: example236.c:1:6: WHILE "while", · Token2: example236.c:1:12: '(', · Token3: example236.c:1:18: ')', }
Example (Case1) ¶
fmt.Println(exampleAST(237, "\U00100001 ( { do ; while ( 'a' ) ; !"))
Output: &cc.IterationStatement{ · Case: 1, · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example237.c:1:19: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example237.c:1:9: ';', · · }, · }, · Token: example237.c:1:6: DO "do", · Token2: example237.c:1:11: WHILE "while", · Token3: example237.c:1:17: '(', · Token4: example237.c:1:23: ')', · Token5: example237.c:1:25: ';', }
Example (Case2) ¶
fmt.Println(exampleAST(238, "\U00100001 ( { for ( ; ; ) ; !"))
Output: &cc.IterationStatement{ · Case: 2, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example238.c:1:18: ';', · · }, · }, · Token: example238.c:1:6: FOR "for", · Token2: example238.c:1:10: '(', · Token3: example238.c:1:12: ';', · Token4: example238.c:1:14: ';', · Token5: example238.c:1:16: ')', }
Example (Case3) ¶
fmt.Println(exampleAST(239, "\U00100001 ( { for ( auto ; ; ) ; !"))
Output: &cc.IterationStatement{ · Case: 3, · Declaration: &cc.Declaration{ · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example239.c:1:12: AUTO "auto", · · · }, · · }, · · Token: example239.c:1:17: ';', · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example239.c:1:23: ';', · · }, · }, · Token: example239.c:1:6: FOR "for", · Token2: example239.c:1:10: '(', · Token3: example239.c:1:19: ';', · Token4: example239.c:1:21: ')', }
func (*IterationStatement) Pos ¶
func (n *IterationStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*IterationStatement) String ¶
func (n *IterationStatement) String() string
String implements fmt.Stringer.
type JumpStatement ¶
type JumpStatement struct {
Case int
Expression *Expression
ExpressionListOpt *ExpressionListOpt
Token xc.Token
Token2 xc.Token
Token3 xc.Token
}
JumpStatement represents data reduced by productions:
JumpStatement:
"goto" IDENTIFIER ';'
| "continue" ';' // Case 1
| "break" ';' // Case 2
| "return" ExpressionListOpt ';' // Case 3
| "goto" Expression ';' // Case 4
Example ¶
fmt.Println(exampleAST(240, "\U00100001 ( { goto a ; !"))
Output: &cc.JumpStatement{ · Token: example240.c:1:6: GOTO "goto", · Token2: example240.c:1:11: IDENTIFIER "a", · Token3: example240.c:1:13: ';', }
Example (Case1) ¶
fmt.Println(exampleAST(241, "\U00100001 ( { continue ; !"))
Output: &cc.JumpStatement{ · Case: 1, · Token: example241.c:1:6: CONTINUE "continue", · Token2: example241.c:1:15: ';', }
Example (Case2) ¶
fmt.Println(exampleAST(242, "\U00100001 ( { break ; !"))
Output: &cc.JumpStatement{ · Case: 2, · Token: example242.c:1:6: BREAK "break", · Token2: example242.c:1:12: ';', }
Example (Case3) ¶
fmt.Println(exampleAST(243, "\U00100001 ( { return ; !"))
Output: &cc.JumpStatement{ · Case: 3, · Token: example243.c:1:6: RETURN "return", · Token2: example243.c:1:13: ';', }
Example (Case4) ¶
fmt.Println(exampleAST(244, "\U00100001 ( { goto 'a' ; !"))
Output: &cc.JumpStatement{ · Case: 4, · Expression: &cc.Expression{ · · Type: int, · · Value: 97, · · Case: 1, · · Token: example244.c:1:11: CHARCONST "'a'", · }, · Token: example244.c:1:6: GOTO "goto", · Token2: example244.c:1:15: ';', }
func (*JumpStatement) Pos ¶
func (n *JumpStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*JumpStatement) String ¶
func (n *JumpStatement) String() string
String implements fmt.Stringer.
type Kind ¶
type Kind int
Kind is a type category. Kind formally implements Type the only method returning a non nil value is Kind.
type LabeledStatement ¶
type LabeledStatement struct {
Case int
ConstantExpression *ConstantExpression
Statement *Statement
Token xc.Token
Token2 xc.Token
}
LabeledStatement represents data reduced by productions:
LabeledStatement:
IDENTIFIER ':' Statement
| "case" ConstantExpression ':' Statement // Case 1
| "default" ':' Statement // Case 2
Example ¶
fmt.Println(exampleAST(221, "\U00100001 ( { a : ; !"))
Output: &cc.LabeledStatement{ · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example221.c:1:10: ';', · · }, · }, · Token: example221.c:1:6: IDENTIFIER "a", · Token2: example221.c:1:8: ':', }
Example (Case1) ¶
fmt.Println(exampleAST(222, "\U00100001 ( { case 'a' : ; !"))
Output: &cc.LabeledStatement{ · Case: 1, · ConstantExpression: &cc.ConstantExpression{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example222.c:1:11: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example222.c:1:17: ';', · · }, · }, · Token: example222.c:1:6: CASE "case", · Token2: example222.c:1:15: ':', }
Example (Case2) ¶
fmt.Println(exampleAST(223, "\U00100001 ( { default : ; !"))
Output: &cc.LabeledStatement{ · Case: 2, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example223.c:1:16: ';', · · }, · }, · Token: example223.c:1:6: DEFAULT "default", · Token2: example223.c:1:14: ':', }
func (*LabeledStatement) Pos ¶
func (n *LabeledStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*LabeledStatement) String ¶
func (n *LabeledStatement) String() string
String implements fmt.Stringer.
type LongStringLitID ¶
type LongStringLitID int
LongStringLitID is the type of an Expression.Value representing the numeric ID of a long string literal.
type Macro ¶
type Macro struct {
Args []int // Numeric IDs of argument identifiers.
DefTok xc.Token // Macro name definition token.
IsFnLike bool // Whether the macro is function like.
Type Type // Non nil if macro expands to a constant expression.
Value interface{} // Non nil if macro expands to a constant expression.
// contains filtered or unexported fields
}
Macro represents a C preprocessor macro.
func (*Macro) ReplacementToks ¶
ReplacementToks returns the tokens that replace m.
type Member ¶
type Member struct {
BitFieldType Type
BitFieldGroup int // Ordinal number of the packed bits field.
BitOffsetOf int // Bit field starting bit.
Bits int // Size in bits for bit fields, 0 otherwise.
Declarator *Declarator // Possibly nil for bit fields.
Name int
OffsetOf int
Padding int // Number of unused bytes added to the end of the field to force proper alignment requirements.
Type Type
}
Member describes a member of a struct or union.
BitFieldGroup represents the ordinal number of the packed bit fields:
struct foo {
int i;
int j:1; // BitFieldGroup: 0
int k:2; // BitFieldGroup: 0
double l;
int m:1; // BitFieldGroup: 1
int n:2; // BitFieldGroup: 1
}
type Model ¶
type Model struct {
Items map[Kind]ModelItem
BoolType Type
CharType Type
DoubleComplexType Type
DoubleType Type
FloatComplexType Type
FloatType Type
IntType Type
LongDoubleComplexType Type
LongDoubleType Type
LongLongType Type
LongType Type
ShortType Type
UCharType Type
UIntType Type
ULongLongType Type
ULongType Type
UShortType Type
UintPtrType Type
VoidType Type
Signed [kindMax]bool // Signed[Kind] reports whether Kind is a signed integer type.
// contains filtered or unexported fields
}
Model describes size and align requirements of predeclared types.
func (*Model) BinOpType ¶
BinOpType returns the evaluation type of a binop b, ie. the type operands are converted to before performing the operation. Operands must be arithmetic types.
See [0], 6.3.1.8 - Usual arithmetic conversions.
func (*Model) MustConvert ¶
MustConvert returns v converted to the type of typ. If the conversion is impossible, the method panics.
Conversion an integer type to any pointer type yields an uintptr.
type ModelItem ¶
type ModelItem struct {
Size int // Size of the entity in bytes.
Align int // Alignment of the entity when it's not a struct field.
StructAlign int // Alignment of the entity when it's a struct field.
More interface{} // Optional user data.
}
ModelItem is a single item of a model.
Note about StructAlign: To provide GCC ABI compatibility set, for example, Align of Double to 8 and StructAlign of Double to 4.
type Opt ¶
type Opt func(*lexer)
Opt is a configuration/setup function that can be passed to the Parser function.
func AllowCompatibleTypedefRedefinitions ¶
func AllowCompatibleTypedefRedefinitions() Opt
AllowCompatibleTypedefRedefinitions makes the parser accept compatible typedef redefinitions.
typedef int foo; typedef int foo; // ok with this option. typedef long int foo; // never ok.
func Cpp ¶
Cpp registers a preprocessor hook function which is called for every line, or group of lines the preprocessor produces before it is consumed by the parser. The token slice must not be modified by the hook.
func EnableAlignOf ¶
func EnableAlignOf() Opt
EnableAlignOf enables recognizing the reserved word _Alignof.
func EnableAlternateKeywords ¶
func EnableAlternateKeywords() Opt
EnableAlternateKeywords makes the parser accept, for example, non standard
__asm__
as an equvalent of keyowrd asm (which first hast be permitted by EnableAsm).
func EnableAnonymousStructFields ¶
func EnableAnonymousStructFields() Opt
EnableAnonymousStructFields makes the parser accept non standard
struct {
int i;
struct {
int j;
};
int k;
};
func EnableBuiltinClassifyType ¶
func EnableBuiltinClassifyType() Opt
EnableBuiltinClassifyType makes the parser handle specially
__builtin_constant_p(expr)
func EnableBuiltinConstantP ¶
func EnableBuiltinConstantP() Opt
EnableBuiltinConstantP makes the parser handle specially
__builtin_constant_p(expr)
func EnableComputedGotos ¶
func EnableComputedGotos() Opt
EnableComputedGotos makes the parser accept non standard
variable = &&label; goto *variable;
See https://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/Labels-as-Values.html
func EnableDefineOmitCommaBeforeDDD ¶
func EnableDefineOmitCommaBeforeDDD() Opt
EnableDefineOmitCommaBeforeDDD makes the parser accept non standard
#define foo(a, b...) // Note the missing comma after identifier list.
func EnableDlrInIdentifiers ¶
func EnableDlrInIdentifiers() Opt
EnableDlrInIdentifiers makes the parser accept non standard
int foo$bar
func EnableEmptyDeclarations ¶
func EnableEmptyDeclarations() Opt
EnableEmptyDeclarations makes the parser accept non standard
; // C++11 empty declaration
func EnableEmptyDefine ¶
func EnableEmptyDefine() Opt
EnableEmptyDefine makes the parser accept non standard
#define
func EnableEmptyStructs ¶
func EnableEmptyStructs() Opt
EnableEmptyStructs makes the parser accept non standard
struct foo {};
func EnableImaginarySuffix ¶
func EnableImaginarySuffix() Opt
EnableImaginarySuffix makes the parser accept non standard
4.2i, 5.6j etc
func EnableImplicitFuncDef ¶
func EnableImplicitFuncDef() Opt
EnableImplicitFuncDef makes the parser accept non standard
int f() {
return g(); // g is undefined, but assumed to be returning int.
}
func EnableImplicitIntType ¶
func EnableImplicitIntType() Opt
EnableImplicitIntType makes the parser accept non standard omitting type specifier. For example
static i;
becomes the same as
static int i;
func EnableIncludeNext ¶
func EnableIncludeNext() Opt
EnableIncludeNext makes the parser accept non standard
#include_next "foo.h"
func EnableLegacyDesignators ¶
func EnableLegacyDesignators() Opt
EnableLegacyDesignators makes the parser accept legacy designators
{ a: 42 } // Obsolete since GCC 2.5, standard is { .a=42 }
See https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
func EnableNonConstStaticInitExpressions ¶
func EnableNonConstStaticInitExpressions() Opt
EnableNonConstStaticInitExpressions makes the parser accept non standard
static int i = f();
[0], 6.7.8/4: All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.
func EnableNoreturn ¶
func EnableNoreturn() Opt
EnableNoreturn enables recognizing the reserved word _Noreturn.
func EnableOmitConditionalOperand ¶
func EnableOmitConditionalOperand() Opt
EnableOmitConditionalOperand makes the parser accept non standard
x ? : y
See https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Conditionals.html#Conditionals
func EnableOmitFuncArgTypes ¶
func EnableOmitFuncArgTypes() Opt
EnableOmitFuncArgTypes makes the parser accept non standard
f(a) // Same as int f(int a).
func EnableOmitFuncRetType ¶
func EnableOmitFuncRetType() Opt
EnableOmitFuncRetType makes the parser accept non standard
f() // Same as int f().
func EnableParenthesizedCompoundStatemen ¶
func EnableParenthesizedCompoundStatemen() Opt
EnableParenthesizedCompoundStatemen makes the parser accept non standard
({ ... })
as an expression. See [3].
func EnableStaticAssert ¶
func EnableStaticAssert() Opt
EnableStaticAssert enables recognizing the reserved word _Static_assert.
func EnableTypeOf ¶
func EnableTypeOf() Opt
EnableTypeOf enables recognizing the reserved word typeof.
func EnableUndefExtraTokens ¶
func EnableUndefExtraTokens() Opt
EnableUndefExtraTokens makes the parser accept non standard
#undef foo(bar)
func EnableUnsignedEnums ¶
func EnableUnsignedEnums() Opt
EnableUnsignedEnums makes the parser handle choose unsigned int as the type of an enumeration with no negative members.
func EnableWideBitFieldTypes ¶
func EnableWideBitFieldTypes() Opt
EnableWideBitFieldTypes makes the parser accept non standard bitfield types (i.e, long long and unsigned long long).
unsigned long long bits : 2;
func EnableWideEnumValues ¶
func EnableWideEnumValues() Opt
EnableWideEnumValues makes the parser accept non standard
enum { v = X }; for X wider than 32 bits.
func ErrLimit ¶
ErrLimit limits the number of calls to the error reporting methods. After the limit is reached, all errors are reported using log.Print and then log.Fatal() is called with a message about too many errors. To disable error limit, set ErrLimit to value less or equal zero. Default value is 10.
func IncludePaths ¶
IncludePaths option configures where to search for include files (eg. "name.h"). Multiple IncludePaths options may be used, the resulting search path list is produced by appending the option arguments in order of appearance.
func SysIncludePaths ¶
SysIncludePaths option configures where to search for system include files (eg. <name.h>). Multiple SysIncludePaths options may be used, the resulting search path list is produced by appending the option arguments in order of appearance.
type PPTokenList ¶
type PPTokenList int
PPTokenList represents a sequence of tokens.
func (PPTokenList) Pos ¶
func (p PPTokenList) Pos() token.Pos
type Parameter ¶
type Parameter struct {
Declarator *Declarator
Name int
Type Type
}
Parameter describes a function argument.
type ParameterDeclaration ¶
type ParameterDeclaration struct {
AbstractDeclaratorOpt *AbstractDeclaratorOpt
Case int
DeclarationSpecifiers *DeclarationSpecifiers
Declarator *Declarator
// contains filtered or unexported fields
}
ParameterDeclaration represents data reduced by productions:
ParameterDeclaration:
DeclarationSpecifiers Declarator
| DeclarationSpecifiers AbstractDeclaratorOpt // Case 1
Example ¶
fmt.Println(exampleAST(175, "\U00100002 a ( auto b )"))
Output: &cc.ParameterDeclaration{ · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · Case: 3, · · · Token: example175.c:1:6: AUTO "auto", · · }, · }, · Declarator: &cc.Declarator{ · · Linkage: None, · · Type: auto undefined, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example175.c:1:11: IDENTIFIER "b", · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(176, "\U00100002 a ( auto )"))
Output: &cc.ParameterDeclaration{ · Case: 1, · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · Case: 3, · · · Token: example176.c:1:6: AUTO "auto", · · }, · }, }
func (*ParameterDeclaration) Pos ¶
func (n *ParameterDeclaration) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ParameterDeclaration) String ¶
func (n *ParameterDeclaration) String() string
String implements fmt.Stringer.
type ParameterList ¶
type ParameterList struct {
Case int
ParameterDeclaration *ParameterDeclaration
ParameterList *ParameterList
Token xc.Token
}
ParameterList represents data reduced by productions:
ParameterList:
ParameterDeclaration
| ParameterList ',' ParameterDeclaration // Case 1
Example ¶
fmt.Println(exampleAST(173, "\U00100002 a ( auto )"))
Output: &cc.ParameterList{ · ParameterDeclaration: &cc.ParameterDeclaration{ · · Case: 1, · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example173.c:1:6: AUTO "auto", · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(174, "\U00100002 a ( auto , auto )"))
Output: &cc.ParameterList{ · ParameterDeclaration: &cc.ParameterDeclaration{ · · Case: 1, · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · Case: 3, · · · · Token: example174.c:1:6: AUTO "auto", · · · }, · · }, · }, · ParameterList: &cc.ParameterList{ · · Case: 1, · · ParameterDeclaration: &cc.ParameterDeclaration{ · · · Case: 1, · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · Case: 3, · · · · · Token: example174.c:1:13: AUTO "auto", · · · · }, · · · }, · · }, · · Token: example174.c:1:11: ',', · }, }
func (*ParameterList) Pos ¶
func (n *ParameterList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ParameterList) String ¶
func (n *ParameterList) String() string
String implements fmt.Stringer.
type ParameterTypeList ¶
type ParameterTypeList struct {
Case int
ParameterList *ParameterList
Token xc.Token
Token2 xc.Token
// contains filtered or unexported fields
}
ParameterTypeList represents data reduced by productions:
ParameterTypeList:
ParameterList
| ParameterList ',' "..." // Case 1
Example ¶
fmt.Println(exampleAST(169, "\U00100002 a ( auto )"))
Output: &cc.ParameterTypeList{ · ParameterList: &cc.ParameterList{ · · ParameterDeclaration: &cc.ParameterDeclaration{ · · · Case: 1, · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · Case: 3, · · · · · Token: example169.c:1:6: AUTO "auto", · · · · }, · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(170, "\U00100002 a ( auto , ... )"))
Output: &cc.ParameterTypeList{ · Case: 1, · ParameterList: &cc.ParameterList{ · · ParameterDeclaration: &cc.ParameterDeclaration{ · · · Case: 1, · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · Case: 3, · · · · · Token: example170.c:1:6: AUTO "auto", · · · · }, · · · }, · · }, · }, · Token: example170.c:1:11: ',', · Token2: example170.c:1:13: DDD, }
func (*ParameterTypeList) Pos ¶
func (n *ParameterTypeList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ParameterTypeList) String ¶
func (n *ParameterTypeList) String() string
String implements fmt.Stringer.
type ParameterTypeListOpt ¶
type ParameterTypeListOpt struct {
ParameterTypeList *ParameterTypeList
}
ParameterTypeListOpt represents data reduced by productions:
ParameterTypeListOpt:
/* empty */
| ParameterTypeList // Case 1
Example ¶
fmt.Println(exampleAST(171, "\U00100001 ( _Bool ( )") == (*ParameterTypeListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(172, "\U00100001 ( _Bool ( auto )"))
Output: &cc.ParameterTypeListOpt{ · ParameterTypeList: &cc.ParameterTypeList{ · · ParameterList: &cc.ParameterList{ · · · ParameterDeclaration: &cc.ParameterDeclaration{ · · · · Case: 1, · · · · DeclarationSpecifiers: &cc.DeclarationSpecifiers{ · · · · · StorageClassSpecifier: &cc.StorageClassSpecifier{ · · · · · · Case: 3, · · · · · · Token: example172.c:1:12: AUTO "auto", · · · · · }, · · · · }, · · · }, · · }, · }, }
func (*ParameterTypeListOpt) Pos ¶
func (n *ParameterTypeListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*ParameterTypeListOpt) String ¶
func (n *ParameterTypeListOpt) String() string
String implements fmt.Stringer.
type Pointer ¶
type Pointer struct {
Case int
Pointer *Pointer
Token xc.Token
TypeQualifierListOpt *TypeQualifierListOpt
}
Pointer represents data reduced by productions:
Pointer:
'*' TypeQualifierListOpt
| '*' TypeQualifierListOpt Pointer // Case 1
Example ¶
fmt.Println(exampleAST(161, "\U00100002 * ("))
Output: &cc.Pointer{ · Token: example161.c:1:2: '*', }
Example (Case1) ¶
fmt.Println(exampleAST(162, "\U00100002 * * ("))
Output: &cc.Pointer{ · Case: 1, · Pointer: &cc.Pointer{ · · Token: example162.c:1:4: '*', · }, · Token: example162.c:1:2: '*', }
type PointerOpt ¶
type PointerOpt struct {
Pointer *Pointer
}
PointerOpt represents data reduced by productions:
PointerOpt:
/* empty */
| Pointer // Case 1
Example ¶
fmt.Println(exampleAST(163, "\U00100002 auto (") == (*PointerOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(164, "\U00100001 ( _Bool * ("))
Output: &cc.PointerOpt{ · Pointer: &cc.Pointer{ · · Token: example164.c:1:10: '*', · }, }
func (*PointerOpt) Pos ¶
func (n *PointerOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
type PreprocessingFile ¶
type PreprocessingFile struct {
GroupList *GroupList
// contains filtered or unexported fields
}
PreprocessingFile represents data reduced by production:
PreprocessingFile:
GroupList
Example ¶
fmt.Println(exampleAST(285, "\U00100000 "))
Output: &cc.PreprocessingFile{ · GroupList: &cc.GroupList{ · }, }
func (*PreprocessingFile) Pos ¶
func (n *PreprocessingFile) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*PreprocessingFile) String ¶
func (n *PreprocessingFile) String() string
String implements fmt.Stringer.
type SelectionStatement ¶
type SelectionStatement struct {
Case int
ExpressionList *ExpressionList
Statement *Statement
Statement2 *Statement
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
}
SelectionStatement represents data reduced by productions:
SelectionStatement:
"if" '(' ExpressionList ')' Statement
| "if" '(' ExpressionList ')' Statement "else" Statement // Case 1
| "switch" '(' ExpressionList ')' Statement // Case 2
Example ¶
fmt.Println(exampleAST(233, "\U00100001 ( { if ( 'a' ) ; !"))
Output: &cc.SelectionStatement{ · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example233.c:1:11: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example233.c:1:17: ';', · · }, · }, · Token: example233.c:1:6: IF "if", · Token2: example233.c:1:9: '(', · Token3: example233.c:1:15: ')', }
Example (Case1) ¶
fmt.Println(exampleAST(234, "\U00100001 ( { if ( 'a' ) ; else ; !"))
Output: &cc.SelectionStatement{ · Case: 1, · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example234.c:1:11: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example234.c:1:17: ';', · · }, · }, · Statement2: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example234.c:1:24: ';', · · }, · }, · Token: example234.c:1:6: IF "if", · Token2: example234.c:1:9: '(', · Token3: example234.c:1:15: ')', · Token4: example234.c:1:19: ELSE "else", }
Example (Case2) ¶
fmt.Println(exampleAST(235, "\U00100001 ( { switch ( 'a' ) ; !"))
Output: &cc.SelectionStatement{ · Case: 2, · ExpressionList: &cc.ExpressionList{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example235.c:1:15: CHARCONST "'a'", · · }, · }, · Statement: &cc.Statement{ · · Case: 2, · · ExpressionStatement: &cc.ExpressionStatement{ · · · Token: example235.c:1:21: ';', · · }, · }, · Token: example235.c:1:6: SWITCH "switch", · Token2: example235.c:1:13: '(', · Token3: example235.c:1:19: ')', }
func (*SelectionStatement) Pos ¶
func (n *SelectionStatement) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*SelectionStatement) String ¶
func (n *SelectionStatement) String() string
String implements fmt.Stringer.
type Specifier ¶
type Specifier interface {
IsAuto() bool // StorageClassSpecifier "auto" present.
IsConst() bool // TypeQualifier "const" present.
IsExtern() bool // StorageClassSpecifier "extern" present.
IsInline() bool // FunctionSpecifier "inline" present.
IsRegister() bool // StorageClassSpecifier "register" present.
IsRestrict() bool // TypeQualifier "restrict" present.
IsStatic() bool // StorageClassSpecifier "static" present.
IsTypedef() bool // StorageClassSpecifier "typedef" present.
IsVolatile() bool // TypeQualifier "volatile" present.
TypedefName() int // TypedefName returns the typedef name ID used, if any, zero otherwise.
// contains filtered or unexported methods
}
Specifier describes a combination of {Function,StorageClass,Type}Specifiers and TypeQualifiers.
type SpecifierQualifierList ¶
type SpecifierQualifierList struct {
Case int
SpecifierQualifierListOpt *SpecifierQualifierListOpt
TypeQualifier *TypeQualifier
TypeSpecifier *TypeSpecifier
// contains filtered or unexported fields
}
SpecifierQualifierList represents data reduced by productions:
SpecifierQualifierList:
TypeSpecifier SpecifierQualifierListOpt
| TypeQualifier SpecifierQualifierListOpt // Case 1
Example ¶
fmt.Println(exampleAST(127, "\U00100001 ( _Bool ("))
Output: &cc.SpecifierQualifierList{ · TypeSpecifier: &cc.TypeSpecifier{ · · Case: 9, · · Token: example127.c:1:4: BOOL "_Bool", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(128, "\U00100001 ( const ("))
Output: &cc.SpecifierQualifierList{ · Case: 1, · TypeQualifier: &cc.TypeQualifier{ · · Token: example128.c:1:4: CONST "const", · }, }
func (*SpecifierQualifierList) IsAuto ¶
func (n *SpecifierQualifierList) IsAuto() bool
IsAuto implements specifier.
func (*SpecifierQualifierList) IsConst ¶
func (n *SpecifierQualifierList) IsConst() bool
IsConst returns whether n includes the 'const' type qualifier.
func (*SpecifierQualifierList) IsExtern ¶
func (n *SpecifierQualifierList) IsExtern() bool
IsExtern implements specifier.
func (*SpecifierQualifierList) IsInline ¶
func (n *SpecifierQualifierList) IsInline() bool
IsInline implements specifier.
func (*SpecifierQualifierList) IsRegister ¶
func (n *SpecifierQualifierList) IsRegister() bool
IsRegister implements specifier.
func (*SpecifierQualifierList) IsRestrict ¶
func (n *SpecifierQualifierList) IsRestrict() bool
IsRestrict implements specifier.
func (*SpecifierQualifierList) IsStatic ¶
func (n *SpecifierQualifierList) IsStatic() bool
IsStatic implements specifier.
func (*SpecifierQualifierList) IsTypedef ¶
func (n *SpecifierQualifierList) IsTypedef() bool
IsTypedef implements specifier.
func (*SpecifierQualifierList) IsVolatile ¶
func (n *SpecifierQualifierList) IsVolatile() bool
IsVolatile implements specifier.
func (*SpecifierQualifierList) Pos ¶
func (n *SpecifierQualifierList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*SpecifierQualifierList) String ¶
func (n *SpecifierQualifierList) String() string
String implements fmt.Stringer.
func (*SpecifierQualifierList) TypedefName ¶
func (n *SpecifierQualifierList) TypedefName() int
TypedefName implements Specifier.
type SpecifierQualifierListOpt ¶
type SpecifierQualifierListOpt struct {
SpecifierQualifierList *SpecifierQualifierList
// contains filtered or unexported fields
}
SpecifierQualifierListOpt represents data reduced by productions:
SpecifierQualifierListOpt:
/* empty */
| SpecifierQualifierList // Case 1
Example ¶
fmt.Println(exampleAST(129, "\U00100001 ( _Bool (") == (*SpecifierQualifierListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(130, "\U00100001 ( _Bool _Bool ("))
Output: &cc.SpecifierQualifierListOpt{ · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · TypeSpecifier: &cc.TypeSpecifier{ · · · Case: 9, · · · Token: example130.c:1:10: BOOL "_Bool", · · }, · }, }
func (*SpecifierQualifierListOpt) Pos ¶
func (n *SpecifierQualifierListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*SpecifierQualifierListOpt) String ¶
func (n *SpecifierQualifierListOpt) String() string
String implements fmt.Stringer.
type Statement ¶
type Statement struct {
AssemblerStatement *AssemblerStatement
Case int
CompoundStatement *CompoundStatement
ExpressionStatement *ExpressionStatement
IterationStatement *IterationStatement
JumpStatement *JumpStatement
LabeledStatement *LabeledStatement
SelectionStatement *SelectionStatement
}
Statement represents data reduced by productions:
Statement:
LabeledStatement
| CompoundStatement // Case 1
| ExpressionStatement // Case 2
| SelectionStatement // Case 3
| IterationStatement // Case 4
| JumpStatement // Case 5
| AssemblerStatement // Case 6
Example ¶
fmt.Println(exampleAST(214, "\U00100001 ( { default : ; !"))
Output: &cc.Statement{ · LabeledStatement: &cc.LabeledStatement{ · · Case: 2, · · Statement: &cc.Statement{ · · · Case: 2, · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · Token: example214.c:1:16: ';', · · · }, · · }, · · Token: example214.c:1:6: DEFAULT "default", · · Token2: example214.c:1:14: ':', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(215, "\U00100001 ( { { } !"))
Output: &cc.Statement{ · Case: 1, · CompoundStatement: &cc.CompoundStatement{ · · Token: example215.c:1:6: '{', · · Token2: example215.c:1:8: '}', · }, }
Example (Case2) ¶
fmt.Println(exampleAST(216, "\U00100001 ( { ; !"))
Output: &cc.Statement{ · Case: 2, · ExpressionStatement: &cc.ExpressionStatement{ · · Token: example216.c:1:6: ';', · }, }
Example (Case3) ¶
fmt.Println(exampleAST(217, "\U00100001 ( { if ( 'a' ) ; !"))
Output: &cc.Statement{ · Case: 3, · SelectionStatement: &cc.SelectionStatement{ · · ExpressionList: &cc.ExpressionList{ · · · Type: int, · · · Value: 97, · · · Expression: &cc.Expression{ · · · · Type: int, · · · · Value: 97, · · · · Case: 1, · · · · Token: example217.c:1:11: CHARCONST "'a'", · · · }, · · }, · · Statement: &cc.Statement{ · · · Case: 2, · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · Token: example217.c:1:17: ';', · · · }, · · }, · · Token: example217.c:1:6: IF "if", · · Token2: example217.c:1:9: '(', · · Token3: example217.c:1:15: ')', · }, }
Example (Case4) ¶
fmt.Println(exampleAST(218, "\U00100001 ( { while ( 'a' ) ; !"))
Output: &cc.Statement{ · Case: 4, · IterationStatement: &cc.IterationStatement{ · · ExpressionList: &cc.ExpressionList{ · · · Type: int, · · · Value: 97, · · · Expression: &cc.Expression{ · · · · Type: int, · · · · Value: 97, · · · · Case: 1, · · · · Token: example218.c:1:14: CHARCONST "'a'", · · · }, · · }, · · Statement: &cc.Statement{ · · · Case: 2, · · · ExpressionStatement: &cc.ExpressionStatement{ · · · · Token: example218.c:1:20: ';', · · · }, · · }, · · Token: example218.c:1:6: WHILE "while", · · Token2: example218.c:1:12: '(', · · Token3: example218.c:1:18: ')', · }, }
Example (Case5) ¶
fmt.Println(exampleAST(219, "\U00100001 ( { break ; !"))
Output: &cc.Statement{ · Case: 5, · JumpStatement: &cc.JumpStatement{ · · Case: 2, · · Token: example219.c:1:6: BREAK "break", · · Token2: example219.c:1:12: ';', · }, }
Example (Case6) ¶
fmt.Println(exampleAST(220, "\U00100001 ( { asm ( \"a\" ) !"))
Output: &cc.Statement{ · AssemblerStatement: &cc.AssemblerStatement{ · · BasicAssemblerStatement: &cc.BasicAssemblerStatement{ · · · AssemblerInstructions: &cc.AssemblerInstructions{ · · · · Token: example220.c:1:12: STRINGLITERAL "\"a\"", · · · }, · · · Token: example220.c:1:6: ASM "asm", · · · Token2: example220.c:1:10: '(', · · · Token3: example220.c:1:16: ')', · · }, · }, · Case: 6, }
type StaticAssertDeclaration ¶
type StaticAssertDeclaration struct {
ConstantExpression *ConstantExpression
Token xc.Token
Token2 xc.Token
Token3 xc.Token
Token4 xc.Token
Token5 xc.Token
Token6 xc.Token
}
StaticAssertDeclaration represents data reduced by production:
StaticAssertDeclaration:
"_Static_assert" '(' ConstantExpression ',' STRINGLITERAL ')' ';'
Example ¶
fmt.Println(exampleAST(284, "\U00100002 _Static_assert ( 'a' , \"b\" ) ;"))
Output: &cc.StaticAssertDeclaration{ · ConstantExpression: &cc.ConstantExpression{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example284.c:1:19: CHARCONST "'a'", · · }, · }, · Token: example284.c:1:2: STATIC_ASSERT "_Static_assert", · Token2: example284.c:1:17: '(', · Token3: example284.c:1:23: ',', · Token4: example284.c:1:25: STRINGLITERAL "\"b\"", · Token5: example284.c:1:29: ')', · Token6: example284.c:1:31: ';', }
func (*StaticAssertDeclaration) Pos ¶
func (n *StaticAssertDeclaration) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StaticAssertDeclaration) String ¶
func (n *StaticAssertDeclaration) String() string
String implements fmt.Stringer.
type StorageClassSpecifier ¶
type StorageClassSpecifier struct {
Case int
Token xc.Token
// contains filtered or unexported fields
}
StorageClassSpecifier represents data reduced by productions:
StorageClassSpecifier:
"typedef"
| "extern" // Case 1
| "static" // Case 2
| "auto" // Case 3
| "register" // Case 4
Example ¶
fmt.Println(exampleAST(95, "\U00100002 typedef ("))
Output: &cc.StorageClassSpecifier{ · Token: example95.c:1:2: TYPEDEF "typedef", }
Example (Case1) ¶
fmt.Println(exampleAST(96, "\U00100002 extern ("))
Output: &cc.StorageClassSpecifier{ · Case: 1, · Token: example96.c:1:2: EXTERN "extern", }
Example (Case2) ¶
fmt.Println(exampleAST(97, "\U00100002 static ("))
Output: &cc.StorageClassSpecifier{ · Case: 2, · Token: example97.c:1:2: STATIC "static", }
Example (Case3) ¶
fmt.Println(exampleAST(98, "\U00100002 auto ("))
Output: &cc.StorageClassSpecifier{ · Case: 3, · Token: example98.c:1:2: AUTO "auto", }
Example (Case4) ¶
fmt.Println(exampleAST(99, "\U00100002 register ("))
Output: &cc.StorageClassSpecifier{ · Case: 4, · Token: example99.c:1:2: REGISTER "register", }
func (*StorageClassSpecifier) Pos ¶
func (n *StorageClassSpecifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StorageClassSpecifier) String ¶
func (n *StorageClassSpecifier) String() string
String implements fmt.Stringer.
type StringLitID ¶
type StringLitID int
StringLitID is the type of an Expression.Value representing the numeric ID of a string literal.
type StructDeclaration ¶
type StructDeclaration struct {
Case int
SpecifierQualifierList *SpecifierQualifierList
StaticAssertDeclaration *StaticAssertDeclaration
StructDeclaratorList *StructDeclaratorList
Token xc.Token
}
StructDeclaration represents data reduced by productions:
StructDeclaration:
SpecifierQualifierList StructDeclaratorList ';'
| SpecifierQualifierList ';' // Case 1
| StaticAssertDeclaration // Case 2
Example ¶
fmt.Println(exampleAST(124, "\U00100002 struct { _Bool a ; }"))
Output: &cc.StructDeclaration{ · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · TypeSpecifier: &cc.TypeSpecifier{ · · · Case: 9, · · · Token: example124.c:1:11: BOOL "_Bool", · · }, · }, · StructDeclaratorList: &cc.StructDeclaratorList{ · · StructDeclarator: &cc.StructDeclarator{ · · · Declarator: &cc.Declarator{ · · · · Linkage: None, · · · · Type: bool, · · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · · Token: example124.c:1:17: IDENTIFIER "a", · · · · }, · · · }, · · }, · }, · Token: example124.c:1:19: ';', }
Example (Case1) ¶
fmt.Println(exampleAST(125, "\U00100002 struct { _Bool ; }"))
Output: &cc.StructDeclaration{ · Case: 1, · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · TypeSpecifier: &cc.TypeSpecifier{ · · · Case: 9, · · · Token: example125.c:1:11: BOOL "_Bool", · · }, · }, · Token: example125.c:1:17: ';', }
Example (Case2) ¶
fmt.Println(exampleAST(126, "\U00100002 struct { _Static_assert ( 'a' , \"b\" ) ; }"))
Output: &cc.StructDeclaration{ · Case: 2, · StaticAssertDeclaration: &cc.StaticAssertDeclaration{ · · ConstantExpression: &cc.ConstantExpression{ · · · Type: int, · · · Value: 97, · · · Expression: &cc.Expression{ · · · · Type: int, · · · · Value: 97, · · · · Case: 1, · · · · Token: example126.c:1:28: CHARCONST "'a'", · · · }, · · }, · · Token: example126.c:1:11: STATIC_ASSERT "_Static_assert", · · Token2: example126.c:1:26: '(', · · Token3: example126.c:1:32: ',', · · Token4: example126.c:1:34: STRINGLITERAL "\"b\"", · · Token5: example126.c:1:38: ')', · · Token6: example126.c:1:40: ';', · }, }
func (*StructDeclaration) Pos ¶
func (n *StructDeclaration) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructDeclaration) String ¶
func (n *StructDeclaration) String() string
String implements fmt.Stringer.
type StructDeclarationList ¶
type StructDeclarationList struct {
Case int
StructDeclaration *StructDeclaration
StructDeclarationList *StructDeclarationList
}
StructDeclarationList represents data reduced by productions:
StructDeclarationList:
StructDeclaration
| StructDeclarationList StructDeclaration // Case 1
Example ¶
fmt.Println(exampleAST(122, "\U00100002 struct { _Bool ; }"))
Output: &cc.StructDeclarationList{ · StructDeclaration: &cc.StructDeclaration{ · · Case: 1, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example122.c:1:11: BOOL "_Bool", · · · }, · · }, · · Token: example122.c:1:17: ';', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(123, "\U00100002 struct { _Bool ; _Bool ; }"))
Output: &cc.StructDeclarationList{ · StructDeclaration: &cc.StructDeclaration{ · · Case: 1, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example123.c:1:11: BOOL "_Bool", · · · }, · · }, · · Token: example123.c:1:17: ';', · }, · StructDeclarationList: &cc.StructDeclarationList{ · · Case: 1, · · StructDeclaration: &cc.StructDeclaration{ · · · Case: 1, · · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · · Case: 9, · · · · · Token: example123.c:1:19: BOOL "_Bool", · · · · }, · · · }, · · · Token: example123.c:1:25: ';', · · }, · }, }
func (*StructDeclarationList) Pos ¶
func (n *StructDeclarationList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructDeclarationList) String ¶
func (n *StructDeclarationList) String() string
String implements fmt.Stringer.
type StructDeclarator ¶
type StructDeclarator struct {
Case int
ConstantExpression *ConstantExpression
Declarator *Declarator
DeclaratorOpt *DeclaratorOpt
Token xc.Token
}
StructDeclarator represents data reduced by productions:
StructDeclarator:
Declarator
| DeclaratorOpt ':' ConstantExpression // Case 1
Example ¶
fmt.Println(exampleAST(133, "\U00100002 struct { _Bool a ,"))
Output: &cc.StructDeclarator{ · Declarator: &cc.Declarator{ · · Linkage: None, · · Type: bool, · · DirectDeclarator: &cc.DirectDeclarator{ · · · Token: example133.c:1:17: IDENTIFIER "a", · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(134, "\U00100002 struct { _Bool : 'a' ,"))
Output: &cc.StructDeclarator{ · Case: 1, · ConstantExpression: &cc.ConstantExpression{ · · Type: int, · · Value: 97, · · Expression: &cc.Expression{ · · · Type: int, · · · Value: 97, · · · Case: 1, · · · Token: example134.c:1:19: CHARCONST "'a'", · · }, · }, · Token: example134.c:1:17: ':', }
func (*StructDeclarator) Pos ¶
func (n *StructDeclarator) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructDeclarator) String ¶
func (n *StructDeclarator) String() string
String implements fmt.Stringer.
type StructDeclaratorList ¶
type StructDeclaratorList struct {
Case int
StructDeclarator *StructDeclarator
StructDeclaratorList *StructDeclaratorList
Token xc.Token
}
StructDeclaratorList represents data reduced by productions:
StructDeclaratorList:
StructDeclarator
| StructDeclaratorList ',' StructDeclarator // Case 1
Example ¶
fmt.Println(exampleAST(131, "\U00100002 struct { _Bool a ,"))
Output: &cc.StructDeclaratorList{ · StructDeclarator: &cc.StructDeclarator{ · · Declarator: &cc.Declarator{ · · · Linkage: None, · · · Type: bool, · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · Token: example131.c:1:17: IDENTIFIER "a", · · · }, · · }, · }, }
Example (Case1) ¶
fmt.Println(exampleAST(132, "\U00100002 struct { _Bool a , b ,"))
Output: &cc.StructDeclaratorList{ · StructDeclarator: &cc.StructDeclarator{ · · Declarator: &cc.Declarator{ · · · Linkage: None, · · · Type: bool, · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · Token: example132.c:1:17: IDENTIFIER "a", · · · }, · · }, · }, · StructDeclaratorList: &cc.StructDeclaratorList{ · · Case: 1, · · StructDeclarator: &cc.StructDeclarator{ · · · Declarator: &cc.Declarator{ · · · · Linkage: None, · · · · Type: bool, · · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · · Token: example132.c:1:21: IDENTIFIER "b", · · · · }, · · · }, · · }, · · Token: example132.c:1:19: ',', · }, }
func (*StructDeclaratorList) Pos ¶
func (n *StructDeclaratorList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructDeclaratorList) String ¶
func (n *StructDeclaratorList) String() string
String implements fmt.Stringer.
type StructOrUnion ¶
StructOrUnion represents data reduced by productions:
StructOrUnion:
"struct"
| "union" // Case 1
Example ¶
fmt.Println(exampleAST(120, "\U00100002 struct {"))
Output: &cc.StructOrUnion{ · Token: example120.c:1:2: STRUCT "struct", }
Example (Case1) ¶
fmt.Println(exampleAST(121, "\U00100002 union {"))
Output: &cc.StructOrUnion{ · Case: 1, · Token: example121.c:1:2: UNION "union", }
func (*StructOrUnion) Pos ¶
func (n *StructOrUnion) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructOrUnion) String ¶
func (n *StructOrUnion) String() string
String implements fmt.Stringer.
type StructOrUnionSpecifier ¶
type StructOrUnionSpecifier struct {
Case int
IdentifierOpt *IdentifierOpt
StructDeclarationList *StructDeclarationList
StructOrUnion *StructOrUnion
Token xc.Token
Token2 xc.Token
// contains filtered or unexported fields
}
StructOrUnionSpecifier represents data reduced by productions:
StructOrUnionSpecifier:
StructOrUnion IdentifierOpt '{' StructDeclarationList '}'
| StructOrUnion IDENTIFIER // Case 1
| StructOrUnion IdentifierOpt '{' '}' // Case 2
Example ¶
fmt.Println(exampleAST(117, "\U00100002 struct { int i; } ("))
Output: &cc.StructOrUnionSpecifier{ · StructDeclarationList: &cc.StructDeclarationList{ · · StructDeclaration: &cc.StructDeclaration{ · · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · · Case: 3, · · · · · Token: example117.c:1:11: INT "int", · · · · }, · · · }, · · · StructDeclaratorList: &cc.StructDeclaratorList{ · · · · StructDeclarator: &cc.StructDeclarator{ · · · · · Declarator: &cc.Declarator{ · · · · · · Linkage: None, · · · · · · Type: int, · · · · · · DirectDeclarator: &cc.DirectDeclarator{ · · · · · · · Token: example117.c:1:15: IDENTIFIER "i", · · · · · · }, · · · · · }, · · · · }, · · · }, · · · Token: example117.c:1:16: ';', · · }, · }, · StructOrUnion: &cc.StructOrUnion{ · · Token: example117.c:1:2: STRUCT "struct", · }, · Token: example117.c:1:9: '{', · Token2: example117.c:1:18: '}', }
Example (Case1) ¶
fmt.Println(exampleAST(118, "\U00100002 struct a ("))
Output: &cc.StructOrUnionSpecifier{ · Case: 1, · StructOrUnion: &cc.StructOrUnion{ · · Token: example118.c:1:2: STRUCT "struct", · }, · Token: example118.c:1:9: IDENTIFIER "a", }
Example (Case2) ¶
fmt.Println(exampleAST(119, "\U00100002 struct { } ("))
Output: &cc.StructOrUnionSpecifier{ · Case: 2, · StructOrUnion: &cc.StructOrUnion{ · · Token: example119.c:1:2: STRUCT "struct", · }, · Token: example119.c:1:9: '{', · Token2: example119.c:1:11: '}', }
func (*StructOrUnionSpecifier) Declarator ¶
func (n *StructOrUnionSpecifier) Declarator() *Declarator
Declarator returns a synthetic Declarator when a tagged struc/union type is defined inline a declaration.
func (*StructOrUnionSpecifier) Pos ¶
func (n *StructOrUnionSpecifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*StructOrUnionSpecifier) String ¶
func (n *StructOrUnionSpecifier) String() string
String implements fmt.Stringer.
type TranslationUnit ¶
type TranslationUnit struct {
Comments map[token.Pos]int // Position -> comment ID. Enable using the KeepComments option.
Declarations *Bindings
Macros map[int]*Macro // Ident ID -> preprocessor macro defined by ident.
Model *Model // Model used to parse the TranslationUnit.
Case int
ExternalDeclaration *ExternalDeclaration
TranslationUnit *TranslationUnit
}
TranslationUnit represents data reduced by productions:
TranslationUnit:
ExternalDeclaration
| TranslationUnit ExternalDeclaration // Case 1
Example ¶
fmt.Println(exampleAST(245, "\U00100002 ;"))
Output: &cc.TranslationUnit{ · ExternalDeclaration: &cc.ExternalDeclaration{ · · Case: 3, · · Token: example245.c:1:2: ';', · }, }
Example (Case1) ¶
fmt.Println(exampleAST(246, "\U00100002 ; ;"))
Output: &cc.TranslationUnit{ · ExternalDeclaration: &cc.ExternalDeclaration{ · · Case: 3, · · Token: example246.c:1:2: ';', · }, · TranslationUnit: &cc.TranslationUnit{ · · Case: 1, · · ExternalDeclaration: &cc.ExternalDeclaration{ · · · Case: 3, · · · Token: example246.c:1:4: ';', · · }, · }, }
func Parse ¶
Parse defines any macros in predefine. Then Parse preprocesses and parses the translation unit consisting of files in paths. The m communicates the scalar types model and opts allow to amend parser behavior. m cannot be reused and passed to Parse again.
func (*TranslationUnit) Pos ¶
func (n *TranslationUnit) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*TranslationUnit) String ¶
func (n *TranslationUnit) String() string
String implements fmt.Stringer.
type Type ¶
type Type interface {
// AlignOf returns the alignment in bytes of a value of this type when
// allocated in memory not as a struct field. Incomplete struct types
// have no alignment and the value returned will be < 0.
AlignOf() int
// Bits returns the bit width of the type's value. For non integral
// types the returned value will < 0.
Bits() int
// SetBits returns a type instance with the value Bits() will return
// equal to n. SetBits panics for n < 0.
SetBits(n int) Type
// CanAssignTo returns whether this type can be assigned to dst.
CanAssignTo(dst Type) bool
// Declarator returns the full Declarator which defined an entity of
// this type. The returned declarator is possibly artificial.
Declarator() *Declarator
// RawDeclarator returns the typedef declarator associated with a type
// if this type is a typedef name. Otherwise the normal declarator is
// returned.
RawDeclarator() *Declarator
// Element returns the type this Ptr type points to or the element type
// of an Array type.
Element() Type
// Elements returns the number of elements an Array type has. The
// returned value is < 0 if this type is not an Array or if the array
// is not of a constant size.
Elements() int
// EnumeratorList returns the enumeration constants defined by an Enum
// type, if any.
EnumeratorList() []EnumConstant
// Kind returns one of Ptr, Void, Int, ...
Kind() Kind
// Member returns the type of a member of this Struct or Union type,
// having numeric name identifier nm.
Member(nm int) (*Member, error)
// Members returns the members of a Struct or Union type in declaration
// order. Returned members are valid iff non nil.
//
// Note: Non nil members of length 0 means the struct/union has no
// members or the type is incomplete, which is indicated by the
// isIncomplete return value.
//
// Note 2: C99 standard does not allow empty structs/unions, but GCC
// supports that as an extension.
Members() (members []Member, isIncomplete bool)
// Parameters returns the parameters of a Function type in declaration
// order. Result is valid iff params is not nil.
//
// Note: len(params) == 0 is fine and just means the function has no
// parameters.
Parameters() (params []Parameter, isVariadic bool)
// Pointer returns a type that points to this type.
Pointer() Type
// Result returns the result type of a Function type.
Result() Type
// Sizeof returns the number of bytes needed to store a value of this
// type. Incomplete struct types have no size and the value returned
// will be < 0.
SizeOf() int
// Specifier returns the Specifier of this type.
Specifier() Specifier
// String returns a C-like type specifier of this type.
String() string
// StructAlignOf returns the alignment in bytes of a value of this type
// when allocated in memory as a struct field. Incomplete struct types
// have no alignment and the value returned will be < 0.
StructAlignOf() int
// Tag returns the ID of a tag of a Struct, Union or Enum type, if any.
// Otherwise the returned value is zero.
Tag() int
// contains filtered or unexported methods
}
Type decribes properties of a C type.
type TypeName ¶
type TypeName struct {
Type Type
AbstractDeclaratorOpt *AbstractDeclaratorOpt
SpecifierQualifierList *SpecifierQualifierList
// contains filtered or unexported fields
}
TypeName represents data reduced by production:
TypeName:
SpecifierQualifierList AbstractDeclaratorOpt
Example ¶
fmt.Println(exampleAST(184, "\U00100001 ( _Bool )"))
Output: &cc.TypeName{ · Type: bool, · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · TypeSpecifier: &cc.TypeSpecifier{ · · · Case: 9, · · · Token: example184.c:1:4: BOOL "_Bool", · · }, · }, }
type TypeQualifier ¶
TypeQualifier represents data reduced by productions:
TypeQualifier:
"const"
| "restrict" // Case 1
| "volatile" // Case 2
Example ¶
fmt.Println(exampleAST(144, "\U00100002 const !"))
Output: &cc.TypeQualifier{ · Token: example144.c:1:2: CONST "const", }
Example (Case1) ¶
fmt.Println(exampleAST(145, "\U00100002 restrict !"))
Output: &cc.TypeQualifier{ · Case: 1, · Token: example145.c:1:2: RESTRICT "restrict", }
Example (Case2) ¶
fmt.Println(exampleAST(146, "\U00100002 volatile !"))
Output: &cc.TypeQualifier{ · Case: 2, · Token: example146.c:1:2: VOLATILE "volatile", }
func (*TypeQualifier) Pos ¶
func (n *TypeQualifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*TypeQualifier) String ¶
func (n *TypeQualifier) String() string
String implements fmt.Stringer.
type TypeQualifierList ¶
type TypeQualifierList struct {
Case int
TypeQualifier *TypeQualifier
TypeQualifierList *TypeQualifierList
// contains filtered or unexported fields
}
TypeQualifierList represents data reduced by productions:
TypeQualifierList:
TypeQualifier
| TypeQualifierList TypeQualifier // Case 1
Example ¶
fmt.Println(exampleAST(165, "\U00100002 * const !"))
Output: &cc.TypeQualifierList{ · TypeQualifier: &cc.TypeQualifier{ · · Token: example165.c:1:4: CONST "const", · }, }
Example (Case1) ¶
fmt.Println(exampleAST(166, "\U00100002 * const const !"))
Output: &cc.TypeQualifierList{ · TypeQualifier: &cc.TypeQualifier{ · · Token: example166.c:1:4: CONST "const", · }, · TypeQualifierList: &cc.TypeQualifierList{ · · Case: 1, · · TypeQualifier: &cc.TypeQualifier{ · · · Token: example166.c:1:10: CONST "const", · · }, · }, }
func (*TypeQualifierList) Pos ¶
func (n *TypeQualifierList) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*TypeQualifierList) String ¶
func (n *TypeQualifierList) String() string
String implements fmt.Stringer.
type TypeQualifierListOpt ¶
type TypeQualifierListOpt struct {
TypeQualifierList *TypeQualifierList
}
TypeQualifierListOpt represents data reduced by productions:
TypeQualifierListOpt:
/* empty */
| TypeQualifierList // Case 1
Example ¶
fmt.Println(exampleAST(167, "\U00100002 * (") == (*TypeQualifierListOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(168, "\U00100002 * const !"))
Output: &cc.TypeQualifierListOpt{ · TypeQualifierList: &cc.TypeQualifierList{ · · TypeQualifier: &cc.TypeQualifier{ · · · Token: example168.c:1:4: CONST "const", · · }, · }, }
func (*TypeQualifierListOpt) Pos ¶
func (n *TypeQualifierListOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*TypeQualifierListOpt) String ¶
func (n *TypeQualifierListOpt) String() string
String implements fmt.Stringer.
type TypeSpecifier ¶
type TypeSpecifier struct {
Type Type // Type of typeof.
Case int
EnumSpecifier *EnumSpecifier
Expression *Expression
StructOrUnionSpecifier *StructOrUnionSpecifier
Token xc.Token
Token2 xc.Token
Token3 xc.Token
TypeName *TypeName
// contains filtered or unexported fields
}
TypeSpecifier represents data reduced by productions:
TypeSpecifier:
"void"
| "char" // Case 1
| "short" // Case 2
| "int" // Case 3
| "long" // Case 4
| "float" // Case 5
| "double" // Case 6
| "signed" // Case 7
| "unsigned" // Case 8
| "_Bool" // Case 9
| "_Complex" // Case 10
| StructOrUnionSpecifier // Case 11
| EnumSpecifier // Case 12
| TYPEDEFNAME // Case 13
| "typeof" '(' Expression ')' // Case 14
| "typeof" '(' TypeName ')' // Case 15
Example ¶
fmt.Println(exampleAST(100, "\U00100002 void ("))
Output: &cc.TypeSpecifier{ · Token: example100.c:1:2: VOID "void", }
Example (Case01) ¶
fmt.Println(exampleAST(101, "\U00100002 char ("))
Output: &cc.TypeSpecifier{ · Case: 1, · Token: example101.c:1:2: CHAR "char", }
Example (Case02) ¶
fmt.Println(exampleAST(102, "\U00100002 short ("))
Output: &cc.TypeSpecifier{ · Case: 2, · Token: example102.c:1:2: SHORT "short", }
Example (Case03) ¶
fmt.Println(exampleAST(103, "\U00100002 int ("))
Output: &cc.TypeSpecifier{ · Case: 3, · Token: example103.c:1:2: INT "int", }
Example (Case04) ¶
fmt.Println(exampleAST(104, "\U00100002 long ("))
Output: &cc.TypeSpecifier{ · Case: 4, · Token: example104.c:1:2: LONG "long", }
Example (Case05) ¶
fmt.Println(exampleAST(105, "\U00100002 float ("))
Output: &cc.TypeSpecifier{ · Case: 5, · Token: example105.c:1:2: FLOAT "float", }
Example (Case06) ¶
fmt.Println(exampleAST(106, "\U00100002 double ("))
Output: &cc.TypeSpecifier{ · Case: 6, · Token: example106.c:1:2: DOUBLE "double", }
Example (Case07) ¶
fmt.Println(exampleAST(107, "\U00100002 signed ("))
Output: &cc.TypeSpecifier{ · Case: 7, · Token: example107.c:1:2: SIGNED "signed", }
Example (Case08) ¶
fmt.Println(exampleAST(108, "\U00100002 unsigned ("))
Output: &cc.TypeSpecifier{ · Case: 8, · Token: example108.c:1:2: UNSIGNED "unsigned", }
Example (Case09) ¶
fmt.Println(exampleAST(109, "\U00100002 _Bool ("))
Output: &cc.TypeSpecifier{ · Case: 9, · Token: example109.c:1:2: BOOL "_Bool", }
Example (Case10) ¶
fmt.Println(exampleAST(110, "\U00100002 _Complex ("))
Output: &cc.TypeSpecifier{ · Case: 10, · Token: example110.c:1:2: COMPLEX "_Complex", }
Example (Case11) ¶
fmt.Println(exampleAST(111, "\U00100002 struct a ("))
Output: &cc.TypeSpecifier{ · Case: 11, · StructOrUnionSpecifier: &cc.StructOrUnionSpecifier{ · · Case: 1, · · StructOrUnion: &cc.StructOrUnion{ · · · Token: example111.c:1:2: STRUCT "struct", · · }, · · Token: example111.c:1:9: IDENTIFIER "a", · }, }
Example (Case12) ¶
fmt.Println(exampleAST(112, "\U00100002 enum a ("))
Output: &cc.TypeSpecifier{ · Case: 12, · EnumSpecifier: &cc.EnumSpecifier{ · · Case: 1, · · Token: example112.c:1:2: ENUM "enum", · · Token2: example112.c:1:7: IDENTIFIER "a", · }, }
Example (Case13) ¶
fmt.Println(exampleAST(113, "\U00100002 typedef int i; i j;"))
Output: &cc.TypeSpecifier{ · Case: 13, · Token: example113.c:1:17: TYPEDEFNAME "i", }
Example (Case14) ¶
fmt.Println(exampleAST(114, "\U00100002 typeof ( 'a' ) ("))
Output: &cc.TypeSpecifier{ · Type: int, · Case: 14, · Expression: &cc.Expression{ · · Type: int, · · Value: 97, · · Case: 1, · · Token: example114.c:1:11: CHARCONST "'a'", · }, · Token: example114.c:1:2: TYPEOF "typeof", · Token2: example114.c:1:9: '(', · Token3: example114.c:1:15: ')', }
Example (Case15) ¶
fmt.Println(exampleAST(115, "\U00100002 typeof ( _Bool ) ("))
Output: &cc.TypeSpecifier{ · Type: bool, · Case: 15, · Token: example115.c:1:2: TYPEOF "typeof", · Token2: example115.c:1:9: '(', · Token3: example115.c:1:17: ')', · TypeName: &cc.TypeName{ · · Type: bool, · · SpecifierQualifierList: &cc.SpecifierQualifierList{ · · · TypeSpecifier: &cc.TypeSpecifier{ · · · · Case: 9, · · · · Token: example115.c:1:11: BOOL "_Bool", · · · }, · · }, · }, }
func (*TypeSpecifier) Pos ¶
func (n *TypeSpecifier) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.
func (*TypeSpecifier) String ¶
func (n *TypeSpecifier) String() string
String implements fmt.Stringer.
type VolatileOpt ¶
VolatileOpt represents data reduced by productions:
VolatileOpt:
/* empty */
| "volatile" // Case 1
Example ¶
fmt.Println(exampleAST(268, "\U00100002 asm (") == (*VolatileOpt)(nil))
Output: true
Example (Case1) ¶
fmt.Println(exampleAST(269, "\U00100002 asm volatile ("))
Output: &cc.VolatileOpt{ · Token: example269.c:1:6: VOLATILE "volatile", }
func (*VolatileOpt) Pos ¶
func (n *VolatileOpt) Pos() token.Pos
Pos reports the position of the first component of n or zero if it's empty.