Added mappings for LLVM C and LLVM C Extensions
These are used to generate C callouts for jv:llvm_s project.
"{ Package: 'jv:cface' }"
"{ NameSpace: Cface }"
SmaCC::SmaCCParser subclass:#CDefinitionParser
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Cface-Parser'
!
!CDefinitionParser class methodsFor:'generated-accessing'!
scannerClass
^Cface::CDefinitionScanner
! !
!CDefinitionParser class methodsFor:'generated-comments'!
parserDefinitionComment
"%start DefinitionFile;
DefinitionFile:
Definition*
{ CDefinitionFileNode new definitions: '1' } ;
Definition:
Function { '1' }
| Struct { '1' }
| Union { '1' }
| Enum { '1' }
| Typedef { '1' }
;
Generated:
""#Generated"" ""from:"" <file> 'file' { file value }
;
Function:
""("" ""function"" <name> 'name' ""("" Argument* 'arguments' "")"" Return 'return' "")""
{ CFunctionNode new
cName:(name value);
arguments:arguments;
return:return }
;
Argument:
""("" ""argument"" ""("" Type 'type' "")"" <name> 'name' "")""
{ (CArgumentNode new
cName:(name value);
type:type) }
| ""("" ""argument"" ""("" Type 'type' "")"" ""value"" 'name' "")""
{ (CArgumentNode new
cName:(name value);
type:type) }
| ""("" ""argument"" ""("" Type 'type' "")"" ""array"" 'name' "")""
{ (CArgumentNode new
cName:(name value);
type:type) }
;
Return:
""("" ""return"" Type 'Type' "")"" { Type }
;
FunctionPrototype:
""("" ""function-type"" <name> 'name' ""("" FunctionPrototypeArgument* 'arguments' "")"" Return 'return' "")""
{ CFunctionTypeNode new
cName:(name value);
arguments:arguments;
return:return }
;
FunctionPrototypeArgument:
""("" ""argument"" ""("" Type "")"" "")""
{ CArgumentNode new
cName:nil;
type:'4' }
;
Type:
Const
{ '1' }
| BuiltinType
{ '1' }
| Pointer
{ '1' }
| Array
{ '1' }
| FunctionPrototype
{ '1' }
| Struct
{ '1' }
| Union
{ '1' }
| Enum
{ '1' }
| <name>
{ CUserDefinedTypeNode new cName: '1' value }
;
BuiltinType:
""unsigned"" BuiltinType
{ CUnsignedNode new type: '2' }
| ""signed"" BuiltinType
{ '2' }
| ""long"" BuiltinType
{ CLongNode new type: '2' }
| ""short"" BuiltinType
{ CShortNode new type: '2' }
| ""int""
{ CIntNode new }
| ""char""
{ CCharNode new }
| ""double""
{ CDoubleNode new }
| ""float""
{ CFloatNode new }
| ""void""
{ CVoidNode new }
| ""wchar_t""
{ CWCharNode new }
;
Array:
""("" ""array"" ""("" Type "")"" <number> "")""
{ CArrayNode new
type:'4';
size:'6' value }
;
Const:
""const"" Type
{ CConstNode new type: '2' }
;
Pointer:
""("" ""pointer-to"" Type "")""
{ CPointerNode new type:'3' } ;
Struct:
""("" ""struct"" [ <name> ] 'name' "":size"" <number> 'size' StructField* 'fields' "")""
{ CStructNode new
cName:(name ifNotNil:[name value]);
cBitSize: size value asNumber;
fields:fields;
foreign:false
}
| ""("" ""struct-foreign"" [ <name> ] 'name' "":size"" <number> 'size' StructField* 'fields' "")""
{ CStructNode new
cName:(name ifNotNil:[name value]);
cBitSize: size value asNumber;
fields:fields;
foreign:true
}
;
Union:
""("" ""union"" [ <name> ] 'name' "":size"" <number> 'size' StructField* 'fields' "")""
{ CUnionNode new
cName:(name ifNotNil:[name value]);
cBitSize: size value asNumber;
fields:fields;
foreign: false
}
| ""("" ""union-foreign"" [ <name> ] 'name' "":size"" <number> 'size' StructField* 'fields' "")""
{ CUnionNode new
cName:(name ifNotNil:[name value]);
cBitSize: size value asNumber;
fields:fields;
foreign:true
}
;
StructField:
""("" ""field"" ""("" Type "")"" <name> "":offset"" <number> "")""
{ CStructFieldNode new
cName:('6' value);
offset: '8' value asNumber;
type:'4' }
| ""("" ""field"" ""("" Type "")"" ""value"" "":offset"" <number> "")""
{ CStructFieldNode new
cName:('6' value);
offset: '8' value asNumber;
type:'4' }
| ""("" ""field"" ""("" Type "")"" ""function"" "":offset"" <number> "")""
{ CStructFieldNode new
cName:('6' value);
offset: '8' value asNumber;
type:'4' }
| ""("" ""field"" ""("" "")"" "":offset"" "")""
{ nil }
;
Enum:
""("" ""enum"" 'foreign' [ <name> ] 'name'EnumValue* 'fields' "")""
{ CEnumNode new
cName:(name ifNotNil:[name value]);
values:fields;
foreign: false;
typedef:false
}
| ""("" ""enum-foreign"" [ <name> ] 'name'EnumValue* 'fields' "")""
{ CEnumNode new
cName:(name ifNotNil:[name value]);
values:fields;
foreign: true;
typedef:false
}
;
EnumValue:
""("" ""value"" ""("" <name> 'name' "")"" <number> 'number' "")""
{ (CEnumValueNode new
cName:(name value);
intValue:(number value)) } ;
Typedef:
""("" ""typedef"" <name> 'name' Type 'type' "")""
{ CTypedefNode new
cName:(name value);
type:type}
| ""("" ""typedef-foreign"" <name> 'name' Type 'type' "")""
{ CTypedefNode new
cName:(name value);
type:type;
foreign:true }
;
"
! !
!CDefinitionParser class methodsFor:'generated-starting states'!
startingStateForDefFile
^1
"Modified: / 10-02-2008 / 10:29:48 / janfrog"
!
startingStateForDefinitionFile
^1
! !
!CDefinitionParser methodsFor:'accessing'!
nodeStack
^ nodeStack
"Created: / 02-11-2007 / 12:34:17 / haja"
! !
!CDefinitionParser methodsFor:'generated-reduction actions'!
reduceActionForArgument1:nodes
^ ((CArgumentNode new)
cName:((nodes at:6) value);
type:(nodes at:4))
!
reduceActionForArgument2:nodes
^ ((CArgumentNode new)
cName:((nodes at:6) value);
type:(nodes at:4))
!
reduceActionForArgument3:nodes
^ ((CArgumentNode new)
cName:((nodes at:6) value);
type:(nodes at:4))
!
reduceActionForArguments1:nodes
^ OrderedCollection new
"Modified: / 28-11-2007 / 17:11:19 / haja"
!
reduceActionForArguments2:nodes
^ (nodes at:6)
addFirst:(FunctionArgumentNode cName:((nodes at:4) value) id:(nodes at:2));
yourself
"Modified: / 28-11-2007 / 17:11:19 / haja"
"Modified: / 10-02-2008 / 19:08:18 / janfrog"
!
reduceActionForArray1:nodes
^ (CArrayNode new)
type:(nodes at:4);
size:(nodes at:6) value
!
reduceActionForBuiltinType10:nodes
^ CWCharNode new
!
reduceActionForBuiltinType1:nodes
^ CUnsignedNode new type:(nodes at:2)
!
reduceActionForBuiltinType2:nodes
^ nodes at:2
!
reduceActionForBuiltinType3:nodes
^ CLongNode new type:(nodes at:2)
!
reduceActionForBuiltinType4:nodes
^ CShortNode new type:(nodes at:2)
!
reduceActionForBuiltinType5:nodes
^ CIntNode new
!
reduceActionForBuiltinType6:nodes
^ CCharNode new
!
reduceActionForBuiltinType7:nodes
^ CDoubleNode new
!
reduceActionForBuiltinType8:nodes
^ CFloatNode new
!
reduceActionForBuiltinType9:nodes
^ CVoidNode new
!
reduceActionForConst1:nodes
^ CConstNode new type:(nodes at:2)
!
reduceActionForDefBody1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody2:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody3:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody4:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody5:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody6:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody7:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody8:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefBody9:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 10:32:17 / janfrog"
!
reduceActionForDefFile1:nodes
^ FileNode generatedFrom:(nodes at:1) defBody:(nodes at:2)
"Modified: / 10-02-2008 / 10:29:48 / janfrog"
!
reduceActionForDefinition1:nodes
^ nodes at:1
!
reduceActionForDefinition2:nodes
^ nodes at:1
!
reduceActionForDefinition3:nodes
^ nodes at:1
!
reduceActionForDefinition4:nodes
^ nodes at:1
!
reduceActionForDefinition5:nodes
^ nodes at:1
!
reduceActionForDefinition6:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 19:43:38 / janfrog"
!
reduceActionForDefinition7:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 19:43:38 / janfrog"
!
reduceActionForDefinition8:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 19:43:38 / janfrog"
!
reduceActionForDefinitionFile1:nodes
^ CDefinitionFileNode new definitions:(nodes at:1)
!
reduceActionForEnum1:nodes
^ (CEnumNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
values:(nodes at:4);
foreign:false;
typeDef:false
"Modified: / 26-12-2014 / 23:45:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
reduceActionForEnum2:nodes
^ (CEnumNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
values:(nodes at:4);
foreign:true;
typeDef:false
"Modified: / 26-12-2014 / 23:45:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
reduceActionForEnumField1:nodes
^ (CEnumFieldNode name:((nodes at:4) value) number:((nodes at:6) value))
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForEnumFields1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:26:48 / janfrog"
!
reduceActionForEnumFields2:nodes
^ (nodes at:8)
addFirst:(EnumFieldNode name:((nodes at:4) value)
number:((nodes at:6) value));
yourself
"Modified: / 10-02-2008 / 10:26:49 / janfrog"
!
reduceActionForEnumValue1:nodes
^ ((CEnumValueNode new)
cName:((nodes at:4) value);
intValue:((nodes at:6) value))
!
reduceActionForFunction1:nodes
^ (CFunctionNode new)
cName:((nodes at:3) value);
arguments:(nodes at:5);
return:(nodes at:7)
!
reduceActionForFunctionArguments1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:25:11 / janfrog"
!
reduceActionForFunctionArguments2:nodes
^ (nodes at:8)
addFirst:(FunctionArgumentNode cName:((nodes at:6) value) id:(nodes at:4));
yourself
"Modified: / 10-02-2008 / 19:08:18 / janfrog"
!
reduceActionForFunctionPrototype1:nodes
^ (CFunctionTypeNode new)
cName:((nodes at:3) value);
arguments:(nodes at:5);
return:(nodes at:7)
!
reduceActionForFunctionPrototypeArgument1:nodes
^ (CArgumentNode new)
cName:nil;
type:(nodes at:4)
!
reduceActionForFunctionPrototypeArguments1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForFunctionPrototypeArguments2:nodes
^ (nodes at:7)
addFirst:(CArgumentNode cName:nil id:(nodes at:4));
yourself
"Modified: / 10-02-2008 / 19:08:18 / janfrog"
!
reduceActionForGenerated1:nodes
^ (nodes at:3) value
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef1:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef2:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef3:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef4:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef5:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Pointer___Array___Function___Type1:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Pointer___Array___Function___Type2:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Pointer___Array___Function___Type3:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____Pointer___Array___Function___Type4:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____StructField___Struct___Union1:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____StructField___Struct___Union2:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____StructField___Struct___Union3:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____UnionField___Struct___Union1:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____UnionField___Struct___Union2:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_____UnionField___Struct___Union3:nodes
^ nodes at:1
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForGroup_______foreign_1:nodes
^ nodes at:1
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
reduceActionForGroup_______type_1:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:36:56 / haja"
!
reduceActionForGroup_______typedef_1:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:31:48 / haja"
!
reduceActionForGroup______foreign_1:nodes
^ nodes at:1
"Modified: / 19-11-2007 / 09:51:07 / haja"
!
reduceActionForGroup______name_1:nodes
^ nodes at:1
!
reduceActionForGroup______number_____name_1:nodes
^ nodes at:1
"Modified: / 29-10-2007 / 10:36:04 / haja"
!
reduceActionForGroup______number_____name_2:nodes
^ nodes at:1
"Modified: / 29-10-2007 / 10:36:04 / haja"
!
reduceActionForGroup______type_1:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForGroup______type__1:nodes
^ nodes at:1
"Modified: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForGroup______typedef__1:nodes
^ nodes at:1
"Modified: / 12-02-2008 / 21:56:04 / janfrog"
!
reduceActionForId1:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForId2:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForId3:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForId4:nodes
^ nodes at:1
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForId5:nodes
^ IdNode names:(nodes at:1)
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForLocalStruct1:nodes
^ StructNode
name:((nodes at:3) value)
fields:(nodes at:4)
local:true
foreign:((nodes at:2) isNil not)
typedef:false
"Modified: / 10-02-2008 / 09:46:55 / janfrog"
!
reduceActionForLocalUnion1:nodes
^ UnionNode
name:((nodes at:3) value)
fields:(nodes at:4)
local:true
foreign:((nodes at:2) isNil not)
typedef:false
"Modified: / 10-02-2008 / 09:46:55 / janfrog"
!
reduceActionForLong1:nodes
^ CUnsignedNode new type:(nodes at:1)
"Created: / 10-02-2008 / 19:50:10 / janfrog"
!
reduceActionForNames1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForNames2:nodes
^ (nodes at:2)
addFirst:(nodes at:1) value;
yourself
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForOptional__Group_______foreign_1:nodes
^ nil
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
reduceActionForOptional__Group_______foreign_2:nodes
^ nodes at:1
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
reduceActionForOptional__Group_______type_1:nodes
^ nil
"Created: / 05-12-2007 / 18:36:56 / haja"
!
reduceActionForOptional__Group_______type_2:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:36:56 / haja"
!
reduceActionForOptional__Group_______typedef_1:nodes
^ nil
"Created: / 05-12-2007 / 18:31:48 / haja"
!
reduceActionForOptional__Group_______typedef_2:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:31:48 / haja"
!
reduceActionForOptional__Group______foreign_1:nodes
^ nil
"Modified: / 19-11-2007 / 09:51:07 / haja"
!
reduceActionForOptional__Group______foreign_2:nodes
^ nodes at:1
"Modified: / 19-11-2007 / 09:51:07 / haja"
!
reduceActionForOptional__Group______name_1:nodes
^ nil
!
reduceActionForOptional__Group______name_2:nodes
^ nodes at:1
!
reduceActionForOptional__Group______type_1:nodes
^ nil
"Created: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForOptional__Group______type_2:nodes
^ nodes at:1
"Created: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForOptional__Group______type__1:nodes
^ nil
"Modified: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForOptional__Group______type__2:nodes
^ nodes at:1
"Modified: / 05-12-2007 / 18:45:57 / haja"
!
reduceActionForOptional__Group______typedef__1:nodes
^ nil
"Modified: / 12-02-2008 / 21:56:04 / janfrog"
!
reduceActionForOptional__Group______typedef__2:nodes
^ nodes at:1
"Modified: / 12-02-2008 / 21:56:04 / janfrog"
!
reduceActionForOptional___local_1:nodes
^ nil
"Modified: / 29-10-2007 / 11:05:17 / haja"
!
reduceActionForOptional___local_2:nodes
^ nodes at:1
"Modified: / 29-10-2007 / 11:05:17 / haja"
!
reduceActionForPointer1:nodes
^ CPointerNode new type:(nodes at:3)
!
reduceActionForRepeat_Multiple___name_1:nodes
^ OrderedCollection with:(nodes at:1)
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat_Multiple___name_2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Argument1:nodes
^ OrderedCollection new
!
reduceActionForRepeat__Argument2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
!
reduceActionForRepeat__Definition1:nodes
^ OrderedCollection new
!
reduceActionForRepeat__Definition2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
!
reduceActionForRepeat__EnumField1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForRepeat__EnumField2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForRepeat__EnumValue1:nodes
^ OrderedCollection new
!
reduceActionForRepeat__EnumValue2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
!
reduceActionForRepeat__FunctionPrototypeArgument1:nodes
^ OrderedCollection new
!
reduceActionForRepeat__FunctionPrototypeArgument2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
!
reduceActionForRepeat__Group_____Function___Struct___Enum___Union___Typedef1:nodes
^ OrderedCollection new
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Group_____Function___Struct___Enum___Union___Typedef2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Group_____StructField___Struct___Union1:nodes
^ OrderedCollection new
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Group_____StructField___Struct___Union2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Group_____UnionField___Struct___Union1:nodes
^ OrderedCollection new
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__Group_____UnionField___Struct___Union2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Created: / 25-10-2007 / 18:05:35 / haja"
!
reduceActionForRepeat__StructField1:nodes
^ OrderedCollection new
!
reduceActionForRepeat__StructField2:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
!
reduceActionForReturn1:nodes
^ nodes at:3
!
reduceActionForStruct1:nodes
^ (CStructNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
cBitSize:(nodes at:5) value asNumber;
fields:(nodes at:6);
foreign:false
!
reduceActionForStruct2:nodes
^ (CStructNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
cBitSize:(nodes at:5) value asNumber;
fields:(nodes at:6);
foreign:true
!
reduceActionForStructField1:nodes
^ (CStructFieldNode new)
cName:((nodes at:6) value);
offset:(nodes at:8) value asNumber;
type:(nodes at:4)
!
reduceActionForStructField2:nodes
^ (CStructFieldNode new)
cName:((nodes at:6) value);
offset:(nodes at:8) value asNumber;
type:(nodes at:4)
!
reduceActionForStructField3:nodes
^ (CStructFieldNode new)
cName:((nodes at:6) value);
offset:(nodes at:8) value asNumber;
type:(nodes at:4)
!
reduceActionForStructField4:nodes
^ nil
!
reduceActionForStructFields1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForStructFields2:nodes
^ (nodes at:6)
addFirst:(StructFieldNode cName:((nodes at:4) value) id:(nodes at:2));
yourself
"Modified: / 10-02-2008 / 19:08:18 / janfrog"
!
reduceActionForStructFields3:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForStructFields4:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForStructOrUnionFields1:nodes
^ (nodes at:1)
add:(nodes at:2);
yourself
"Modified: / 10-02-2008 / 10:21:30 / janfrog"
!
reduceActionForStructOrUnionFields2:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 10:21:30 / janfrog"
!
reduceActionForStructOrUnionFields3:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:42:27 / janfrog"
!
reduceActionForStructOrUnionFields4:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:42:27 / janfrog"
!
reduceActionForType1:nodes
^ nodes at:1
!
reduceActionForType2:nodes
^ nodes at:1
!
reduceActionForType3:nodes
^ nodes at:1
!
reduceActionForType4:nodes
^ nodes at:1
!
reduceActionForType5:nodes
^ nodes at:1
!
reduceActionForType6:nodes
^ nodes at:1
!
reduceActionForType7:nodes
^ nodes at:1
!
reduceActionForType8:nodes
^ nodes at:1
!
reduceActionForType9:nodes
^ CUnresolvedTypeNode new cName:(nodes at:1) value
!
reduceActionForTypedef1:nodes
^ (CTypedefNode new)
cName:((nodes at:3) value);
type:(nodes at:4)
!
reduceActionForTypedef2:nodes
^ (CTypedefNode new)
cName:((nodes at:3) value);
type:(nodes at:4);
foreign:true
!
reduceActionForTypedefEnum1:nodes
^ CEnumNode
name:((nodes at:4) value)
fields:(nodes at:5)
foreign:((nodes at:3) isNil not)
typedef:true
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForTypedefStruct1:nodes
^ CStructNode
name:((nodes at:4) value)
fields:(nodes at:5)
local:false
foreign:((nodes at:3) isNil not)
typedef:true
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForTypedefUnion1:nodes
^ CUnionNode
name:((nodes at:3) value)
fields:(nodes at:4)
local:false
foreign:((nodes at:2) isNil not)
typedef:true
"Modified: / 10-02-2008 / 10:48:29 / janfrog"
!
reduceActionForUnion1:nodes
^ (CUnionNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
cBitSize:(nodes at:5) value asNumber;
fields:(nodes at:6);
foreign:false
!
reduceActionForUnion2:nodes
^ (CUnionNode new)
cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
cBitSize:(nodes at:5) value asNumber;
fields:(nodes at:6);
foreign:true
!
reduceActionForUnionFields1:nodes
^ OrderedCollection new
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForUnionFields2:nodes
^ (nodes at:6)
addFirst:(UnionFieldNode cName:((nodes at:4) value) id:(nodes at:2));
yourself
"Modified: / 10-02-2008 / 19:08:18 / janfrog"
!
reduceActionForUnionFields3:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForUnionFields4:nodes
^ (nodes at:2)
addFirst:(nodes at:1);
yourself
"Modified: / 10-02-2008 / 09:36:44 / janfrog"
!
reduceActionForUnsigned1:nodes
^ CUnsignedNode new type:(nodes at:1)
"Modified: / 10-02-2008 / 19:50:10 / janfrog"
! !
!CDefinitionParser methodsFor:'generated-tables'!
reduceTable
^#(
#(41 0 #'reduceActionForRepeat__EnumValue1:')
#(41 2 #'reduceActionForRepeat__EnumValue2:')
#(42 7 #reduceActionForEnumValue1:)
#(43 0 #'reduceActionForRepeat__StructField1:')
#(43 2 #'reduceActionForRepeat__StructField2:')
#(44 9 #reduceActionForStructField1:)
#(44 9 #reduceActionForStructField2:)
#(44 9 #reduceActionForStructField3:)
#(44 6 #reduceActionForStructField4:)
#(45 0 #'reduceActionForOptional__Group______name_1:')
#(45 1 #'reduceActionForOptional__Group______name_2:')
#(46 1 #'reduceActionForGroup______name_1:')
#(47 7 #reduceActionForArray1:)
#(48 4 #reduceActionForPointer1:)
#(49 2 #reduceActionForBuiltinType1:)
#(49 2 #reduceActionForBuiltinType2:)
#(49 2 #reduceActionForBuiltinType3:)
#(49 2 #reduceActionForBuiltinType4:)
#(49 1 #reduceActionForBuiltinType5:)
#(49 1 #reduceActionForBuiltinType6:)
#(49 1 #reduceActionForBuiltinType7:)
#(49 1 #reduceActionForBuiltinType8:)
#(49 1 #reduceActionForBuiltinType9:)
#(49 1 #reduceActionForBuiltinType10:)
#(50 2 #reduceActionForConst1:)
#(51 8 #reduceActionForFunctionPrototype1:)
#(52 0 #'reduceActionForRepeat__FunctionPrototypeArgument1:')
#(52 2 #'reduceActionForRepeat__FunctionPrototypeArgument2:')
#(53 6 #reduceActionForFunctionPrototypeArgument1:)
#(54 1 #reduceActionForType1:)
#(54 1 #reduceActionForType2:)
#(54 1 #reduceActionForType3:)
#(54 1 #reduceActionForType4:)
#(54 1 #reduceActionForType5:)
#(54 1 #reduceActionForType6:)
#(54 1 #reduceActionForType7:)
#(54 1 #reduceActionForType8:)
#(54 1 #reduceActionForType9:)
#(55 4 #reduceActionForReturn1:)
#(56 0 #'reduceActionForRepeat__Argument1:')
#(56 2 #'reduceActionForRepeat__Argument2:')
#(57 7 #reduceActionForArgument1:)
#(57 7 #reduceActionForArgument2:)
#(57 7 #reduceActionForArgument3:)
#(58 3 #reduceActionForGenerated1:)
#(59 5 #reduceActionForTypedef1:)
#(59 5 #reduceActionForTypedef2:)
#(60 5 #reduceActionForEnum1:)
#(60 5 #reduceActionForEnum2:)
#(61 7 #reduceActionForUnion1:)
#(61 7 #reduceActionForUnion2:)
#(62 7 #reduceActionForStruct1:)
#(62 7 #reduceActionForStruct2:)
#(63 8 #reduceActionForFunction1:)
#(64 1 #reduceFor:)
#(65 0 #'reduceActionForRepeat__Definition1:')
#(65 2 #'reduceActionForRepeat__Definition2:')
#(66 1 #reduceActionForDefinition1:)
#(66 1 #reduceActionForDefinition2:)
#(66 1 #reduceActionForDefinition3:)
#(66 1 #reduceActionForDefinition4:)
#(66 1 #reduceActionForDefinition5:)
#(67 1 #reduceActionForDefinitionFile1:)
)
!
transitionTable
^#(
#[1 0 226 0 31 0 226 0 40 0 13 0 65 0 17 0 67]
#[1 0 226 0 31 0 226 0 40 0 13 0 65 0 21 0 67]
#[1 0 25 0 31 0 254 0 40 0 29 0 59 0 33 0 60 0 37 0 61 0 41 0 62 0 45 0 63 0 49 0 66]
#[0 0 0 0 40]
#[0 0 0 0 40]
#[1 0 53 0 1 0 57 0 2 0 61 0 3 0 65 0 4 0 69 0 7 0 73 0 8 0 77 0 9 0 81 0 11 0 85 0 30]
#[0 0 250 0 31 0 40]
#[0 0 246 0 31 0 40]
#[0 0 242 0 31 0 40]
#[0 0 238 0 31 0 40]
#[0 0 234 0 31 0 40]
#[0 0 230 0 31 0 40]
#[0 0 89 0 34]
#[0 0 93 0 34]
#[1 0 42 0 29 0 42 0 31 0 97 0 34 0 101 0 45 0 105 0 46]
#[1 0 42 0 29 0 42 0 31 0 97 0 34 0 109 0 45 0 105 0 46]
#[1 0 42 0 10 0 97 0 34 0 113 0 45 0 105 0 46]
#[1 0 42 0 10 0 97 0 34 0 117 0 45 0 105 0 46]
#[1 0 42 0 10 0 97 0 34 0 121 0 45 0 105 0 46]
#[1 0 42 0 10 0 97 0 34 0 125 0 45 0 105 0 46]
#[0 0 129 0 34]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 0 205 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 0 221 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 0 50 0 10 0 29 0 31]
#[1 0 6 0 29 0 6 0 31 0 225 0 41]
#[0 0 46 0 10 0 29 0 31]
#[1 0 6 0 29 0 6 0 31 0 229 0 41]
#[0 0 233 0 10]
#[0 0 237 0 10]
#[0 0 241 0 10]
#[0 0 245 0 10]
#[0 0 249 0 31]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 0 253 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 0 98 0 29]
#[0 0 94 0 29]
#[0 0 90 0 29]
#[0 0 86 0 29]
#[0 0 82 0 29]
#[0 0 78 0 29]
#[1 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 1 1 0 49]
#[1 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 1 5 0 49]
#[1 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 1 9 0 49]
#[1 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 1 13 0 49]
#[1 0 61 0 3 0 65 0 4 0 69 0 7 0 73 0 8 0 77 0 9 0 81 0 11 1 17 0 12 1 21 0 24 1 25 0 26]
#[0 0 154 0 29]
#[0 0 134 0 29]
#[0 0 130 0 29]
#[0 0 126 0 29]
#[0 0 122 0 29]
#[0 0 138 0 29]
#[0 1 29 0 29]
#[0 0 150 0 29]
#[0 0 146 0 29]
#[0 0 142 0 29]
#[0 1 33 0 29]
#[1 1 37 0 29 1 41 0 31 1 45 0 42]
#[1 1 49 0 29 1 41 0 31 1 45 0 42]
#[0 1 53 0 35]
#[0 1 57 0 35]
#[0 1 61 0 35]
#[0 1 65 0 35]
#[1 0 162 0 29 0 162 0 31 1 69 0 56]
#[0 0 102 0 29]
#[0 0 74 0 29]
#[0 0 70 0 29]
#[0 0 66 0 29]
#[0 0 62 0 29]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 1 73 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 1 77 0 34]
#[0 1 81 0 31]
#[0 0 190 0 31 0 40]
#[0 0 186 0 31 0 40]
#[0 0 198 0 29 0 31 0 40]
#[0 1 85 0 27]
#[0 0 10 0 29 0 31]
#[0 0 194 0 29 0 31 0 40]
#[1 0 18 0 29 0 18 0 31 1 89 0 43]
#[1 0 18 0 29 0 18 0 31 1 93 0 43]
#[1 0 18 0 29 0 18 0 31 1 97 0 43]
#[1 0 18 0 29 0 18 0 31 1 101 0 43]
#[1 1 105 0 29 1 109 0 31 1 113 0 57]
#[0 1 117 0 29]
#[0 1 121 0 31]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 1 125 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 1 129 0 31]
#[1 1 133 0 29 1 137 0 31 1 141 0 44]
#[1 1 145 0 29 1 137 0 31 1 141 0 44]
#[1 1 149 0 29 1 137 0 31 1 141 0 44]
#[1 1 153 0 29 1 137 0 31 1 141 0 44]
#[1 1 157 0 31 1 161 0 55]
#[0 1 165 0 28]
#[0 0 166 0 29 0 31]
#[0 0 58 0 29]
#[1 0 110 0 29 0 110 0 31 1 169 0 52]
#[0 1 173 0 29]
#[0 1 177 0 34]
#[0 0 206 0 29 0 31 0 40]
#[0 1 181 0 6]
#[0 0 22 0 29 0 31]
#[0 0 202 0 29 0 31 0 40]
#[0 0 214 0 29 0 31 0 40]
#[0 0 210 0 29 0 31 0 40]
#[0 1 185 0 25]
#[0 1 189 0 29]
#[0 1 193 0 31]
#[1 1 197 0 29 1 201 0 31 1 205 0 53]
#[0 1 209 0 35]
#[0 1 213 0 29]
#[0 1 217 0 31]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 1 221 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 0 218 0 31 0 40]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 1 225 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[1 1 157 0 31 1 229 0 55]
#[0 1 233 0 28]
#[0 0 114 0 29 0 31]
#[0 1 237 0 29]
#[0 1 241 0 35]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 1 245 0 29 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 1 249 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 1 253 0 29]
#[0 2 1 0 29]
#[0 2 5 0 29]
#[0 2 9 0 31]
#[0 0 54 0 29]
#[0 2 13 0 29]
#[0 2 17 0 5]
#[0 2 21 0 29]
#[0 0 158 0 29]
#[1 2 25 0 26 2 29 0 27 2 33 0 34]
#[0 0 106 0 29]
#[1 0 133 0 13 0 137 0 14 0 141 0 15 0 145 0 16 0 149 0 17 0 153 0 18 0 157 0 19 0 161 0 20 0 165 0 21 0 169 0 22 0 173 0 23 0 177 0 31 0 181 0 34 0 185 0 47 0 189 0 48 0 193 0 49 0 197 0 50 0 201 0 51 2 37 0 54 0 209 0 60 0 213 0 61 0 217 0 62]
#[0 0 14 0 29 0 31]
#[0 2 41 0 29]
#[1 2 45 0 27 2 49 0 30 2 53 0 34]
#[0 2 57 0 29]
#[0 2 61 0 29]
#[0 2 65 0 29]
#[0 2 69 0 29]
#[0 0 38 0 29 0 31]
#[0 2 73 0 5]
#[0 2 77 0 5]
#[0 2 81 0 5]
#[0 0 178 0 29 0 31]
#[0 0 174 0 29 0 31]
#[0 0 170 0 29 0 31]
#[0 2 85 0 29]
#[0 2 89 0 35]
#[0 2 93 0 35]
#[0 2 97 0 35]
#[0 0 118 0 29 0 31]
#[0 2 101 0 29]
#[0 2 105 0 29]
#[0 2 109 0 29]
#[0 0 30 0 29 0 31]
#[0 0 34 0 29 0 31]
#[0 0 26 0 29 0 31]
)
! !
!CDefinitionParser methodsFor:'private'!
performReduceMethod: aSymbol with: items
| cNode |
cNode := super performReduceMethod: aSymbol with: items.
(cNode isKindOf: CNode) ifTrue:
[cNode line: scanner lineNumber].
^cNode
"Created: / 10-07-2008 / 15:59:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 10-07-2008 / 20:05:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser methodsFor:'private-error handling'!
reportErrorMessage: aString
super reportErrorMessage: 'line ', scanner lineNumber printString, ': ' , aString
"Created: / 04-07-2008 / 12:13:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser class methodsFor:'documentation'!
version
^ '$Id$'
!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '$Id$'
! !