Class: Code::Parser::Number

Inherits:
Language show all
Defined in:
lib/code/parser/number.rb

Instance Method Summary collapse

Methods inherited from Language

<<, >>, absent, aka, #any, ignore, #inspect, maybe, parse, #parse, repeat, #str, then, #to_s, |

Instance Method Details

#aObject



52
53
54
# File 'lib/code/parser/number.rb', line 52

def a
  str("a") | str("A")
end

#bObject



56
57
58
# File 'lib/code/parser/number.rb', line 56

def b
  str("b") | str("B")
end

#base_10_digitObject



93
94
95
# File 'lib/code/parser/number.rb', line 93

def base_10_digit
  zero | one | two | three | four | five | six | seven | eight | nine
end

#base_10_numberObject



133
134
135
# File 'lib/code/parser/number.rb', line 133

def base_10_number
  base_10_whole.aka(:whole) << exponent.maybe
end

#base_10_wholeObject



109
110
111
# File 'lib/code/parser/number.rb', line 109

def base_10_whole
  base_10_digit << (underscore.ignore | base_10_digit).repeat
end

#base_16_digitObject



88
89
90
91
# File 'lib/code/parser/number.rb', line 88

def base_16_digit
  zero | one | two | three | four | five | six | seven | eight | nine |
    a | b | c | d | e | f
end

#base_16_numberObject



129
130
131
# File 'lib/code/parser/number.rb', line 129

def base_16_number
  zero.ignore << x.ignore << base_16_whole
end

#base_16_wholeObject



105
106
107
# File 'lib/code/parser/number.rb', line 105

def base_16_whole
  base_16_digit << (underscore.ignore | base_16_digit).repeat
end

#base_2_digitObject



101
102
103
# File 'lib/code/parser/number.rb', line 101

def base_2_digit
  zero | one
end

#base_2_numberObject



141
142
143
# File 'lib/code/parser/number.rb', line 141

def base_2_number
  zero.ignore << b.ignore << base_2_whole
end

#base_2_wholeObject



117
118
119
# File 'lib/code/parser/number.rb', line 117

def base_2_whole
  base_2_digit << (underscore.ignore | base_2_digit).repeat
end

#base_8_digitObject



97
98
99
# File 'lib/code/parser/number.rb', line 97

def base_8_digit
  zero | one | two | three | four | five | six | seven
end

#base_8_numberObject



137
138
139
# File 'lib/code/parser/number.rb', line 137

def base_8_number
  zero.ignore << o.ignore << base_8_whole
end

#base_8_wholeObject



113
114
115
# File 'lib/code/parser/number.rb', line 113

def base_8_whole
  base_8_digit << (underscore.ignore | base_8_digit).repeat
end

#cObject



60
61
62
# File 'lib/code/parser/number.rb', line 60

def c
  str("c") | str("C")
end

#dObject



64
65
66
# File 'lib/code/parser/number.rb', line 64

def d
  str("d") | str("D")
end

#decimalObject



125
126
127
# File 'lib/code/parser/number.rb', line 125

def decimal
  (base_10_whole << dot << base_10_whole).aka(:decimal) << exponent.maybe
end

#dotObject



48
49
50
# File 'lib/code/parser/number.rb', line 48

def dot
  str(".")
end

#eObject



68
69
70
# File 'lib/code/parser/number.rb', line 68

def e
  str("e") | str("E")
end

#eightObject



40
41
42
# File 'lib/code/parser/number.rb', line 40

def eight
  str("8")
end

#exponentObject



121
122
123
# File 'lib/code/parser/number.rb', line 121

def exponent
  (e << number).aka(:exponent)
end

#fObject



72
73
74
# File 'lib/code/parser/number.rb', line 72

def f
  str("f") | str("F")
end

#fiveObject



28
29
30
# File 'lib/code/parser/number.rb', line 28

def five
  str("5")
end

#fourObject



24
25
26
# File 'lib/code/parser/number.rb', line 24

def four
  str("4")
end

#nineObject



44
45
46
# File 'lib/code/parser/number.rb', line 44

def nine
  str("9")
end

#numberObject



4
5
6
# File 'lib/code/parser/number.rb', line 4

def number
  ::Code::Parser::Number
end

#oObject



76
77
78
# File 'lib/code/parser/number.rb', line 76

def o
  str("o") | str("O")
end

#oneObject



12
13
14
# File 'lib/code/parser/number.rb', line 12

def one
  str("1")
end

#rootObject



145
146
147
148
149
150
151
# File 'lib/code/parser/number.rb', line 145

def root
  (
    decimal.aka(:decimal) | base_16_number.aka(:base_16) |
      base_8_number.aka(:base_8) | base_2_number.aka(:base_2) |
      base_10_number.aka(:base_10)
  ).aka(:number) | ::Code::Parser::Boolean
end

#sevenObject



36
37
38
# File 'lib/code/parser/number.rb', line 36

def seven
  str("7")
end

#sixObject



32
33
34
# File 'lib/code/parser/number.rb', line 32

def six
  str("6")
end

#threeObject



20
21
22
# File 'lib/code/parser/number.rb', line 20

def three
  str("3")
end

#twoObject



16
17
18
# File 'lib/code/parser/number.rb', line 16

def two
  str("2")
end

#underscoreObject



84
85
86
# File 'lib/code/parser/number.rb', line 84

def underscore
  str("_")
end

#xObject



80
81
82
# File 'lib/code/parser/number.rb', line 80

def x
  str("x") | str("X")
end

#zeroObject



8
9
10
# File 'lib/code/parser/number.rb', line 8

def zero
  str("0")
end