-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.rb
More file actions
36 lines (31 loc) · 937 Bytes
/
main.rb
File metadata and controls
36 lines (31 loc) · 937 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require "./tokenizer"
require "./parser"
#tokenizer = Tokenizer.new("(+ 10 22 (+ 1 2) 3)", 0)
tokenizer = Tokenizer.new("(+ 1 2 (+ 3 4))", 0,)
puts tokenizer.call
p "tokenize --------------------------"
tokens = p tokenizer.tokenize
index = 0
# インスタンス化する時に空配列わたすの、だいたい頭の悪いパターンなのでやめとく
parser = Parser.new(0,tokens)
p "parse -----------------------------"
p parser.parse
=begin
[
{:type=>:Exprr,
:val=>{:type=>:OPERATOR, :val=>"+"},
:children=>[
{:type=>:NumberNode,:val=>{:type=>:NUMBER, :val=>3}},
{:type=>:NumberNode, :val=>{:type=>:NUMBER, :val=>4}}
]
},
{:type=>:Exprr,
:val=>{:type=>:OPERATOR, :val=>"+"},
:children=>[
{:type=>:NumberNode, :val=>{:type=>:NUMBER, :val=>1}},
{:type=>:NumberNode, :val=>{:type=>:NUMBER, :val=>2}}
]
}
]
=end
p "node -----------------------------"