SmaCC__SmaCCNonTerminalSymbol.st
author vranyj1
Mon, 28 Dec 2009 15:53:27 +0000
changeset 15 8b8cd1701c33
parent 1 b8cca2663544
child 25 5a6921729520
permissions -rw-r--r--
added version_SVN method
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:goodies/smaCC' }"
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     2
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     3
"{ NameSpace: SmaCC }"
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     4
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     5
SmaCCSymbol subclass:#SmaCCNonTerminalSymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     6
	instanceVariableNames:'productions'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     7
	classVariableNames:''
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     8
	poolDictionaries:''
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     9
	category:'SmaCC-Parser Generator'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    10
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    11
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    12
SmaCCNonTerminalSymbol comment:'SmaCCNonTerminalSymbol represents a non-terminal symbol in our grammar.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    13
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    14
Instance Variables:
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    15
	productions	<SequenceableCollection of: SmaCCRHS>	our rhs'' for the symbol'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    16
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    17
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    18
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    19
!SmaCCNonTerminalSymbol methodsFor:'accessing'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    20
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    21
addProduction: aRHS
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    22
	productions add: aRHS
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    23
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    24
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    25
calculateFirstTerminals
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    26
	| initialSize |
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    27
	initialSize := firstItems size.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    28
	productions isEmpty 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    29
		ifTrue: [firstItems add: self class empty]
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    30
		ifFalse: [productions do: [:each | firstItems addAll: each firstTerminals]].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    31
	^initialSize ~= firstItems size
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    32
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    33
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    34
positionOf: aRHS 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    35
	^productions indexOf: aRHS
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    36
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    37
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    38
productionsDo: aBlock 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    39
	productions do: aBlock
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    40
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    41
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    42
size
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    43
	^productions size
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    44
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    45
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    46
!SmaCCNonTerminalSymbol methodsFor:'initialize-release'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    47
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    48
name: aString 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    49
	super name: aString.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    50
	productions := OrderedCollection new
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    51
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    52
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    53
!SmaCCNonTerminalSymbol methodsFor:'public'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    54
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    55
isEmpty
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    56
	^productions isEmpty
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    57
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    58
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    59
isTerminal
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    60
	^false
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    61
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    62
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    63
!SmaCCNonTerminalSymbol class methodsFor:'documentation'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    64
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    65
version
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    66
    ^ '$Header: /opt/data/cvs/stx/goodies/smaCC/SmaCC__SmaCCNonTerminalSymbol.st,v 1.1 2006-02-09 21:18:48 vranyj1 Exp $'
15
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
    67
!
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
    68
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
    69
version_SVN
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
    70
    ^ '$Id$'
1
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    71
! !