PPCompositeParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 08:37:37 +0100
changeset 510 869853decf31
parent 502 1e45d3c96ec5
permissions -rw-r--r--
Tests refactoring - use generated test cases to make sure all posibilities are tested. Do not generate resource for all combinations, use PPCSetUpBeforeTearDownAfterResource instead that delegates parser compilation to the testcase itself (it calls it's #setUpBefore method).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
90de244a7fa2 move to package
Claus Gittinger <cg@exept.de>
parents: 0
diff changeset
     1
"{ Package: 'stx:goodies/petitparser' }"
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
502
1e45d3c96ec5 Updated to PetitCompiler-JanVrany.135, PetitCompiler-Tests-JanKurs.93, PetitCompiler-Extras-Tests-JanVrany.16, PetitCompiler-Benchmarks-JanKurs.12
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 182
diff changeset
     3
"{ NameSpace: Smalltalk }"
1e45d3c96ec5 Updated to PetitCompiler-JanVrany.135, PetitCompiler-Tests-JanKurs.93, PetitCompiler-Extras-Tests-JanVrany.16, PetitCompiler-Benchmarks-JanKurs.12
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 182
diff changeset
     4
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
PPDelegateParser subclass:#PPCompositeParser
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
     6
	instanceVariableNames:'dependencies'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'PetitParser-Tools'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
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
!PPCompositeParser class methodsFor:'instance creation'!
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
new
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	"Answer a new parser starting at the default start symbol."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	^ self newStartingAt: self startSymbol
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
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
newStartingAt: aSymbol
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    22
	"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
    23
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    24
	| parsers remaining |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    25
	parsers := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    26
	remaining := OrderedCollection with: self.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    27
	[ remaining isEmpty ] whileFalse: [
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    28
		| dependency |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    29
		dependency := remaining removeLast.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    30
		(parsers includesKey: dependency) ifFalse: [
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    31
			parsers at: dependency put: dependency basicNew.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    32
			remaining addAll: dependency dependencies ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    33
	parsers keysAndValuesDo: [ :class :parser |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    34
		| dependencies |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    35
		dependencies := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    36
		class dependencies 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    37
			do: [ :dependency | dependencies at: dependency put: (parsers at: dependency) ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    38
		parser 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    39
			initializeStartingAt: (class == self
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    40
				ifTrue: [ aSymbol ]
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    41
				ifFalse: [ class startSymbol ]) 
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    42
			dependencies: dependencies ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    43
	parsers keysAndValuesDo: [ :class :parser |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    44
		parser setParser: (parser perform: parser children first name).
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    45
		parser productionNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    46
			(parser instVarAt: key) setParser: (parser perform: value) ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    47
	^ parsers at: self
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!PPCompositeParser class methodsFor:'accessing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    52
dependencies
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    53
	"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
    54
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    55
	^ #()
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    56
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
    57
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
ignoredNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	"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
    60
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	^ PPCompositeParser allInstVarNames
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
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
startSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	"Answer the method that represents the default start symbol."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ #start
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
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!PPCompositeParser class methodsFor:'parsing'!
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
parse: anObject
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	^ self parse: anObject startingAt: self startSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
parse: anObject onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
	^ self parse: anObject startingAt: self startSymbol onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
parse: anObject startingAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	^ (self newStartingAt: aSymbol) parse: anObject
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
parse: anObject startingAt: aSymbol onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
	^ (self newStartingAt: aSymbol) parse: anObject onError: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
502
1e45d3c96ec5 Updated to PetitCompiler-JanVrany.135, PetitCompiler-Tests-JanKurs.93, PetitCompiler-Extras-Tests-JanVrany.16, PetitCompiler-Benchmarks-JanKurs.12
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 182
diff changeset
    88
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!PPCompositeParser methodsFor:'accessing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
start
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
	"Answer the production to start this parser with."
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    93
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	self subclassResponsibility
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
! !
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
!PPCompositeParser methodsFor:'initialization'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
initializeStartingAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
	| allVariableNames ignoredVariableNames productionIndexesAndNames |
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   101
	self initialize.	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	"find all the productions that need to be initialized"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	allVariableNames := self class allInstVarNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		collect: [ :each | each asSymbol ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	ignoredVariableNames := self class ignoredNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		collect: [ :each | each asSymbol ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
	productionIndexesAndNames := ((1 to: self class instSize)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
		collect: [ :index | index -> (allVariableNames at: index) ])
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		reject: [ :assoc | ignoredVariableNames includes: assoc value ].
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   111
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	"initialize productions with an undefined parser to be replaced later"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	parser := PPUnresolvedParser named: aSymbol.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	productionIndexesAndNames do: [ :assoc |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
		self instVarAt: assoc key put: (PPUnresolvedParser named: assoc value) ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
	parser def: (self perform: aSymbol).
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   117
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	"resolve unresolved parsers with their actual implementation"
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	productionIndexesAndNames do: [ :assoc |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
		(self respondsTo: assoc value)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
			ifFalse: [ self error: 'Unable to initialize ' , assoc value printString ]
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
			ifTrue: [ (self instVarAt: assoc key) def: (self perform: assoc value) ] ]
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   123
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   124
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   125
initializeStartingAt: aSymbol dependencies: aDictionary
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   126
	self initialize.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   127
	parser := PPDelegateParser named: aSymbol.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   128
	self productionNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   129
		self instVarAt: key put: (PPDelegateParser named: value) ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   130
	dependencies := aDictionary
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
! !
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
!PPCompositeParser methodsFor:'querying'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   135
dependencyAt: aClass
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   136
	"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."
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   137
	
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   138
	^ dependencies at: aClass ifAbsent: [ self error: 'Undeclared dependency in ' , self class name , ' to ' , aClass name ]
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   139
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   140
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
productionAt: aSymbol
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	"Answer the production named aSymbol."
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   143
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	^ self productionAt: aSymbol ifAbsent: [ nil ]
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
productionAt: aSymbol ifAbsent: aBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	"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
   149
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	(self class ignoredNames includes: aSymbol asString)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		ifTrue: [ ^ aBlock value ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
	(self class startSymbol = aSymbol)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
		ifTrue: [ ^ parser ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
	^ self instVarAt: (self class allInstVarNames
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
		indexOf: aSymbol asString
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
		ifAbsent: [ ^ aBlock value ])
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   157
!
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   158
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   159
productionNames
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   160
	"Answer a dictionary of slot indexes and production names."
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   161
	
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   162
	| productionNames ignoredNames |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   163
	productionNames := Dictionary new.
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   164
	ignoredNames := self class ignoredNames
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   165
		collect: [ :each | each asSymbol ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   166
	self class allInstVarNames keysAndValuesDo: [ :key :value |
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   167
		(ignoredNames includes: value asSymbol)
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   168
			ifFalse: [ productionNames at: key put: value asSymbol ] ].
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   169
	^ productionNames
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!PPCompositeParser class methodsFor:'documentation'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   174
version
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   175
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPCompositeParser.st,v 1.4 2014-03-04 14:33:36 cg Exp $'
28
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   176
!
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   177
1194e560eda4 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   178
version_CVS
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   179
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPCompositeParser.st,v 1.4 2014-03-04 14:33:36 cg Exp $'
28
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
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
version_SVN
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   183
    ^ '$Id: PPCompositeParser.st,v 1.4 2014-03-04 14:33:36 cg Exp $'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
! !
182
Claus Gittinger <cg@exept.de>
parents: 28
diff changeset
   185