|
Class: RBLiteralNode
Object
|
+--RBProgramNode
|
+--RBStatementNode
|
+--RBValueNode
|
+--RBLiteralNode
|
+--RBLiteralArrayNode
|
+--RBLiteralValueNode
|
+--RBSyntheticLiteralNode
- Package:
- stx:goodies/refactoryBrowser/parser
- Category:
- Refactory-AST-Nodes
- Version:
- rev:
1.41
date: 2021/01/20 12:18:01
- user: cg
- file: RBLiteralNode.st directory: goodies/refactoryBrowser/parser
- module: stx stc-classLibrary: parser
BRLiteralNode is an AST node that represents literals (e.g., #foo, #(1 2 3), true, etc.).
Instance Variables:
token <BRLiteralToken> the token that contains the literal value as well as its source positions
instance creation
-
literalToken: aLiteralToken
-
-
value: aValue
-
accessing
-
generatedCode
-
-
precedence
-
-
startWithoutParentheses
-
-
stopWithoutParentheses
-
-
token
-
-
value
-
(comment from inherited method)
return the receiver itself.
This allows every object to be used where blocks or valueHolders
are typically used, and allows for valueHolders and blocks to be
used interchangably in some situations.
Time will show, if this is a good idea or leads to sloppy programming
style ... (the idea was borrowed from the Self language).
WARNING: don't 'optimize' away ifXXX: blocks
(i.e. do NOT replace
foo ifTrue:[var1] ifFalse:[var2]
by:
foo ifTrue:var1 ifFalse:var2
)
- the compilers will only generate inline code for the if,
iff the argument(s) are blocks - otherwise, a true send is
generated.
This 'optimization' will work semantically correct,
but execute SLOWER instead.
Using constants (foo ifTrue:1 ifFalse:2) does not introduce a performance penalty.
comparing
-
= anObject
-
avoid precision bug with floats
-
hash
-
(comment from inherited method)
return an Integer useful as a hash key for the receiver.
This hash should return same values for objects with same
contents (i.e. use this to hash on structure)
enumeration
-
allLiteralNodesDo: aBlock
-
initialization & release
-
literalToken: aLiteralToken
-
matching
-
copyInContext: aDictionary
-
-
match: aNode inContext: aDictionary
-
ST/X: patternStringLiteral
special queries
-
addUsedLiteralsTo: aCollection
-
adds the value of the literal to aCollection
-
addUsedSymbolsTo: aCollection
-
testing
-
hasFalseValue
-
-
hasTrueValue
-
-
isImmediate
-
-
isLiteral
-
-
isLiteralArray
-
-
isLiteralByteArray
-
-
isLiteralCharacter
-
-
isLiteralFloat
-
-
isLiteralInteger
-
-
isLiteralNil
-
-
isLiteralNode
-
-
isLiteralNumber
-
-
isLiteralString
-
-
isLiteralSymbol
-
visitor
-
acceptVisitor: aProgramNodeVisitor
-
|