Sha256: 3c4d3520c79862210ad325def0892f629a93bdecc8cffda4621a9fcaa63ace4c
Contents?: true
Size: 1.19 KB
Versions: 1
Compression:
Stored size: 1.19 KB
Contents
require 'spec_helper' describe "the README examples" do it 'works as announced' do grammar = Sexpr.load(<<-YAML) rules: # alternative rule bool_expr: - bool_and - bool_or - bool_not - var_ref - bool_lit # non-terminal bool_and: - [ bool_expr, bool_expr ] bool_or: - [ bool_expr, bool_expr ] bool_not: - [ bool_expr ] bool_lit: - [ truth_value ] var_ref: - [ var_name ] # terminals var_name: !ruby/regexp /^[a-z]+$/ truth_value: - true - false YAML # the grammar can be used to verify the structure of s-expressions f = (grammar === [:bool_and, [:bool_not, [:var_ref, "x"]], [:bool_lit, true]]) f.should be_true f = (grammar === [:bool_and, [:bool_lit, "true"]]) f.should be_false # the grammar can also be used to automatically have support on top of # such s-expressions expr = grammar.sexpr([:bool_lit, true]) (expr.sexpr_type).should eq(:bool_lit) # => :bool_lit (expr.sexpr_body).should eq([true]) # => [true] end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sexpr-0.3.0 | spec/test_readme_examples.rb |