Sha256: 16d0d05a4be1f87ce440bcae9dec2ce18a0b4a6b3eeb4e3c0c340af63e318bc5

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

module Soroban

  class Formula < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      value.gsub(/^= */, '')
    end
  end

  class Identifier < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "@#{value}.get"
    end
    def extract(value)
      value.to_sym
    end
  end

  class IntegerValue < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "#{value.to_f}"
    end
  end

  class FloatValue < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "#{value.to_f}"
    end
  end

  class Function < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      match = /^([^(]*)(.*)$/.match(value)
      "func_#{match[1].downcase}#{match[2]}"
    end
  end

  class Pow < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "**"
    end
  end

  class Equal < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "=="
    end
  end

  class NotEqual < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "!="
    end
  end

  class Label < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      value.gsub('$', '')
    end
  end

  class Range < Treetop::Runtime::SyntaxNode
    def rewrite(value)
      "'#{value}'"
    end
    def extract(value)
      LabelWalker.new(value).map { |label| "#{label}".to_sym }
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
soroban-0.5.4 lib/soroban/parser/nodes.rb