From: Luis Lavena Date: 2008-06-10T04:10:06+09:00 Subject: Re: AST for ruby code On Jun 9, 1:09 pm, John Micheal wrote: > Hi! > I want AST for the following code as it is given below. I have install > ruby_parser 1.0 on my system. We are able to parse string using > "RubyParser.new.parse("1+1 = 2")" and the result is " s(:str, "1+1=2")". > But how I can parse the full source file(given below)? > > Further, whenever I try to parse the string containing class or def in > it, it gives error (it means, it is parsing C code not ruby) I have also > attached the screenshot for this problem. Please also guide us in this > mater. > > Ruby Code: > ...................readfile.rb > > class TestClass > >      def method1(a,b) >         sum = a + b >         puts sum >      end > >      def method2(*c) >         l = c.length >         puts l >      end > end > > Desired AST Tree: > ................... > > s(:class, :TestClass, s(:const, :Object), s(:defn, :method1, s(:scope, > s(:block, s(:args, :a, :b), s(:lasgn, :sum, s(:call, s(:lvar, :a), :+, > s(:array, s(:lvar, :b)))), s(:fcall, :puts, s(:array, s(:lvar, > :sum)))))), s(:defn, :method2, s(:scope, s(:block, s(:args, :"*c"), > s(:lasgn, :l, s(:call, s(:lvar, :c), :length)), s(:fcall, :puts, > s(:array, s(:lvar, :l))))))) > > Attachments:http://www.ruby-forum.com/attachment/2131/error.GIF > On line 14 of your sample you're starting a block (well, not actually), just replace the |file| just just file and see if it works. HTH, -- Luis Lavena