From: Shashank Date Date: 2002-09-10T15:53:24+09:00 Subject: Rockit problem Ruby + Rockit gurus, I am using ruby 1.7.2 (2002-07-02) [i386-mswin32] Downloaded and installed Rockit (rockit-0-3-8.tar.gz) and Memoize (memoize-0-1-2.tar.gz). Ran the example Expression Grammar given at http://rockit.sourceforge.net/ (see code below) Got the following errors: C:\tst_rockit.rb:35: warning: parenthesize argument(s) for future version C:/ruby/lib/ruby/site_ruby/resultcache.rb:5: warning: already initialized constant BoundedLruCache C:/ruby/lib/ruby/site_ruby/rockit/rockit.rb:24:in `generate_parser': undefined local variable or method `rockit_grammars_parser' for Parse:Module (NameError) from C:\tst_rockit.rb:3 What did I miss? TIA, -- Shanko #-------------------- tst_rockit.rb --------------------------------- # Example of using the rockit lib in Ruby code require 'rockit/rockit' parser = Parse.generate_parser <<-'END_OF_GRAMMAR' Grammar ExampleGrammar Tokens Blank = /\s+/ [:Skip] Number = /\d+/ Productions Expr -> Number [^] | Expr '+' Expr [Plus: left,_,right] | Expr '-' Expr [Minus: left,_,right] | Expr '*' Expr [Mul: left,_,right] | Expr '/' Expr [Div: left,_,right] | '(' Expr ')' [^: _,expr,_] Priorities left(Plus), left(Minus), left(Mul), left(Div) Div = Mul > Plus = Minus END_OF_GRAMMAR def calc_eval(ast) case ast.name when "Plus" calc_eval(ast.left) + calc_eval(ast.right) when "Minus" calc_eval(ast.left) - calc_eval(ast.right) when "Mul" calc_eval(ast.left) * calc_eval(ast.right) when "Div" calc_eval(ast.left) / calc_eval(ast.right) when "Number" ast.lexeme.to_i end end calc_eval(parser.parse '(4*((2+6)-3))/2') # => 10 #-------------------------------------------------------