Sha256: 8dc78dac8f9465a5f6a62aa057ae97fbadd5b111efe8895ac824d46938dc3793

Contents?: true

Size: 947 Bytes

Versions: 7347

Compression:

Stored size: 947 Bytes

Contents

module AST
  # This simple module is very useful in the cases where one needs
  # to define deeply nested ASTs from Ruby code, for example, in
  # tests. It should be used like this:
  #
  #     describe YourLanguage::AST do
  #       include Sexp
  #
  #       it "should correctly parse expressions" do
  #         YourLanguage.parse("1 + 2 * 3").should ==
  #             s(:add,
  #               s(:integer, 1),
  #               s(:multiply,
  #                 s(:integer, 2),
  #                 s(:integer, 3)))
  #       end
  #     end
  #
  # This way the amount of boilerplate code is greatly reduced.
  module Sexp
    # Creates a {Node} with type `type` and children `children`.
    # Note that the resulting node is of the type AST::Node and not a
    # subclass.
    # This would not pose a problem with comparisons, as {Node#==}
    # ignores metadata.
    def s(type, *children)
      Node.new(type, children)
    end
  end
end

Version data entries

7,347 entries across 7,338 versions & 56 rubygems

Version Path
ory-client-0.0.1.alpha90 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha89 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha88 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha87 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha86 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha85 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha84 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha83 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha82 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
plaid-14.12.1 vendor/bundle/ruby/3.0.0/gems/ast-2.4.1/lib/ast/sexp.rb
ory-client-0.0.1.alpha81 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha80 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha79 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha78 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha77 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha76 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha75 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha74 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha73 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb
ory-client-0.0.1.alpha72 vendor/bundle/ruby/2.5.0/gems/ast-2.4.2/lib/ast/sexp.rb