Cface__CDefinitionParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 27 May 2008 18:55:24 +0000
changeset 1 b6c0180314d1
child 3 110a9cbf8594
permissions -rw-r--r--
Initial import

"{ Package: 'cvut:fel/cface' }"

"{ NameSpace: Cface }"

SmaCC::SmaCCParser subclass:#CDefinitionParser
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Cface-Parser'
!


!CDefinitionParser class methodsFor:'generated-accessing'!

scannerClass
	^Cface::CDefinitionScanner

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !

!CDefinitionParser class methodsFor:'generated-comments'!

parserDefinitionComment

	"%start DefinitionFile;

DefinitionFile:
	Generated  
	Definition* 
  	{ CDefinitionFileNode new
	  		source: '1';
			 	definitions: '2' } ;

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) }
	;				


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' } 		
  | ""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 }					
	;



Array:
	""("" ""array"" ""("" Type "")"" <number> "")"" 
		{ CArrayNode new
				type:'4';
				size:('1' value asNumber) } 
	;

Const:
	""const"" Type 
		{ CConstNode new type: '2' }
	;
	
	
                                
Pointer:
	""("" ""pointer-to"" Type "")"" 
		{ CPointerNode new type:'3' } ;


Struct:
		""("" ""struct"" [ ""-foreign"" ] 'foreign' [ <name> ] 'name' StructField* 'fields' "")"" 
		{ CStructNode new
				cName:(name ifNotNil:[name value]);
				fields:fields;
				local:false;
				foreign:(foreign notNil);
				typedef:false

 } 

	;



Union:
		""("" ""union"" [ ""-foreign"" ] 'foreign' [ <name> ] 'name' StructField* 'fields' "")"" 
		{ CUnionNode new 
				cName:(name ifNotNil:[name value]);
				fields:fields;
				local:false;
				foreign:(foreign notNil);
				typedef:false
 } 
	;



	
StructField:
	  ""("" ""field"" ""("" Type  "")"" <name>  "")""
		{ CStructFieldNode new
				cName:('6' value);
				type:'4' }
	;
	
		

Enum:
		""("" ""enum"" [ ""-foreign"" ] 'foreign' [ <name> ] 'name'EnumValue* 'fields' "")"" 
		{ CEnumNode new
				cName:(name ifNotNil:[name value]);
				values:fields;
				foreign:(foreign notNil);
				typedef:false
		}
	
	;



EnumValue:
	""("" ""value"" ""("" <name> 'name' "")"" <number> 'number' "")""
		{ (CEnumValueNode new 
				cName:(name value);
				intValue:(number value)) } ;

Typedef:
	""("" ""typedef"" [ ""-foreign"" ] 'foreign' <name> 'name' Type 'type' "")"" 
	{ CTypedefNode new
			cName:(name value);
			type:type;
			foreign:(foreign isNil not) } ;


"

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !

!CDefinitionParser class methodsFor:'generated-starting states'!

startingStateForDefFile
	^1

    "Modified: / 10-02-2008 / 10:29:48 / janfrog"
!

startingStateForDefinitionFile
	^1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !

!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))

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForArgument2:nodes 
    ^ FunctionArgumentNode cName:((nodes at:6) value) id:(nodes at:4)

    "Created: / 10-02-2008 / 10:26:31 / janfrog"
    "Modified: / 10-02-2008 / 19:08:18 / janfrog"
!

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:1) value asNumber)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType1:nodes 
    ^ CUnsignedNode new type:(nodes at:2)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType2:nodes 
    ^ CLongNode new type:(nodes at:2)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType3:nodes 
    ^ CShortNode new type:(nodes at:2)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType4:nodes 
    ^ CIntNode new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType5:nodes 
    ^ CCharNode new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType6:nodes 
    ^ CDoubleNode new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType7:nodes 
    ^ CFloatNode new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForBuiltinType8:nodes 
    ^ CVoidNode new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForConst1:nodes 
    ^ CConstNode new type:(nodes at:2)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForDefinition2:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForDefinition3:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForDefinition4:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForDefinition5:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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)
        source:(nodes at:1);
        definitions:(nodes at:2)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForEnum1:nodes 
    ^ (CEnumNode new)
        cName:((nodes at:4) ifNotNil:[ (nodes at:4) value ]);
        values:(nodes at:5);
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForEnum2:nodes 
    ^ (CEnumNode new)
        cName:((nodes at:4) value);
        fields:(nodes at:5);
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 12-02-2008 / 23:05:21 / janfrog"
!

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))

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForFunction1:nodes 
    ^ (CFunctionNode new)
        cName:((nodes at:3) value);
        arguments:(nodes at:5);
        return:(nodes at:7)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForFunctionPrototypeArgument1:nodes 
    ^ (CArgumentNode new)
        cName:nil;
        type:(nodes at:4)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForOptional__Group______name_2:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__Argument2:nodes 
    ^ (nodes at:1)
        add:(nodes at:2);
        yourself

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__Definition1:nodes 
    ^ OrderedCollection new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__Definition2:nodes 
    ^ (nodes at:1)
        add:(nodes at:2);
        yourself

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__EnumValue2:nodes 
    ^ (nodes at:1)
        add:(nodes at:2);
        yourself

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__FunctionPrototypeArgument1:nodes 
    ^ OrderedCollection new

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__FunctionPrototypeArgument2:nodes 
    ^ (nodes at:1)
        add:(nodes at:2);
        yourself

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForRepeat__StructField2:nodes 
    ^ (nodes at:1)
        add:(nodes at:2);
        yourself

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForReturn1:nodes 
    ^ nodes at:3

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForStruct1:nodes 
    ^ (CStructNode new)
        cName:((nodes at:4) ifNotNil:[ (nodes at:4) value ]);
        fields:(nodes at:5);
        local:false;
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForStruct2:nodes 
    ^ (CStructNode new)
        cName:((nodes at:4) value);
        fields:(nodes at:5);
        local:false;
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 12-02-2008 / 23:05:21 / janfrog"
!

reduceActionForStructField1:nodes 
    ^ (CStructFieldNode new)
        cName:((nodes at:6) value);
        type:(nodes at:4)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForStructField2:nodes 
    ^ (nodes at:1) local:true

    "Modified: / 12-02-2008 / 23:34:33 / janfrog"
!

reduceActionForStructField3:nodes 
    ^ (nodes at:1) local:true

    "Modified: / 12-02-2008 / 23:34:33 / janfrog"
!

reduceActionForStructField4:nodes 
    ^ (nodes at:1) local:true

    "Modified: / 10-02-2008 / 10:00:46 / janfrog"
!

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

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType2:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType3:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType4:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType5:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType6:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType7:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType8:nodes 
    ^ nodes at:1

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForType9:nodes 
    ^ CUserDefinedTypeNode new cName:(nodes at:1) value

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForTypedef1:nodes 
    ^ (CTypedefNode new)
        cName:((nodes at:4) value);
        type:(nodes at:5);
        foreign:((nodes at:3) isNil not)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

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:4) ifNotNil:[ (nodes at:4) value ]);
        fields:(nodes at:5);
        local:false;
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

reduceActionForUnion2:nodes 
    ^ (CUnionNode new)
        cName:((nodes at:4) value);
        fields:(nodes at:5);
        local:false;
        foreign:((nodes at:3) notNil);
        typedef:false

    "Modified: / 12-02-2008 / 23:05:21 / janfrog"
!

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
	^#(
#(31 1 #reduceActionForDefinition1:)
#(31 1 #reduceActionForDefinition2:)
#(31 1 #reduceActionForDefinition3:)
#(31 1 #reduceActionForDefinition4:)
#(31 1 #reduceActionForDefinition5:)
#(32 8 #reduceActionForFunction1:)
#(33 6 #reduceActionForStruct1:)
#(34 6 #reduceActionForUnion1:)
#(35 6 #reduceActionForEnum1:)
#(36 6 #reduceActionForTypedef1:)
#(37 0 #'reduceActionForRepeat__Definition1:')
#(37 2 #'reduceActionForRepeat__Definition2:')
#(38 3 #reduceActionForGenerated1:)
#(39 7 #reduceActionForArgument1:)
#(40 0 #'reduceActionForRepeat__Argument1:')
#(40 2 #'reduceActionForRepeat__Argument2:')
#(41 4 #reduceActionForReturn1:)
#(42 1 #reduceActionForType1:)
#(42 1 #reduceActionForType2:)
#(42 1 #reduceActionForType3:)
#(42 1 #reduceActionForType4:)
#(42 1 #reduceActionForType5:)
#(42 1 #reduceActionForType6:)
#(42 1 #reduceActionForType7:)
#(42 1 #reduceActionForType8:)
#(42 1 #reduceActionForType9:)
#(43 6 #reduceActionForFunctionPrototypeArgument1:)
#(44 0 #'reduceActionForRepeat__FunctionPrototypeArgument1:')
#(44 2 #'reduceActionForRepeat__FunctionPrototypeArgument2:')
#(45 8 #reduceActionForFunctionPrototype1:)
#(46 2 #reduceActionForConst1:)
#(47 2 #reduceActionForBuiltinType1:)
#(47 2 #reduceActionForBuiltinType2:)
#(47 2 #reduceActionForBuiltinType3:)
#(47 1 #reduceActionForBuiltinType4:)
#(47 1 #reduceActionForBuiltinType5:)
#(47 1 #reduceActionForBuiltinType6:)
#(47 1 #reduceActionForBuiltinType7:)
#(47 1 #reduceActionForBuiltinType8:)
#(48 4 #reduceActionForPointer1:)
#(49 7 #reduceActionForArray1:)
#(50 2 #reduceActionForDefinitionFile1:)
#(51 1 #'reduceActionForGroup_______foreign_1:')
#(52 0 #'reduceActionForOptional__Group_______foreign_1:')
#(52 1 #'reduceActionForOptional__Group_______foreign_2:')
#(53 1 #'reduceActionForGroup______name_1:')
#(54 0 #'reduceActionForOptional__Group______name_1:')
#(54 1 #'reduceActionForOptional__Group______name_2:')
#(55 7 #reduceActionForStructField1:)
#(56 0 #'reduceActionForRepeat__StructField1:')
#(56 2 #'reduceActionForRepeat__StructField2:')
#(57 7 #reduceActionForEnumValue1:)
#(58 0 #'reduceActionForRepeat__EnumValue1:')
#(58 2 #'reduceActionForRepeat__EnumValue2:')
#(61 1 #reduceFor:)
)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
!

transitionTable
	^#(
#[1 0 13 0 8 0 17 0 38 0 21 0 50]
#[1 0 13 0 8 0 17 0 38 0 25 0 50]
#[0 0 29 0 9]
#[1 0 46 0 10 0 33 0 37 0 46 0 59]
#[0 0 0 0 59]
#[0 0 0 0 59]
#[0 0 37 0 30]
#[1 0 41 0 10 0 45 0 31 0 49 0 32 0 53 0 33 0 57 0 34 0 61 0 35 0 65 0 36 0 170 0 59]
#[0 0 54 0 10 0 59]
#[1 0 69 0 7 0 73 0 11 0 77 0 15 0 81 0 17 0 85 0 21]
#[0 0 50 0 10 0 59]
#[0 0 6 0 10 0 59]
#[0 0 10 0 10 0 59]
#[0 0 14 0 10 0 59]
#[0 0 18 0 10 0 59]
#[0 0 22 0 10 0 59]
#[1 0 89 0 19 0 178 0 27 0 93 0 51 0 97 0 52]
#[0 0 101 0 27]
#[1 0 178 0 10 0 178 0 12 0 89 0 19 0 178 0 27 0 93 0 51 0 105 0 52]
#[1 0 178 0 10 0 178 0 12 0 89 0 19 0 178 0 27 0 93 0 51 0 109 0 52]
#[1 0 178 0 10 0 178 0 12 0 89 0 19 0 178 0 27 0 93 0 51 0 113 0 52]
#[0 0 174 0 10 0 12 0 27]
#[0 0 182 0 10 0 12 0 27]
#[0 0 117 0 27]
#[0 0 121 0 10]
#[1 0 190 0 10 0 190 0 12 0 125 0 27 0 129 0 53 0 133 0 54]
#[1 0 190 0 10 0 190 0 12 0 125 0 27 0 129 0 53 0 137 0 54]
#[1 0 190 0 10 0 190 0 12 0 125 0 27 0 129 0 53 0 141 0 54]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 0 201 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[1 0 62 0 10 0 62 0 12 0 225 0 40]
#[0 0 186 0 10 0 12]
#[0 0 194 0 10 0 12]
#[1 0 202 0 10 0 202 0 12 0 229 0 56]
#[1 0 214 0 10 0 214 0 12 0 233 0 58]
#[1 0 202 0 10 0 202 0 12 0 237 0 56]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 241 0 47]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 245 0 47]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 249 0 47]
#[1 0 253 0 1 0 77 0 15 0 81 0 17 0 85 0 21 1 1 0 23 1 5 0 26]
#[0 0 142 0 12]
#[0 0 146 0 12]
#[0 0 150 0 12]
#[0 0 154 0 12]
#[0 0 158 0 12]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 9 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 0 106 0 12]
#[0 0 94 0 12]
#[0 0 98 0 12]
#[0 0 102 0 12]
#[0 1 13 0 12]
#[0 0 90 0 12]
#[0 0 74 0 12]
#[0 0 78 0 12]
#[0 0 82 0 12]
#[0 0 86 0 12]
#[1 1 17 0 10 1 21 0 12 1 25 0 39]
#[1 1 29 0 10 1 33 0 12 1 37 0 55]
#[1 1 41 0 10 1 45 0 12 1 49 0 57]
#[1 1 29 0 10 1 53 0 12 1 37 0 55]
#[0 0 130 0 12]
#[0 0 134 0 12]
#[0 0 138 0 12]
#[0 1 57 0 27]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 61 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 1 65 0 10]
#[0 0 126 0 12]
#[0 0 42 0 10 0 59]
#[0 1 69 0 5]
#[1 1 73 0 10 1 77 0 41]
#[0 0 66 0 10 0 12]
#[0 1 81 0 16]
#[0 0 34 0 10 0 12 0 59]
#[0 0 206 0 10 0 12]
#[0 1 85 0 18]
#[0 0 38 0 10 0 12 0 59]
#[0 0 218 0 10 0 12]
#[0 0 30 0 10 0 12 0 59]
#[0 1 89 0 10]
#[0 1 93 0 12]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 97 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 1 101 0 10]
#[0 1 105 0 6]
#[0 1 109 0 12]
#[0 1 113 0 10]
#[0 1 117 0 10]
#[1 0 114 0 10 0 114 0 12 1 121 0 44]
#[0 0 162 0 12]
#[0 1 125 0 12]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 129 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 133 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 0 26 0 10 0 59]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 137 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 1 141 0 27]
#[1 1 145 0 10 1 149 0 12 1 153 0 43]
#[0 1 157 0 28]
#[0 1 161 0 12]
#[0 1 165 0 12]
#[0 1 169 0 12]
#[0 1 173 0 12]
#[0 1 177 0 5]
#[1 1 73 0 10 1 181 0 41]
#[0 0 118 0 10 0 12]
#[0 1 185 0 12]
#[0 1 189 0 27]
#[0 0 70 0 12]
#[0 1 193 0 27]
#[0 1 197 0 28]
#[0 1 201 0 10]
#[0 1 205 0 12]
#[0 0 166 0 12]
#[0 1 209 0 12]
#[0 1 213 0 12]
#[0 1 217 0 12]
#[1 0 145 0 2 0 149 0 3 0 153 0 4 0 157 0 10 0 161 0 13 0 165 0 14 0 169 0 20 0 173 0 22 0 177 0 24 0 181 0 25 0 185 0 27 0 189 0 33 0 193 0 34 0 197 0 35 1 221 0 42 0 205 0 45 0 209 0 46 0 213 0 47 0 217 0 48 0 221 0 49]
#[0 0 122 0 12]
#[0 0 58 0 10 0 12]
#[0 0 198 0 10 0 12]
#[0 0 210 0 10 0 12]
#[0 1 225 0 12]
#[0 1 229 0 12]
#[0 0 110 0 10 0 12]
)

    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !

!CDefinitionParser class methodsFor:'documentation'!

version
    ^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__CDefinitionParser.st,v 1.1 2008/02/26 15:59:19 vranyj1 Exp $'
! !