diff options
Diffstat (limited to 'lib/sexp')
-rw-r--r-- | lib/sexp/parse.rb | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/sexp/parse.rb b/lib/sexp/parse.rb index adfd513..44052c2 100644 --- a/lib/sexp/parse.rb +++ b/lib/sexp/parse.rb @@ -34,6 +34,10 @@ class SExp @data = data end + def nil? + car.nil? && cdr.nil? + end + def to_s if car.nil? "()" @@ -75,13 +79,8 @@ def num_members(tokens) end def members_to_tree(members) - case members.length - when 0 - nil - when 1 - SExp.new(members[0], SExp.new) - when 2 - SExp.new(members[0], members[1]) + if members.empty? + SExp.new else SExp.new(members[0], members_to_tree(members[1..-1])) end |