File: lexical/token/separator.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Lexical#8
  module: Token#10
has properties
function: make_newline / 2 #75
function: make_comment / 2 #83
function: make_space / 2 #91
  module: Separator#12
  class: Newline#14
inherits from
  Abstract ( Umu::Lexical::Token::Abstraction )
has properties
alias: opt_val val #15
method: initialize / 2 #18
method: to_s #25
method: separator? #34
  class: Comment#41
inherits from
  String ( Umu::Lexical::Token::Abstraction )
has properties
method: to_s #42
method: separator? #47
  class: Space#54
inherits from
  String ( Umu::Lexical::Token::Abstraction )
has properties
method: to_s #55
method: separator? #64

Code

   1  # coding: utf-8
   2  # frozen_string_literal: true
   3 
   4 
   5 
   6  module Umu
   7 
   8  module Lexical
   9 
  10  module Token
  11 
  12  module Separator
  13 
  14  class Newline < Abstraction::Abstract
  15      alias opt_val val
  16 
  17 
  18      def initialize(loc, opt_val)
  19          ASSERT.opt_kind_of opt_val, ::String
  20 
  21          super
  22      end
  23 
  24 
  25      def to_s
  26          if self.opt_val
  27              format "NL(%s)", self.val.inspect
  28          else
  29              "NL"
  30          end
  31      end
  32 
  33 
  34      def separator?
  35          true
  36      end
  37  end
  38 
  39 
  40 
  41  class Comment < Abstraction::String
  42      def to_s
  43          format "COMMENT(%s)", self.val.inspect
  44      end
  45 
  46 
  47      def separator?
  48          true
  49      end
  50  end
  51 
  52 
  53 
  54  class Space < Abstraction::String
  55      def to_s
  56          if self.val == " "
  57              'SP'
  58          else
  59              format "SP(%s)", self.val.inspect
  60          end
  61      end
  62 
  63 
  64      def separator?
  65          true
  66      end
  67  end
  68 
  69  end # Umu::Lexical::Token::Separator
  70 
  71 
  72 
  73  module_function
  74 
  75      def make_newline(loc, opt_val)
  76          ASSERT.kind_of      loc,        LOC::Entry
  77          ASSERT.opt_kind_of  opt_val,    ::String
  78 
  79          Separator::Newline.new(loc, opt_val.freeze).freeze
  80      end
  81 
  82 
  83      def make_comment(loc, val)
  84          ASSERT.kind_of loc, LOC::Entry
  85          ASSERT.kind_of val, ::String
  86 
  87          Separator::Comment.new(loc, val.freeze).freeze
  88      end
  89 
  90 
  91      def make_space(loc, val)
  92          ASSERT.kind_of loc, LOC::Entry
  93          ASSERT.kind_of val, ::String
  94 
  95          Separator::Space.new(loc, val.freeze).freeze
  96      end
  97 
  98  end # Umu::Lexical::Token
  99 
 100  end # Umu::Lexical
 101 
 102  end # Umu