File: concrete-syntax/module/pattern/variable.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#5
  module: ConcreteSyntax#7
  module: Module#9
  module: Pattern#11
has properties
function: make_variable / 2 #48
  class: Variable#13
inherits from
  Abstract ( Umu::ConcreteSyntax::Module::Pattern )
has properties
attribute: var_sym [R] #14
method: initialize / 2 #17
method: to_s #26
method: exported_vars #31
method: __desugar_value__ / 3 #38

Class Hierarchy

Code

   1  # coding: utf-8
   2  # frozen_string_literal: true
   3 
   4 
   5  module Umu
   6 
   7  module ConcreteSyntax
   8 
   9  module Module
  10 
  11  module Pattern
  12 
  13  class Variable < Abstract
  14      attr_reader :var_sym
  15 
  16 
  17      def initialize(loc, var_sym)
  18          ASSERT.kind_of var_sym, ::Symbol
  19 
  20          super(loc)
  21 
  22          @var_sym = var_sym
  23      end
  24 
  25 
  26      def to_s
  27          self.var_sym.to_s
  28      end
  29 
  30 
  31      def exported_vars
  32          [CSCP.make_variable(self.loc, self.var_sym)].freeze
  33      end
  34 
  35 
  36  private
  37 
  38      def __desugar_value__(expr, _env, _event)
  39          ASSERT.kind_of expr, ASCE::Abstract
  40 
  41          ASCD.make_value self.loc, self.var_sym, expr
  42      end
  43  end
  44 
  45 
  46  module_function
  47 
  48      def make_variable(loc, var_sym)
  49          ASSERT.kind_of loc,     LOC::Entry
  50          ASSERT.kind_of var_sym, ::Symbol
  51 
  52          Variable.new(loc, var_sym).freeze
  53      end
  54 
  55  end # Umu::ConcreteSyntax::Module::Pattern
  56 
  57  end # Umu::ConcreteSyntax::Module
  58 
  59  end # Umu::ConcreteSyntax
  60 
  61  end # Umu