[フレーム]

Class: Opal::Sexp

Inherits:
Object show all
Defined in:
opal/lib/opal/parser/sexp.rb

Overview

[Opal::Sexp] is used to build up the syntax tree inside [Opal::Parser]. The compiler then steps through the sexp trees to generate the javascript code.

For example, an array of integers [1, 2] might be represented by:

s(:array, s(:int, 1), s(:int, 2))

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Sexp

Returns a new instance of Sexp

15
16
17
# File 'opal/lib/opal/parser/sexp.rb', line 15
def initialize(args)
 @array = args
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object

31
32
33
# File 'opal/lib/opal/parser/sexp.rb', line 31
def method_missing(sym, *args, &block)
 @array.send sym, *args, &block
end

Instance Attribute Details

#arrayObject (readonly)

Returns the value of attribute array

11
12
13
# File 'opal/lib/opal/parser/sexp.rb', line 11
def array
 @array
end

#sourceObject

Returns the value of attribute source

13
14
15
# File 'opal/lib/opal/parser/sexp.rb', line 13
def source
 @source
end

Instance Method Details

#<<(other) ⇒ Object

35
36
37
38
# File 'opal/lib/opal/parser/sexp.rb', line 35
def <<(other)
 @array << other
 self
end

#==(other) ⇒ Object Also known as: eql?

53
54
55
56
57
58
59
# File 'opal/lib/opal/parser/sexp.rb', line 53
def ==(other)
 if other.is_a? Sexp 
 @array == other.array
 else
 @array == other
 end
end

#childrenObject

27
28
29
# File 'opal/lib/opal/parser/sexp.rb', line 27
def children
 @array[1..-1]
end

#columnObject

67
68
69
# File 'opal/lib/opal/parser/sexp.rb', line 67
def column
 @source && @source[1]
end

#dupObject

49
50
51
# File 'opal/lib/opal/parser/sexp.rb', line 49
def dup
 Sexp .new (@array.dup)
end

#inspectObject Also known as: to_s

71
72
73
# File 'opal/lib/opal/parser/sexp.rb', line 71
def inspect
 "(#{@array.map { |e| e.inspect }.join ', '})"
end

#lineObject

63
64
65
# File 'opal/lib/opal/parser/sexp.rb', line 63
def line
 @source && @source[0]
end

#pretty_inspectObject

75
76
77
# File 'opal/lib/opal/parser/sexp.rb', line 75
def pretty_inspect
 "(#{line ? "#{line}" : ''}#{@array.map { |e| e.inspect }.join ', '})"
end

#push(*parts) ⇒ Object

40
41
42
43
# File 'opal/lib/opal/parser/sexp.rb', line 40
def push(*parts)
 @array.push(*parts)
 self
end

#to_aryObject

45
46
47
# File 'opal/lib/opal/parser/sexp.rb', line 45
def to_ary
 @array
end

#typeObject

19
20
21
# File 'opal/lib/opal/parser/sexp.rb', line 19
def type
 @array[0]
end

#type=(type) ⇒ Object

23
24
25
# File 'opal/lib/opal/parser/sexp.rb', line 23
def type=(type)
 @array[0] = type
end

AltStyle によって変換されたページ (->オリジナル) /