Class: Skeem::SkmSimpleDatum
- Inherits:
-
SkmElement
- Object
- Struct
- SkmElement
- Skeem::SkmSimpleDatum
- Defined in:
- lib/skeem/skm_simple_datum.rb
Overview
Abstract class. Root of class hierarchy needed for Interpreter design pattern
Direct Known Subclasses
Instance Attribute Summary collapse
-
#token ⇒ Rley::Syntax::Token
readonly
Token object corresponding to Skeem element.
- #value ⇒ Object readonly
Class Method Summary collapse
Instance Method Summary collapse
-
#==(other) ⇒ TrueClass, FalseClass
(also: #eqv?)
Equality operator.
-
#accept(aVisitor) ⇒ Object
Part of the 'visitee' role in Visitor design pattern.
- #done! ⇒ Object
-
#evaluate(_runtime) ⇒ Object
Evaluate the Skeem expression represented by this object.
-
#init_value(aValue) ⇒ Object
This method can be overriden.
-
#initialize(aToken, aPosition) ⇒ SkmSimpleDatum
constructor
A new instance of SkmSimpleDatum.
- #position ⇒ Object
-
#quasiquote(runtime) ⇒ Object
Return this object un-evaluated.
- #symbol ⇒ Object
- #verbatim? ⇒ Boolean
Methods inherited from SkmElement
#boolean?, #bound!, #callable?, #char?, #complex?, #inspect, #integer?, #list?, #null?, #number?, #pair?, #procedure?, #quoted!, #rational?, #real?, #skm_eq?, #string?, #symbol?, #unquoted!, #vector?
Constructor Details
#initialize(aToken, aPosition) ⇒ SkmSimpleDatum
Returns a new instance of SkmSimpleDatum.
15 16 17 18 19 |
# File 'lib/skeem/skm_simple_datum.rb', line 15 def initialize(aToken, aPosition) super(aPosition) @token = aToken init_value(aToken.lexeme) end |
Instance Attribute Details
#token ⇒ Rley::Syntax::Token (readonly)
Returns token object corresponding to Skeem element.
10 11 12 |
# File 'lib/skeem/skm_simple_datum.rb', line 10 def token @token end |
#value ⇒ Object (readonly)
13 14 15 |
# File 'lib/skeem/skm_simple_datum.rb', line 13 def value @value end |
Class Method Details
.create(aValue) ⇒ Object
21 22 23 24 25 |
# File 'lib/skeem/skm_simple_datum.rb', line 21 def self.create(aValue) lightweight = allocate lightweight.init_value(aValue) lightweight end |
Instance Method Details
#==(other) ⇒ TrueClass, FalseClass Also known as: eqv?
Equality operator. Returns true when: self and 'other' are identical, or when they have same value
40 41 42 43 44 45 46 47 48 |
# File 'lib/skeem/skm_simple_datum.rb', line 40 def ==(other) return true if equal?(other) if other.kind_of?(SkmSimpleDatum) value == other.value else value == other end end |
#accept(aVisitor) ⇒ Object
Part of the 'visitee' role in Visitor design pattern.
77 78 79 |
# File 'lib/skeem/skm_simple_datum.rb', line 77 def accept(aVisitor) aVisitor.visit_simple_datum(self) end |
#done! ⇒ Object
57 58 59 |
# File 'lib/skeem/skm_simple_datum.rb', line 57 def done! # Do nothing end |
#evaluate(_runtime) ⇒ Object
Evaluate the Skeem expression represented by this object. Reminder: terminals evaluate to themselves.
64 65 66 |
# File 'lib/skeem/skm_simple_datum.rb', line 64 def evaluate(_runtime) self end |
#init_value(aValue) ⇒ Object
This method can be overriden
82 83 84 |
# File 'lib/skeem/skm_simple_datum.rb', line 82 def init_value(aValue) @value = aValue end |
#position ⇒ Object
31 32 33 |
# File 'lib/skeem/skm_simple_datum.rb', line 31 def position token.position end |
#quasiquote(runtime) ⇒ Object
Return this object un-evaluated. Reminder: As terminals are atomic, there is no need to launch a visitor.
71 72 73 |
# File 'lib/skeem/skm_simple_datum.rb', line 71 def quasiquote(runtime) evaluate(runtime) end |
#symbol ⇒ Object
27 28 29 |
# File 'lib/skeem/skm_simple_datum.rb', line 27 def symbol token.terminal end |
#verbatim? ⇒ Boolean
53 54 55 |
# File 'lib/skeem/skm_simple_datum.rb', line 53 def verbatim? true end |