Sha256: d5b3a79526e3835f652306cda8b175232117403b6709716cfb41b04ec8adea60
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
require File.dirname(__FILE__) + "/../vendor/treetop/lib/treetop" require '../lib/parser/personify_node_classes' require '../lib/context' Treetop.load "../lib/parser/personify" # STR = "a [TAG] is never [TAG] with [TAG2] and [troepie] bla" # STR = "[A1|B1|\"str\"] [A1|B1|str] [AB(T1)]" # STR = "[AND(\"1\", 2,3)] <a href=\"http://mlr1.nl/r/[TOKEN]/539\"> financiƫle" # STR = "[FUN() DO]\nvalue\n[T1]\n[END | \"bla\"] bla [FUN() DO]OER![END | '']" # STR = "[IF(DETECT(FALSE,FALSE, TRUE)) DO]yes[END | \"\"]" STR = "[A || B]" # STR = "[TRUE DO]bla[END]" # STR = "[FUN()]" @parser = PersonifyLanguageParser.new class TheContext < Personify::DefaultContext context_method :if def detect(*statements) statements.detect{|s| s } end context_method :detect end def clean_tree(root_node) return if(root_node.elements.nil?) root_node.elements.delete_if{|node| node.class.name == "Treetop::Runtime::SyntaxNode" } root_node.elements.each {|node| clean_tree(node) } end if result = @parser.parse(STR) puts "done" puts result puts "=" * 50 # clean_tree(result) puts result.inspect puts "=" * 50 t = TheContext.new t.local_assigns = { "a" => "lA", "b" => "lB", "fun" => Proc.new{|p| "--#{p}--" }, "true" => true, "false" => false, "t1" => "tt", "tag" => "henk", "ab" => Proc.new{|p| p.inspect }, "and" => Proc.new{|*c| c.join(" & ") } } puts result.eval(t).inspect else puts "FAIL" puts @parser.inspect puts "=" * 50 puts @parser.terminal_failures.join("\n") end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
personify-1.0.0 | test/parse_runner.rb |