SmaCC__SmaCCSymbol.st
author vranyj1
Mon, 10 Sep 2012 09:07:46 +0000
changeset 23 11ad79f459e6
parent 15 8b8cd1701c33
child 25 5a6921729520
permissions -rw-r--r--
- stx_goodies_smaCC added: #svnRepositoryUrlString changed: #classNamesAndAttributes #extensionMethodNames #preRequisites - SmaCC::SmaCCRHS changed: #parseTreeRewriter
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
Object subclass:#SmaCCSymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     6
	instanceVariableNames:'name precedence firstItems'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     7
	classVariableNames:'EmptySymbol ErrorSymbol SentinelSymbol'
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
SmaCCSymbol comment:'SmaCCSymbol is an abstract class that represents a symbol in the grammar.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    13
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    14
Subclasses must implement the following messages:
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    15
	accessing
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    16
		calculateFirstTerminals
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    17
	testing
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    18
		isTerminal
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    19
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    20
Instance Variables:
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    21
	firstItems	<Collection of: SmaCCTerminalSymbol>	the first terminals that can be produced from us
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    22
	name	<String>	our name
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    23
	precedence	<Integer>	our precedence (in case of shift/reduce conflicts)
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    24
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    25
'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    26
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    27
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    28
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    29
!SmaCCSymbol class methodsFor:'instance creation'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    30
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    31
empty
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    32
	EmptySymbol isNil 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    33
		ifTrue: [EmptySymbol := SmaCCTerminalSymbol name: 'E O F'].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    34
	^EmptySymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    35
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    36
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    37
error
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    38
	ErrorSymbol isNil 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    39
		ifTrue: [ErrorSymbol := SmaCCTerminalSymbol name: 'error'].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    40
	^ErrorSymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    41
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    42
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    43
name: aString 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    44
	^(self new)
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    45
		name: aString;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    46
		yourself
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    47
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    48
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    49
releaseObjects
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    50
	EmptySymbol := nil.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    51
	SentinelSymbol := nil
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    52
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    53
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    54
sentinel
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    55
	SentinelSymbol isNil 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    56
		ifTrue: [SentinelSymbol := SmaCCTerminalSymbol name: 'S e n t i n e l'].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    57
	^SentinelSymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    58
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    59
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    60
!SmaCCSymbol methodsFor:'accessing'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    61
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    62
calculateFirstTerminals
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    63
	^self subclassResponsibility
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    64
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    65
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    66
createIdMethod
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    67
	^false
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    68
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    69
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    70
firstTerminals
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    71
	^firstItems
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    72
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    73
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    74
isEmptySymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    75
	^self = self class empty
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    76
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    77
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    78
name
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    79
	^name
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    80
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    81
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    82
precedence
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    83
	^precedence
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    84
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    85
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    86
precedence: anInteger
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    87
	precedence := anInteger
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    88
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    89
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    90
productionsDo: aBlock
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    91
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    92
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    93
regularExpression
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    94
	^nil
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    95
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    96
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    97
!SmaCCSymbol methodsFor:'initialize-release'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    98
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    99
name: aString 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   100
	name := aString.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   101
	firstItems := Set new
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   102
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   103
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   104
!SmaCCSymbol methodsFor:'printing'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   105
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   106
printOn: aStream 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   107
	aStream nextPutAll: name
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   108
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   109
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   110
!SmaCCSymbol methodsFor:'public'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   111
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   112
isStartingSymbol
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   113
	^false
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   114
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   115
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   116
isTerminal
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   117
	^self subclassResponsibility
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   118
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   119
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   120
!SmaCCSymbol class methodsFor:'documentation'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   121
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   122
version
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   123
    ^ '$Header: /opt/data/cvs/stx/goodies/smaCC/SmaCC__SmaCCSymbol.st,v 1.1 2006-02-09 21:14:28 vranyj1 Exp $'
15
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
   124
!
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
   125
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
   126
version_SVN
8b8cd1701c33 added version_SVN method
vranyj1
parents: 1
diff changeset
   127
    ^ '$Id$'
1
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   128
! !