相关疑难解决方法(0)

学习树顶

我正在尝试自学Ruby的Treetop语法生成器.我发现,不仅文档中的"最佳"文档非常稀疏,而且它似乎并不像我希望的那样直观.

在高层次上,我真的很喜欢比现场文档或视频更好的教程,如果有的话.

在较低的层次上,这是一个我根本无法工作的语法:

grammar SimpleTest

  rule num
    (float / integer)
  end

  rule float
   (
    (( '+' / '-')? plain_digits '.' plain_digits) /
    (( '+' / '-')? plain_digits ('E' / 'e') plain_digits ) /
    (( '+' / '-')? plain_digits '.') / 
    (( '+' / '-')? '.' plain_digits) 
   ) {
      def eval
        text_value.to_f
      end
   }
  end

  rule integer
    (( '+' / '-' )? plain_digits) {
      def eval
        text_value.to_i
      end
    }
  end

  rule plain_digits
    [0-9] [0-9]*      
  end

end
Run Code Online (Sandbox Code Playgroud)

当我加载它并在一个非常简单的测试对象中运行一些断言时,我发现:

assert_equal @parser.parse('3.14').eval,3.14
Run Code Online (Sandbox Code Playgroud)

工作正常,而

assert_equal …
Run Code Online (Sandbox Code Playgroud)

ruby grammar parsing treetop

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

grammar ×1

parsing ×1

ruby ×1

treetop ×1