More improvements, now it generates usable Cairo bindings!
Changes:
- parser can now handle "foreign" typedefs, structs, unions and enums
- generates structs as subclasses of ExternalStructure
- functions now works with subclasses of ExternalStructure
- minor fixes in ffiTypeMapping
--- a/Cface__CConstNode.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CConstNode.st Fri Jul 04 08:35:55 2008 +0000
@@ -97,10 +97,22 @@
!CConstNode methodsFor:'testing'!
+isCCharNode
+ ^ type isCCharNode
+
+ "Created: / 04-07-2008 / 09:27:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
isCConstNode
^ true
"Created: / 17-02-2008 / 21:52:38 / janfrog"
+!
+
+isCStructNode
+ ^ type isCStructNode
+
+ "Created: / 04-07-2008 / 09:28:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CConstNode methodsFor:'visiting'!
--- a/Cface__CDefinitionParser.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CDefinitionParser.st Fri Jul 04 08:35:55 2008 +0000
@@ -15,7 +15,7 @@
scannerClass
^Cface::CDefinitionScanner
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser class methodsFor:'generated-comments'!
@@ -25,190 +25,218 @@
"%start DefinitionFile;
DefinitionFile:
- Generated
- Definition*
- { CDefinitionFileNode new
- source: '1';
- definitions: '2' } ;
+ Generated
+ Definition*
+ { CDefinitionFileNode new
+ source: '1';
+ definitions: '2' } ;
Definition:
- Function { '1' }
- | Struct { '1' }
- | Union { '1' }
- | Enum { '1' }
- | Typedef { '1' }
- ;
+ Function { '1' }
+ | Struct { '1' }
+ | Union { '1' }
+ | Enum { '1' }
+ | Typedef { '1' }
+ ;
Generated:
- ""#Generated"" ""from:"" <file> 'file' { file value }
- ;
+ ""#Generated"" ""from:"" <file> 'file' { file value }
+ ;
Function:
- ""("" ""function"" <name> 'name' ""("" Argument* 'arguments' "")"" Return 'return' "")""
- { CFunctionNode new
- cName:(name value);
- arguments:arguments;
- return:return }
- ;
-
-
+ ""("" ""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' "")"" <name> 'name' "")""
+ { (CArgumentNode new
+ cName:(name value);
+ type:type) }
+ ;
Return:
- ""("" ""return"" Type 'Type' "")"" { Type }
- ;
+ ""("" ""return"" Type 'Type' "")"" { Type }
+ ;
FunctionPrototype:
- ""("" ""function-type"" <name> 'name' ""("" FunctionPrototypeArgument* 'arguments' "")"" Return 'return' "")""
- { CFunctionTypeNode new
- cName:(name value);
- arguments:arguments;
- return:return }
- ;
+ ""("" ""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' }
- ;
+ ""("" ""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 }
- ;
+ 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' }
+ ""unsigned"" BuiltinType
+ { CUnsignedNode new type: '2' }
| ""long"" BuiltinType
- { CLongNode new type: '2' }
+ { 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 }
- ;
+ { 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) }
- ;
+ ""("" ""array"" ""("" Type "")"" <number> "")""
+ { CArrayNode new
+ type:'4';
+ size:('1' value asNumber) }
+ ;
Const:
- ""const"" Type
- { CConstNode new type: '2' }
- ;
-
-
+ ""const"" Type
+ { CConstNode new type: '2' }
+ ;
+
+
Pointer:
- ""("" ""pointer-to"" Type "")""
- { CPointerNode new type:'3' } ;
+ ""("" ""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
+ ""("" ""struct"" [ <name> ] 'name' StructField* 'fields' "")""
+ { CStructNode new
+ cName:(name ifNotNil:[name value]);
+ fields:fields;
+ local:false;
+ foreign:false;
+ typedef:false
+
+ }
+| ""("" ""struct-foreign"" [ <name> ] 'name' StructField* 'fields' "")""
+ { CStructNode new
+ cName:(name ifNotNil:[name value]);
+ fields:fields;
+ local:false;
+ foreign:true;
+ 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
+ ""("" ""union"" [ <name> ] 'name' StructField* 'fields' "")""
+ { CUnionNode new
+ cName:(name ifNotNil:[name value]);
+ fields:fields;
+ local:false;
+ foreign: false;
+ typedef:false
+ }
+ | ""("" ""union-foreign"" [ <name> ] 'name' StructField* 'fields' "")""
+ { CUnionNode new
+ cName:(name ifNotNil:[name value]);
+ fields:fields;
+ local:false;
+ foreign:true;
+ typedef:false
}
- ;
+
+ ;
-
+
StructField:
- ""("" ""field"" ""("" Type "")"" <name> "")""
- { CStructFieldNode new
- cName:('6' value);
- type:'4' }
- ;
-
-
+ ""("" ""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
- }
-
- ;
+ ""("" ""enum"" 'foreign' [ <name> ] 'name'EnumValue* 'fields' "")""
+ { CEnumNode new
+ cName:(name ifNotNil:[name value]);
+ values:fields;
+ 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)) } ;
+ ""("" ""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) } ;
+ ""("" ""typedef"" 'foreign' <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 }
-
+ ;
"
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser class methodsFor:'generated-starting states'!
@@ -220,9 +248,9 @@
!
startingStateForDefinitionFile
- ^1
+ ^2
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser methodsFor:'accessing'!
@@ -240,7 +268,7 @@
cName:((nodes at:6) value);
type:(nodes at:4))
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForArgument2:nodes
@@ -270,61 +298,61 @@
type:(nodes at:4);
size:((nodes at:1) value asNumber)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType1:nodes
^ CUnsignedNode new type:(nodes at:2)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType2:nodes
^ CLongNode new type:(nodes at:2)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType3:nodes
^ CShortNode new type:(nodes at:2)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType4:nodes
^ CIntNode new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType5:nodes
^ CCharNode new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType6:nodes
^ CDoubleNode new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType7:nodes
^ CFloatNode new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForBuiltinType8:nodes
^ CVoidNode new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForConst1:nodes
^ CConstNode new type:(nodes at:2)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefBody1:nodes
@@ -406,31 +434,31 @@
reduceActionForDefinition1:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefinition2:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefinition3:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefinition4:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefinition5:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForDefinition6:nodes
@@ -456,27 +484,26 @@
source:(nodes at:1);
definitions:(nodes at:2)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForEnum1:nodes
^ (CEnumNode new)
- cName:((nodes at:4) ifNotNil:[ (nodes at:4) value ]);
- values:(nodes at:5);
- foreign:((nodes at:3) notNil);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ values:(nodes at:4);
typedef:false
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForEnum2:nodes
^ (CEnumNode new)
- cName:((nodes at:4) value);
- fields:(nodes at:5);
- foreign:((nodes at:3) notNil);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ values:(nodes at:4);
+ foreign:true;
typedef:false
- "Modified: / 12-02-2008 / 23:05:21 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForEnumField1:nodes
@@ -505,7 +532,7 @@
cName:((nodes at:4) value);
intValue:((nodes at:6) value))
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForFunction1:nodes
@@ -514,7 +541,7 @@
arguments:(nodes at:5);
return:(nodes at:7)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForFunctionArguments1:nodes
@@ -537,7 +564,7 @@
arguments:(nodes at:5);
return:(nodes at:7)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForFunctionPrototypeArgument1:nodes
@@ -545,7 +572,7 @@
cName:nil;
type:(nodes at:4)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForFunctionPrototypeArguments1:nodes
@@ -565,7 +592,7 @@
reduceActionForGenerated1:nodes
^ (nodes at:3) value
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForGroup_____Function___Struct___Enum___Union___Typedef1:nodes
@@ -685,7 +712,7 @@
reduceActionForGroup______name_1:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForGroup______number_____name_1:nodes
@@ -841,13 +868,13 @@
reduceActionForOptional__Group______name_1:nodes
^ nil
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForOptional__Group______name_2:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForOptional__Group______type_1:nodes
@@ -901,7 +928,7 @@
reduceActionForPointer1:nodes
^ CPointerNode new type:(nodes at:3)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat_Multiple___name_1:nodes
@@ -921,7 +948,7 @@
reduceActionForRepeat__Argument1:nodes
^ OrderedCollection new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__Argument2:nodes
@@ -929,13 +956,13 @@
add:(nodes at:2);
yourself
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__Definition1:nodes
^ OrderedCollection new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__Definition2:nodes
@@ -943,7 +970,7 @@
add:(nodes at:2);
yourself
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__EnumField1:nodes
@@ -963,7 +990,7 @@
reduceActionForRepeat__EnumValue1:nodes
^ OrderedCollection new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__EnumValue2:nodes
@@ -971,13 +998,13 @@
add:(nodes at:2);
yourself
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__FunctionPrototypeArgument1:nodes
^ OrderedCollection new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__FunctionPrototypeArgument2:nodes
@@ -985,7 +1012,7 @@
add:(nodes at:2);
yourself
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__Group_____Function___Struct___Enum___Union___Typedef1:nodes
@@ -1033,7 +1060,7 @@
reduceActionForRepeat__StructField1:nodes
^ OrderedCollection new
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForRepeat__StructField2:nodes
@@ -1041,35 +1068,35 @@
add:(nodes at:2);
yourself
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForReturn1:nodes
^ nodes at:3
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForStruct1:nodes
^ (CStructNode new)
- cName:((nodes at:4) ifNotNil:[ (nodes at:4) value ]);
- fields:(nodes at:5);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ fields:(nodes at:4);
local:false;
- foreign:((nodes at:3) notNil);
+ foreign:false;
typedef:false
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForStruct2:nodes
^ (CStructNode new)
- cName:((nodes at:4) value);
- fields:(nodes at:5);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ fields:(nodes at:4);
local:false;
- foreign:((nodes at:3) notNil);
+ foreign:true;
typedef:false
- "Modified: / 12-02-2008 / 23:05:21 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForStructField1:nodes
@@ -1077,7 +1104,7 @@
cName:((nodes at:6) value);
type:(nodes at:4)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForStructField2:nodes
@@ -1161,64 +1188,72 @@
reduceActionForType1:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType2:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType3:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType4:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType5:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType6:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType7:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType8:nodes
^ nodes at:1
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForType9:nodes
^ CUserDefinedTypeNode new cName:(nodes at:1) value
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForTypedef1:nodes
^ (CTypedefNode new)
- cName:((nodes at:4) value);
- type:(nodes at:5);
- foreign:((nodes at:3) isNil not)
+ cName:((nodes at:3) value);
+ type:(nodes at:4)
+
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+reduceActionForTypedef2:nodes
+ ^ (CTypedefNode new)
+ cName:((nodes at:3) value);
+ type:(nodes at:4);
+ foreign:true
+
+ "Created: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForTypedefEnum1:nodes
@@ -1255,24 +1290,24 @@
reduceActionForUnion1:nodes
^ (CUnionNode new)
- cName:((nodes at:4) ifNotNil:[ (nodes at:4) value ]);
- fields:(nodes at:5);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ fields:(nodes at:4);
local:false;
- foreign:((nodes at:3) notNil);
+ foreign:false;
typedef:false
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForUnion2:nodes
^ (CUnionNode new)
- cName:((nodes at:4) value);
- fields:(nodes at:5);
+ cName:((nodes at:3) ifNotNil:[ (nodes at:3) value ]);
+ fields:(nodes at:4);
local:false;
- foreign:((nodes at:3) notNil);
+ foreign:true;
typedef:false
- "Modified: / 12-02-2008 / 23:05:21 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
reduceActionForUnionFields1:nodes
@@ -1315,192 +1350,203 @@
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:)
+#(34 1 #reduceFor:)
+#(35 8 #reduceActionForFunction1:)
+#(36 0 #'reduceActionForRepeat__Definition1:')
+#(36 2 #'reduceActionForRepeat__Definition2:')
+#(37 5 #reduceActionForUnion1:)
+#(37 5 #reduceActionForUnion2:)
+#(38 5 #reduceActionForEnum1:)
+#(38 5 #reduceActionForEnum2:)
+#(39 5 #reduceActionForTypedef1:)
+#(39 5 #reduceActionForTypedef2:)
+#(40 5 #reduceActionForStruct1:)
+#(40 5 #reduceActionForStruct2:)
+#(41 1 #reduceActionForDefinition1:)
+#(41 1 #reduceActionForDefinition2:)
+#(41 1 #reduceActionForDefinition3:)
+#(41 1 #reduceActionForDefinition4:)
+#(41 1 #reduceActionForDefinition5:)
+#(42 7 #reduceActionForArgument1:)
+#(43 0 #'reduceActionForRepeat__Argument1:')
+#(43 2 #'reduceActionForRepeat__Argument2:')
+#(44 4 #reduceActionForReturn1:)
+#(45 1 #reduceActionForType1:)
+#(45 1 #reduceActionForType2:)
+#(45 1 #reduceActionForType3:)
+#(45 1 #reduceActionForType4:)
+#(45 1 #reduceActionForType5:)
+#(45 1 #reduceActionForType6:)
+#(45 1 #reduceActionForType7:)
+#(45 1 #reduceActionForType8:)
+#(45 1 #reduceActionForType9:)
+#(46 6 #reduceActionForFunctionPrototypeArgument1:)
+#(47 0 #'reduceActionForRepeat__FunctionPrototypeArgument1:')
+#(47 2 #'reduceActionForRepeat__FunctionPrototypeArgument2:')
+#(48 8 #reduceActionForFunctionPrototype1:)
+#(49 2 #reduceActionForConst1:)
+#(50 2 #reduceActionForBuiltinType1:)
+#(50 2 #reduceActionForBuiltinType2:)
+#(50 2 #reduceActionForBuiltinType3:)
+#(50 1 #reduceActionForBuiltinType4:)
+#(50 1 #reduceActionForBuiltinType5:)
+#(50 1 #reduceActionForBuiltinType6:)
+#(50 1 #reduceActionForBuiltinType7:)
+#(50 1 #reduceActionForBuiltinType8:)
+#(51 4 #reduceActionForPointer1:)
+#(52 7 #reduceActionForArray1:)
+#(53 2 #reduceActionForDefinitionFile1:)
+#(54 1 #'reduceActionForGroup______name_1:')
+#(55 0 #'reduceActionForOptional__Group______name_1:')
+#(55 1 #'reduceActionForOptional__Group______name_2:')
+#(56 7 #reduceActionForStructField1:)
+#(57 0 #'reduceActionForRepeat__StructField1:')
+#(57 2 #'reduceActionForRepeat__StructField2:')
+#(58 7 #reduceActionForEnumValue1:)
+#(59 0 #'reduceActionForRepeat__EnumValue1:')
+#(59 2 #'reduceActionForRepeat__EnumValue2:')
+#(62 3 #reduceActionForGenerated1:)
)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
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]
+#[1 0 13 0 9 0 17 0 53 0 21 0 62]
+#[1 0 13 0 9 0 25 0 53 0 21 0 62]
+#[0 0 29 0 10]
+#[0 0 0 0 60]
+#[1 0 14 0 11 0 33 0 36 0 14 0 60]
+#[0 0 0 0 60]
+#[0 0 37 0 33]
+#[1 0 41 0 11 0 45 0 35 0 49 0 37 0 53 0 38 0 57 0 39 0 61 0 40 0 65 0 41 0 186 0 60]
+#[0 0 226 0 11 0 60]
+#[1 0 69 0 8 0 73 0 15 0 77 0 17 0 81 0 18 0 85 0 19 0 89 0 20 0 93 0 21 0 97 0 27 0 101 0 28]
+#[0 0 54 0 11 0 60]
+#[0 0 62 0 11 0 60]
+#[0 0 66 0 11 0 60]
+#[0 0 70 0 11 0 60]
+#[0 0 58 0 11 0 60]
+#[0 0 18 0 11 0 60]
+#[0 0 105 0 30]
+#[0 0 109 0 30]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 121 0 55]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 125 0 55]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 129 0 55]
+#[0 0 133 0 30]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 137 0 55]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 141 0 55]
+#[1 0 194 0 11 0 194 0 13 0 113 0 30 0 117 0 54 0 145 0 55]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 0 205 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 0 229 0 11]
+#[0 0 190 0 11 0 13]
+#[0 0 198 0 11 0 13]
+#[1 0 218 0 11 0 218 0 13 0 233 0 59]
+#[1 0 218 0 11 0 218 0 13 0 237 0 59]
+#[1 0 206 0 11 0 206 0 13 0 241 0 57]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 0 245 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[1 0 206 0 11 0 206 0 13 0 249 0 57]
+#[1 0 206 0 11 0 206 0 13 0 253 0 57]
+#[1 0 206 0 11 0 206 0 13 1 1 0 57]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 173 0 12 0 177 0 23 0 181 0 24 1 5 0 50]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 173 0 12 0 177 0 23 0 181 0 24 1 9 0 50]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 173 0 12 0 177 0 23 0 181 0 24 1 13 0 50]
+#[0 0 162 0 13]
+#[0 0 158 0 13]
+#[1 1 17 0 4 0 77 0 17 0 81 0 18 0 85 0 19 0 93 0 21 1 21 0 25 0 97 0 27 0 101 0 28 1 25 0 29]
+#[0 0 166 0 13]
+#[0 0 170 0 13]
+#[0 0 174 0 13]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 29 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 0 122 0 13]
+#[0 0 114 0 13]
+#[0 0 118 0 13]
+#[0 0 110 0 13]
+#[0 1 33 0 13]
+#[0 0 106 0 13]
+#[0 0 90 0 13]
+#[0 0 94 0 13]
+#[0 0 98 0 13]
+#[0 0 102 0 13]
+#[1 0 78 0 11 0 78 0 13 1 37 0 43]
+#[1 1 41 0 11 1 45 0 13 1 49 0 58]
+#[1 1 41 0 11 1 53 0 13 1 49 0 58]
+#[1 1 57 0 11 1 61 0 13 1 65 0 56]
+#[0 1 69 0 13]
+#[1 1 57 0 11 1 73 0 13 1 65 0 56]
+#[1 1 57 0 11 1 77 0 13 1 65 0 56]
+#[1 1 57 0 11 1 81 0 13 1 65 0 56]
+#[0 0 146 0 13]
+#[0 0 150 0 13]
+#[0 0 154 0 13]
+#[0 1 85 0 30]
+#[0 1 89 0 11]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 93 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 0 142 0 13]
+#[0 0 42 0 11 0 60]
+#[1 1 97 0 11 1 101 0 13 1 105 0 42]
+#[0 1 109 0 22]
+#[0 0 30 0 11 0 13 0 60]
+#[0 0 222 0 11 0 13]
+#[0 0 34 0 11 0 13 0 60]
+#[0 1 113 0 16]
+#[0 0 26 0 11 0 13 0 60]
+#[0 0 210 0 11 0 13]
+#[0 0 38 0 11 0 60]
+#[0 0 22 0 11 0 13 0 60]
+#[0 0 50 0 11 0 13 0 60]
+#[0 0 46 0 11 0 13 0 60]
+#[0 1 117 0 11]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 121 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 1 125 0 13]
+#[0 1 129 0 14]
+#[1 1 133 0 11 1 137 0 44]
+#[0 0 82 0 11 0 13]
+#[0 1 141 0 11]
+#[0 1 145 0 11]
+#[1 0 130 0 11 0 130 0 13 1 149 0 47]
+#[0 1 153 0 13]
+#[0 0 178 0 13]
+#[0 1 157 0 11]
+#[0 1 161 0 6]
+#[0 1 165 0 13]
+#[0 1 169 0 30]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 173 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[1 1 177 0 11 1 181 0 13 1 185 0 46]
+#[0 1 189 0 31]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 193 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 1 197 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 0 10 0 11 0 60]
+#[0 1 201 0 13]
+#[0 1 205 0 13]
+#[0 1 209 0 14]
+#[1 1 133 0 11 1 213 0 44]
+#[0 0 134 0 11 0 13]
+#[0 1 217 0 13]
+#[0 1 221 0 13]
+#[0 1 225 0 13]
+#[0 1 229 0 31]
+#[0 1 233 0 30]
+#[0 1 237 0 11]
+#[0 1 241 0 13]
+#[0 0 182 0 13]
+#[0 1 245 0 30]
+#[0 0 86 0 13]
+#[0 1 249 0 13]
+#[0 1 253 0 13]
+#[1 0 149 0 1 0 153 0 2 0 157 0 3 0 161 0 5 0 165 0 7 0 169 0 11 0 173 0 12 0 177 0 23 0 181 0 24 0 185 0 26 0 189 0 30 0 193 0 37 0 197 0 38 0 201 0 40 2 1 0 45 0 209 0 48 0 213 0 49 0 217 0 50 0 221 0 51 0 225 0 52]
+#[0 0 138 0 13]
+#[0 2 5 0 13]
+#[0 0 214 0 11 0 13]
+#[0 0 202 0 11 0 13]
+#[0 2 9 0 13]
+#[0 0 74 0 11 0 13]
+#[0 2 13 0 13]
+#[0 0 126 0 11 0 13]
)
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionParser class methodsFor:'documentation'!
--- a/Cface__CDefinitionScanner.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CDefinitionScanner.st Fri Jul 04 08:35:55 2008 +0000
@@ -31,71 +31,71 @@
<file> : [\w-_/] [\w-_/.]* ;
"
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionScanner class methodsFor:'generated-initialization'!
initializeKeywordMap
keywordMap := Dictionary new.
- #( #(27 'argument' 5)
- #(27 'array' 26)
- #(27 'char' 14)
- #(27 'const' 25)
- #(27 'double' 20)
- #(27 'enum' 17)
- #(27 'field' 16)
- #(27 'float' 22)
- #(27 'function' 11)
- #(27 'int' 13)
- #(27 'long' 3)
- #(27 'return' 6)
- #(27 'short' 4)
- #(27 'struct' 21)
- #(27 'typedef' 7)
- #(27 'union' 15)
- #(27 'unsigned' 2)
- #(27 'value' 18)
- #(27 'void' 24)
- #(30 'argument' 5)
- #(30 'array' 26)
- #(30 'char' 14)
- #(30 'const' 25)
- #(30 'double' 20)
+ #( #(30 'argument' 14)
+ #(30 'array' 25)
+ #(30 'char' 5)
+ #(30 'const' 26)
+ #(30 'double' 12)
#(30 'enum' 17)
#(30 'field' 16)
- #(30 'float' 22)
- #(30 'function' 11)
- #(30 'int' 13)
- #(30 'long' 3)
+ #(30 'float' 23)
+ #(30 'function' 15)
+ #(30 'int' 7)
+ #(30 'long' 2)
#(30 'return' 6)
- #(30 'short' 4)
- #(30 'struct' 21)
- #(30 'typedef' 7)
- #(30 'union' 15)
- #(30 'unsigned' 2)
- #(30 'value' 18)
- #(30 'void' 24) )
+ #(30 'short' 3)
+ #(30 'struct' 28)
+ #(30 'typedef' 20)
+ #(30 'union' 21)
+ #(30 'unsigned' 1)
+ #(30 'value' 22)
+ #(30 'void' 24)
+ #(33 'argument' 14)
+ #(33 'array' 25)
+ #(33 'char' 5)
+ #(33 'const' 26)
+ #(33 'double' 12)
+ #(33 'enum' 17)
+ #(33 'field' 16)
+ #(33 'float' 23)
+ #(33 'function' 15)
+ #(33 'int' 7)
+ #(33 'long' 2)
+ #(33 'return' 6)
+ #(33 'short' 3)
+ #(33 'struct' 28)
+ #(33 'typedef' 20)
+ #(33 'union' 21)
+ #(33 'unsigned' 1)
+ #(33 'value' 22)
+ #(33 'void' 24) )
do:[:each |
(keywordMap at:each first ifAbsentPut:[ Dictionary new ]) at:(each at:2)
put:each last
].
^ keywordMap
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionScanner methodsFor:'generated-scanner'!
scan1
[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -104,16 +104,16 @@
].
^ self reportLastMatch
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
scan2
[
- self recordMatch:#( 28 30 ).
+ self recordMatch:#( 31 33 ).
self step.
(currentCharacter isLetter) ifTrue:[
[
- self recordMatch:#( 28 30 ).
+ self recordMatch:#( 31 33 ).
self step.
(currentCharacter isLetter)
] whileTrue.
@@ -121,7 +121,7 @@
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -134,7 +134,7 @@
] whileTrue.
((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -143,7 +143,7 @@
].
^ self reportLastMatch
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
scan3
@@ -844,10 +844,13 @@
or:[
currentCharacter == $_
or:[
- (currentCharacter between:$a and:$e)
+ (currentCharacter between:$a and:$d)
or:[
(currentCharacter between:$g and:$o)
- or:[ (currentCharacter between:$q and:$z) ]
+ or:[
+ (currentCharacter between:$q and:$r)
+ or:[ (currentCharacter between:$v and:$z) ]
+ ]
]
]
])
@@ -885,7 +888,7 @@
(currentCharacter == $e) ifTrue:[
self step.
(currentCharacter == $d) ifTrue:[
- ^ self recordAndReportMatch:#( 8 ).
+ ^ self recordAndReportMatch:#( 9 ).
].
^ self reportLastMatch
].
@@ -906,28 +909,19 @@
^ self reportLastMatch
].
(currentCharacter == $() ifTrue:[
- ^ self recordAndReportMatch:#( 10 ).
+ ^ self recordAndReportMatch:#( 11 ).
].
(currentCharacter == $)) ifTrue:[
- ^ self recordAndReportMatch:#( 12 ).
+ ^ self recordAndReportMatch:#( 13 ).
].
(currentCharacter == $-) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
- ((currentCharacter between:$- and:$/)
- or:[
- (currentCharacter between:$A and:$Z)
- or:[
- currentCharacter == $_
- or:[
- (currentCharacter between:$a and:$e)
- or:[ (currentCharacter between:$g and:$z) ]
- ]
- ]
- ])
+ (currentCharacter isLetter
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -937,132 +931,155 @@
(currentCharacter isXMLDigit) ifTrue:[
^ self scan2
].
- (currentCharacter == $f) ifTrue:[
- self recordMatch:#( 30 ).
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
- (currentCharacter between:$- and:$/)
+ (currentCharacter between:$A and:$Z)
or:[
- (currentCharacter between:$A and:$Z)
+ currentCharacter == $_
or:[
- currentCharacter == $_
- or:[
- (currentCharacter between:$a and:$n)
- or:[ (currentCharacter between:$p and:$z) ]
- ]
+ (currentCharacter between:$a and:$t)
+ or:[ (currentCharacter between:$v and:$z) ]
]
]
])
- ifTrue:[
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $u) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$l)
+ or:[ (currentCharacter between:$n and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $m) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+ ^ self scan1
+ ].
+ (currentCharacter between:$. and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
- (currentCharacter == $o) ifTrue:[
- self recordMatch:#( 30 ).
- self step.
- ((currentCharacter between:$- and:$9)
- or:[
- (currentCharacter between:$A and:$Z)
+ (currentCharacter == $-) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
or:[
- currentCharacter == $_
+ (currentCharacter between:$A and:$Z)
or:[
- (currentCharacter between:$a and:$q)
- or:[ (currentCharacter between:$s and:$z) ]
- ]
- ]
- ])
- ifTrue:[
- [
- self recordMatch:#( 30 ).
- self step.
- (currentCharacter isLetterOrDigit
- or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
- ] whileTrue.
- ^ self reportLastMatch
- ].
- (currentCharacter == $r) ifTrue:[
- self recordMatch:#( 30 ).
- self step.
- (currentCharacter isXMLDigit
- or:[
- (currentCharacter between:$- and:$/)
- or:[
- (currentCharacter between:$A and:$Z)
- or:[
- currentCharacter == $_
- or:[
- (currentCharacter between:$a and:$d)
- or:[ (currentCharacter between:$f and:$z) ]
- ]
- ]
- ]
- ])
- ifTrue:[
- [
- self recordMatch:#( 30 ).
- self step.
- (currentCharacter isLetterOrDigit
- or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
- ] whileTrue.
- ^ self reportLastMatch
- ].
- (currentCharacter == $e) ifTrue:[
- self recordMatch:#( 30 ).
- self step.
- (currentCharacter isXMLDigit
- or:[
- (currentCharacter between:$- and:$/)
- or:[
- (currentCharacter between:$A and:$Z)
+ currentCharacter == $_
or:[
- currentCharacter == $_
- or:[
- (currentCharacter between:$a and:$h)
- or:[ (currentCharacter between:$j and:$z) ]
- ]
+ (currentCharacter between:$a and:$e)
+ or:[ (currentCharacter between:$g and:$z) ]
]
]
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
- (currentCharacter == $i) ifTrue:[
- self recordMatch:#( 30 ).
+ (currentCharacter == $f) ifTrue:[
+ self recordMatch:#( 33 ).
self step.
- ((currentCharacter between:$- and:$9)
+ (currentCharacter isXMLDigit
or:[
- (currentCharacter between:$A and:$Z)
+ (currentCharacter between:$- and:$/)
or:[
- currentCharacter == $_
+ (currentCharacter between:$A and:$Z)
or:[
- (currentCharacter between:$a and:$f)
- or:[ (currentCharacter between:$h and:$z) ]
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$n)
+ or:[ (currentCharacter between:$p and:$z) ]
+ ]
]
]
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
- (currentCharacter == $g) ifTrue:[
- self recordMatch:#( 30 ).
+ (currentCharacter == $o) ifTrue:[
+ self recordMatch:#( 33 ).
self step.
((currentCharacter between:$- and:$9)
or:[
@@ -1070,34 +1087,140 @@
or:[
currentCharacter == $_
or:[
- (currentCharacter between:$a and:$m)
- or:[ (currentCharacter between:$o and:$z) ]
+ (currentCharacter between:$a and:$q)
+ or:[ (currentCharacter between:$s and:$z) ]
]
]
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
- (currentCharacter == $n) ifTrue:[
- self recordMatch:#( 19 30 ).
+ (currentCharacter == $r) ifTrue:[
+ self recordMatch:#( 33 ).
self step.
- (currentCharacter isLetterOrDigit
- or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ]
+ ])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$h)
+ or:[ (currentCharacter between:$j and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $i) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$f)
+ or:[ (currentCharacter between:$h and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $g) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 18 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
^ self reportLastMatch
].
^ self reportLastMatch
@@ -1114,17 +1237,8 @@
].
^ self reportLastMatch
].
- (currentCharacter == $/) ifTrue:[
- [
- self recordMatch:#( 30 ).
- self step.
- (currentCharacter isLetterOrDigit
- or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
- ] whileTrue.
- ^ self reportLastMatch
- ].
(currentCharacter == $f) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1143,7 +1257,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1151,7 +1265,7 @@
^ self reportLastMatch
].
(currentCharacter == $r) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1167,7 +1281,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1175,7 +1289,7 @@
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1191,7 +1305,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1199,14 +1313,14 @@
^ self reportLastMatch
].
(currentCharacter == $m) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1214,7 +1328,7 @@
^ self reportLastMatch
].
(currentCharacter == $:) ifTrue:[
- ^ self recordAndReportMatch:#( 9 ).
+ ^ self recordAndReportMatch:#( 10 ).
].
^ self reportLastMatch
].
@@ -1223,7 +1337,7 @@
^ self reportLastMatch
].
(currentCharacter == $u) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1239,7 +1353,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1247,7 +1361,7 @@
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1263,7 +1377,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1271,7 +1385,7 @@
^ self reportLastMatch
].
(currentCharacter == $c) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1287,7 +1401,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1295,7 +1409,7 @@
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1311,7 +1425,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1319,7 +1433,7 @@
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1335,7 +1449,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1343,7 +1457,7 @@
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1359,7 +1473,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1367,14 +1481,14 @@
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$. and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1382,7 +1496,7 @@
^ self reportLastMatch
].
(currentCharacter == $-) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
((currentCharacter between:$- and:$9)
or:[
@@ -1397,7 +1511,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1405,7 +1519,7 @@
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
((currentCharacter between:$- and:$9)
or:[
@@ -1417,7 +1531,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1425,7 +1539,7 @@
^ self reportLastMatch
].
(currentCharacter == $y) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
((currentCharacter between:$- and:$9)
or:[
@@ -1440,7 +1554,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1448,7 +1562,7 @@
^ self reportLastMatch
].
(currentCharacter == $p) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1466,7 +1580,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1474,13 +1588,13 @@
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
- self recordMatch:#( 1 30 ).
+ self recordMatch:#( 4 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1514,7 +1628,7 @@
^ self reportLastMatch
].
(currentCharacter == $p) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1530,7 +1644,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1538,7 +1652,7 @@
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1554,7 +1668,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1562,7 +1676,7 @@
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1578,7 +1692,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1586,7 +1700,7 @@
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1602,7 +1716,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1610,7 +1724,7 @@
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1626,7 +1740,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1634,7 +1748,7 @@
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
((currentCharacter between:$0 and:$9)
or:[
@@ -1650,7 +1764,7 @@
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1658,14 +1772,14 @@
^ self reportLastMatch
].
(currentCharacter == $r) ifTrue:[
- self recordMatch:#( 27 30 ).
+ self recordMatch:#( 30 33 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$. and:$/) ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1673,7 +1787,7 @@
^ self reportLastMatch
].
(currentCharacter == $-) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
((currentCharacter between:$- and:$9)
or:[
@@ -1688,7 +1802,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1696,7 +1810,7 @@
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isXMLDigit
or:[
@@ -1714,7 +1828,7 @@
])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1722,13 +1836,13 @@
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
- self recordMatch:#( 23 30 ).
+ self recordMatch:#( 29 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
- self recordMatch:#( 30 ).
+ self recordMatch:#( 33 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1755,23 +1869,1061 @@
].
^ self reportLastMatch
].
+ (currentCharacter == $s) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$s)
+ or:[ (currentCharacter between:$u and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $t) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$q)
+ or:[ (currentCharacter between:$s and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $r) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$t)
+ or:[ (currentCharacter between:$v and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $u) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$b)
+ or:[ (currentCharacter between:$d and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $c) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$s)
+ or:[ (currentCharacter between:$u and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $t) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+ ^ self scan1
+ ].
+ (currentCharacter between:$. and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $-) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$e)
+ or:[ (currentCharacter between:$g and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $f) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$n)
+ or:[ (currentCharacter between:$p and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $o) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$q)
+ or:[ (currentCharacter between:$s and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $r) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$h)
+ or:[ (currentCharacter between:$j and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $i) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$f)
+ or:[ (currentCharacter between:$h and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $g) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 27 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $t) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[ (currentCharacter between:$a and:$x) or:[ currentCharacter == $z ] ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $y) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$o)
+ or:[ (currentCharacter between:$q and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $p) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$c)
+ or:[ (currentCharacter between:$e and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $d) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$e)
+ or:[ (currentCharacter between:$g and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $f) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+ ^ self scan1
+ ].
+ (currentCharacter between:$. and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $-) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$e)
+ or:[ (currentCharacter between:$g and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $f) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$n)
+ or:[ (currentCharacter between:$p and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $o) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$q)
+ or:[ (currentCharacter between:$s and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $r) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$h)
+ or:[ (currentCharacter between:$j and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $i) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$f)
+ or:[ (currentCharacter between:$h and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $g) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 8 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $u) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$h)
+ or:[ (currentCharacter between:$j and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $i) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$n)
+ or:[ (currentCharacter between:$p and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $o) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ ((currentCharacter between:$0 and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[ ^ self scan1 ].
+ (currentCharacter between:$- and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 30 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+ ^ self scan1
+ ].
+ (currentCharacter between:$. and:$/) ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $-) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$e)
+ or:[ (currentCharacter between:$g and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $f) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$n)
+ or:[ (currentCharacter between:$p and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $o) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$q)
+ or:[ (currentCharacter between:$s and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $r) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$d)
+ or:[ (currentCharacter between:$f and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $e) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isXMLDigit
+ or:[
+ (currentCharacter between:$- and:$/)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$h)
+ or:[ (currentCharacter between:$j and:$z) ]
+ ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $i) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$f)
+ or:[ (currentCharacter between:$h and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $g) ifTrue:[
+ self recordMatch:#( 33 ).
+ self step.
+ ((currentCharacter between:$- and:$9)
+ or:[
+ (currentCharacter between:$A and:$Z)
+ or:[
+ currentCharacter == $_
+ or:[
+ (currentCharacter between:$a and:$m)
+ or:[ (currentCharacter between:$o and:$z) ]
+ ]
+ ]
+ ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ (currentCharacter == $n) ifTrue:[
+ self recordMatch:#( 19 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ifTrue:[
+ [
+ self recordMatch:#( 33 ).
+ self step.
+ (currentCharacter isLetterOrDigit
+ or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+ ] whileTrue.
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
+ ^ self reportLastMatch
+ ].
^ self reportLastMatch
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionScanner methodsFor:'generated-tokens'!
emptySymbolTokenId
- ^59
+ ^60
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
errorTokenId
- ^60
+ ^61
- "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+ "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!CDefinitionScanner class methodsFor:'documentation'!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cface__CNoNode.st Fri Jul 04 08:35:55 2008 +0000
@@ -0,0 +1,24 @@
+"{ Package: 'cvut:fel/cface' }"
+
+"{ NameSpace: Cface }"
+
+CNode subclass:#CNoNode
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Cface-C AST'
+!
+
+!CNoNode methodsFor:'visiting'!
+
+acceptVisitor:aVisitor
+ "Double dispatch back to the visitor, passing my type encoded in
+ the selector (visitor pattern)"
+
+ "stub code automatically generated - please change if required"
+
+ ^ aVisitor visitCNoNode:self
+
+ "Created: / 04-07-2008 / 09:12:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
--- a/Cface__CNodeVisitor.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CNodeVisitor.st Fri Jul 04 08:35:55 2008 +0000
@@ -144,6 +144,13 @@
"Created: / 12-02-2008 / 22:14:55 / janfrog"
!
+visitCNoNode: node
+
+ "nothing to do"
+
+ "Created: / 04-07-2008 / 09:13:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
visitCPointerNode:anObject
self visit: anObject type
--- a/Cface__CPointerNode.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CPointerNode.st Fri Jul 04 08:35:55 2008 +0000
@@ -51,11 +51,15 @@
ffiTypeSymbol
"Superclass Cface::CTypeNode says that I am responsible to implement this method"
- ^(type isKindOf: CCharNode)
- ifTrue:[#charPointer]
- ifFalse:[#pointer]
+ (type isCCharNode)
+ ifTrue:[^#charPointer].
+ ((type isCStructNode) and:[type isAnonymous not])
+ ifTrue:[^type smalltalkClassNameWithNamespace].
+
+ ^#pointer
"Created: / 03-07-2008 / 22:54:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 09:27:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
type
--- a/Cface__CTypeNode.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CTypeNode.st Fri Jul 04 08:35:55 2008 +0000
@@ -28,6 +28,12 @@
!CTypeNode methodsFor:'testing'!
+isCCharNode
+ ^ false
+
+ "Created: / 04-07-2008 / 09:26:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
isCTypeNode
^ true
--- a/Cface__CairoMapping.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CairoMapping.st Fri Jul 04 08:35:55 2008 +0000
@@ -33,6 +33,17 @@
"Created: / 17-02-2008 / 20:52:26 / janfrog"
!
+smalltalkClassForFunction:cFunction
+
+ ((cFunction cName endsWith:'create')
+ and:[cFunction return isCPointerNode
+ and:[cFunction return type isCStructNode]]) ifTrue:
+ [^cFunction return type smalltalkClass].
+ ^super smalltalkClassForFunction:cFunction
+
+ "Created: / 04-07-2008 / 09:43:37 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
smalltalkClassForType:cType
|cairoName|
--- a/Cface__Generator.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__Generator.st Fri Jul 04 08:35:55 2008 +0000
@@ -3,7 +3,7 @@
"{ NameSpace: Cface }"
CNodeVisitor subclass:#Generator
- instanceVariableNames:'changeset'
+ instanceVariableNames:'changeset module'
classVariableNames:''
poolDictionaries:''
category:'Cface-Generators'
@@ -215,6 +215,20 @@
"Created: #generateStructOrUnionCreateNULLPointerMethod: / 06-01-2008 / 16:09:47 / haja"
! !
+!Generator methodsFor:'accessing'!
+
+module
+ ^ module
+
+ "Created: / 04-07-2008 / 07:41:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+module:aString
+ module := aString.
+
+ "Created: / 04-07-2008 / 07:41:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
!Generator methodsFor:'initialization'!
initialize
--- a/Cface__GeneratorCommand.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__GeneratorCommand.st Fri Jul 04 08:35:55 2008 +0000
@@ -3,7 +3,7 @@
"{ NameSpace: Cface }"
Object subclass:#GeneratorCommand
- instanceVariableNames:'platform mappings definitions'
+ instanceVariableNames:'platform mappings definitions module'
classVariableNames:''
poolDictionaries:''
category:'Cface-Generators'
@@ -19,19 +19,30 @@
cairoDir := '/home/janfrog/Projects/Cface/libcairo/'.
cairoDefFile := cairoDir , 'cairo.h.def'.
+ (
+
Cface::Platform theInstance generatorCommand
definitions: cairoDefFile asFilename;
mappings: Cface::CairoMapping new;
- process.
-
+ module:'libcairo.so';
+ process
+
+ ) apply.
+
cairoPdfDefFile := cairoDir , 'cairo-pdf.h.def'.
-
+
+ (
+
Cface::Platform theInstance generatorCommand
definitions: cairoPdfDefFile asFilename;
mappings: Cface::CairoMapping new;
+ module:'libcairo.so';
process
+
+ ) apply.
"Created: / 03-07-2008 / 23:55:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 10:31:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
generateSubversion
@@ -75,6 +86,18 @@
"Created: / 18-02-2008 / 15:35:04 / janfrog"
!
+module
+ ^ module
+
+ "Created: / 04-07-2008 / 07:40:38 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+module:something
+ module := something.
+
+ "Created: / 04-07-2008 / 07:40:38 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
platform
platform ifNil:[platform := Cface::Platform theInstance].
@@ -110,10 +133,12 @@
self platform typeResolver process: definitions.
self platform typeMapper process: definitions using: self mappings.
- ^self platform generator process: definitions.
+ ^self platform generator
+ module: module;
+ process: definitions.
"Created: / 18-02-2008 / 15:25:54 / janfrog"
- "Modified: / 03-07-2008 / 21:00:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 07:40:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!GeneratorCommand class methodsFor:'documentation'!
--- a/Cface__SmalltalkXGenerator.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__SmalltalkXGenerator.st Fri Jul 04 08:35:55 2008 +0000
@@ -66,6 +66,8 @@
visitCEnumNode: cEnumNode
+ cEnumNode foreign ifTrue:[^self].
+
(changeset add: ClassDefinitionChange new)
superClassName:
SharedPool fullName;
@@ -118,25 +120,35 @@
s tab; nextPut:$^; nextPutAll: cEnumValueNode cName])]
"Created: / 03-07-2008 / 20:10:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Modified: / 03-07-2008 / 22:07:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 09:24:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCFunctionNode:functionNode
(changeset add: MethodDefinitionChange new)
- className: functionNode smalltalkClassNameWithNamespace , ' class';
- category: 'external functions';
- selector: functionNode smalltalkSelector;
+ className: (functionNode smalltalkClassNameWithNamespace , ' class') asSymbol;
+ category: 'primitives';
+ selector: ('prim' , functionNode smalltalkSelector capitalized);
source:
(String streamContents:
[:s|
- s
- nextPutAll: functionNode smalltalkSelector; cr; cr; tab;
+ | primSelector |
+ primSelector := ('prim' , functionNode smalltalkSelector capitalized) asSymbol.
+ functionNode arguments size > 0
+ ifTrue:
+ [primSelector keywords with: functionNode arguments do:
+ [:keyword :argument|
+ s nextPutAll: keyword; space; nextPutAll: argument cName; space]]
+ ifFalse:
+ [s nextPutAll: primSelector].
+ s cr; cr; tab;
nextPutAll: '<cdecl:';
space;
nextPutAll: functionNode return ffiTypeSymbol;
space;
+ nextPut:$";
nextPutAll: functionNode cName;
+ nextPut:$";
space;
nextPut:$(;
space.
@@ -145,15 +157,29 @@
s nextPutAll: argument type ffiTypeSymbol; space].
s
nextPut:$);
- space;
- nextPut:$>])
+ space.
+ module ifNotNil:[
+ s
+ nextPutAll:'module:';
+ space;
+ nextPut:$";
+ nextPutAll: module;
+ nextPut:$";
+ space].
+ s
+ nextPut:$>.
+ s cr; tab.
+ s nextPutAll:'self primitiveFailed'.
+ ]).
"Created: / 03-07-2008 / 21:26:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Modified: / 03-07-2008 / 23:42:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 08:36:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCStructNode: cStructNode
+ cStructNode foreign ifTrue:[^self].
+
cStructNode isAnonymous ifTrue:[^self].
(changeset add: ClassDefinitionChange new)
@@ -167,7 +193,7 @@
cStructNode smalltalkPackage.
"Created: / 03-07-2008 / 21:31:31 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Modified: / 03-07-2008 / 23:42:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 09:24:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCTypedefNode: typedefNode
--- a/Cface__TypeMapping.st Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__TypeMapping.st Fri Jul 04 08:35:55 2008 +0000
@@ -110,9 +110,9 @@
^String streamContents:
[:s|
s nextPutAll:(self smalltalkize: cFunction cName).
- cFunction arguments size > 1 ifTrue:
+ cFunction arguments size > 0 ifTrue:
[s nextPut:$:].
- cFunction arguments size > 2 ifTrue:
+ cFunction arguments size > 1 ifTrue:
[(cFunction arguments copyFrom:2) do:
[:argument|
s
@@ -120,7 +120,7 @@
nextPut:$:]]]
"Created: / 17-02-2008 / 22:15:44 / janfrog"
- "Modified: / 03-07-2008 / 22:30:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 04-07-2008 / 08:28:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!TypeMapping methodsFor:'private - utilities'!