analyzer/PPProcessor.st
author sr
Thu, 05 Jul 2018 09:23:25 +0200
changeset 626 5159b1039a8f
parent 285 e475ffd31c4b
child 459 4751c407bb40
permissions -rw-r--r--
order
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
200
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/analyzer' }"
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#PPProcessor
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'searches context'
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'PetitAnalyzer-Core'
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!PPProcessor class methodsFor:'instance creation'!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
new
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self basicNew initialize
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!PPProcessor methodsFor:'initialization'!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
initialize
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	super initialize.
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	searches := OrderedCollection new.
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	context := Dictionary new
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
! !
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!PPProcessor methodsFor:'private'!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
context
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ context
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
performRule: aRule on: aParser
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	context := Dictionary new.
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	^ aRule performOn: aParser
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
performRulesOn: aParser
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	| result |
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	searches do: [ :rule |
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
		result := self performRule: rule on: aParser.
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
		result notNil ifTrue: [ ^ result ] ].
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	^ nil
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
! !
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!PPProcessor methodsFor:'rules'!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
addRule: aGrammarRule
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	searches add: (aGrammarRule setOwner: self)
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
! !
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!PPProcessor class methodsFor:'documentation'!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
version
285
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    53
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/analyzer/PPProcessor.st,v 1.2 2014-03-04 20:27:44 cg Exp $'
200
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
version_CVS
285
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    57
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/analyzer/PPProcessor.st,v 1.2 2014-03-04 20:27:44 cg Exp $'
200
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
! !
4c2367c19e67 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59