PPCompositeParser.st
author Claus Gittinger <cg@exept.de>
Sun, 13 Oct 2019 18:27:55 +0200
changeset 647 ee23ff60ceec
parent 640 63fdad4b773d
permissions -rw-r--r--
#DOCUMENTATION by exept class: PPParser comment/format in: #matchesIn: #matchesIn:do: #matchesSkipIn:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     1
"{ Encoding: utf8 }"
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     2
4
90de244a7fa2 move to package
Claus Gittinger <cg@exept.de>
parents: 0
diff changeset
     3
"{ Package: 'stx:goodies/petitparser' }"
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     5
"{ NameSpace: Smalltalk }"
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     6
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
PPDelegateParser subclass:#PPCompositeParser
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
     8
	instanceVariableNames:'dependencies'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'PetitParser-Tools'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!PPCompositeParser class methodsFor:'instance creation'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
new
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	"Answer a new parser starting at the default start symbol."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ self newStartingAt: self startSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
newStartingAt: aSymbol
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    24
	"Answer a new parser starting at aSymbol. The code makes sure to resolve all dependent parsers correctly."
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    26
	| parsers remaining |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    27
	parsers := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    28
	remaining := OrderedCollection with: self.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    29
	[ remaining isEmpty ] whileFalse: [
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    30
		| dependency |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    31
		dependency := remaining removeLast.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    32
		(parsers includesKey: dependency) ifFalse: [
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    33
			parsers at: dependency put: dependency basicNew.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    34
			remaining addAll: dependency dependencies ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    35
	parsers keysAndValuesDo: [ :class :parser |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    36
		| dependencies |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    37
		dependencies := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    38
		class dependencies 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    39
			do: [ :dependency | dependencies at: dependency put: (parsers at: dependency) ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    40
		parser 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    41
			initializeStartingAt: (class == self
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    42
				ifTrue: [ aSymbol ]
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    43
				ifFalse: [ class startSymbol ]) 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    44
			dependencies: dependencies ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    45
	parsers keysAndValuesDo: [ :class :parser |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    46
		parser setParser: (parser perform: parser children first name).
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    47
		parser productionNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    48
			(parser instVarAt: key) setParser: (parser perform: value) ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    49
	^ parsers at: self
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!PPCompositeParser class methodsFor:'accessing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    54
dependencies
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    55
	"Answer a collection of PPCompositeParser classes that this parser directly dependends on. Override this method in subclasses to declare dependent parsers. The default implementation does not depend on other PPCompositeParser."
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    56
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    57
	^ #()
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    58
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    59
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
ignoredNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	"Answer a collection of instance-variables that should not be automatically initialized with productions, but that are used internal to the composite parser."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	^ PPCompositeParser allInstVarNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
startSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	"Answer the method that represents the default start symbol."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	^ #start
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!PPCompositeParser class methodsFor:'parsing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
parse: anObject
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	^ self parse: anObject startingAt: self startSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
parse: anObject onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	^ self parse: anObject startingAt: self startSymbol onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
parse: anObject startingAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	^ (self newStartingAt: aSymbol) parse: anObject
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
parse: anObject startingAt: aSymbol onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
	^ (self newStartingAt: aSymbol) parse: anObject onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!PPCompositeParser methodsFor:'accessing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
start
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	"Answer the production to start this parser with."
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    94
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	self subclassResponsibility
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!PPCompositeParser methodsFor:'initialization'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
initializeStartingAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	| allVariableNames ignoredVariableNames productionIndexesAndNames |
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   102
	self initialize.	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	"find all the productions that need to be initialized"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	allVariableNames := self class allInstVarNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		collect: [ :each | each asSymbol ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	ignoredVariableNames := self class ignoredNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		collect: [ :each | each asSymbol ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	productionIndexesAndNames := ((1 to: self class instSize)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		collect: [ :index | index -> (allVariableNames at: index) ])
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		reject: [ :assoc | ignoredVariableNames includes: assoc value ].
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   112
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	"initialize productions with an undefined parser to be replaced later"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	parser := PPUnresolvedParser named: aSymbol.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
	productionIndexesAndNames do: [ :assoc |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
		self instVarAt: assoc key put: (PPUnresolvedParser named: assoc value) ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	parser def: (self perform: aSymbol).
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   118
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	"resolve unresolved parsers with their actual implementation"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	productionIndexesAndNames do: [ :assoc |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
		(self respondsTo: assoc value)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
			ifFalse: [ self error: 'Unable to initialize ' , assoc value printString ]
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
			ifTrue: [ (self instVarAt: assoc key) def: (self perform: assoc value) ] ]
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   124
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   125
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   126
initializeStartingAt: aSymbol dependencies: aDictionary
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   127
	self initialize.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   128
	parser := PPDelegateParser named: aSymbol.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   129
	self productionNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   130
		self instVarAt: key put: (PPDelegateParser named: value) ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   131
	dependencies := aDictionary
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!PPCompositeParser methodsFor:'querying'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   136
dependencyAt: aClass
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   137
        "Answer the dependent parser aClass. Throws an error if this parser class is not declared in the method #dependencies on the class-side of the receiver."
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   138
        
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   139
        ^ dependencies at: aClass ifAbsent: [ self error: 'Undeclared dependency in ' , self className , ' to ' , aClass name ]
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   140
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   141
    "Modified: / 28-06-2019 / 09:12:51 / Claus Gittinger"
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   142
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   143
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
productionAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
	"Answer the production named aSymbol."
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   146
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	^ self productionAt: aSymbol ifAbsent: [ nil ]
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
productionAt: aSymbol ifAbsent: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
	"Answer the production named aSymbol, if there is no such production answer the result of evaluating aBlock."
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   152
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	(self class ignoredNames includes: aSymbol asString)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
		ifTrue: [ ^ aBlock value ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
	(self class startSymbol = aSymbol)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
		ifTrue: [ ^ parser ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
	^ self instVarAt: (self class allInstVarNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
		indexOf: aSymbol asString
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
		ifAbsent: [ ^ aBlock value ])
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   160
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   161
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   162
productionNames
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   163
	"Answer a dictionary of slot indexes and production names."
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   164
	
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   165
	| productionNames ignoredNames |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   166
	productionNames := Dictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   167
	ignoredNames := self class ignoredNames
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   168
		collect: [ :each | each asSymbol ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   169
	self class allInstVarNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   170
		(ignoredNames includes: value asSymbol)
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   171
			ifFalse: [ productionNames at: key put: value asSymbol ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   172
	^ productionNames
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
!PPCompositeParser class methodsFor:'documentation'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   177
version
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   178
    ^ '$Header$'
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   179
!
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   180
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   181
version_CVS
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   182
    ^ '$Header$'
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   183
!
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   184
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
version_SVN
640
63fdad4b773d #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   186
    ^ '$Id$'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
! !
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   188