From ced73fc2f3cb90237246859a362eb427d3b9d267 Mon Sep 17 00:00:00 2001 From: vonhyou Date: Thu, 15 Apr 2021 01:21:41 +0800 Subject: [PATCH] . --- prol.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/prol.rb b/prol.rb index 06eb572..dd1fcd8 100644 --- a/prol.rb +++ b/prol.rb @@ -20,15 +20,20 @@ module Lisp program.gsub('(', ' ( ').gsub(')', ' ) ').split end - def self.read_tokens(tokens, lst = []) + def self.make_list(tokens) + lst = [] + lst << read_tokens(tokens) while tokens[0] != ')' + tokens.shift + lst + end + + def self.read_tokens(tokens) # read expressions from token raise SyntaxError, 'Unexpected EOF' if tokens.empty? case token = tokens.shift when '(' - lst << read_tokens(tokens) while tokens[0] != ')' - tokens.shift - lst + make_list tokens when ')' raise SyntaxError, "Unexpected ')'" else