template-ruby 0.5.6 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -4
- data/Gemfile.lock +15 -22
- data/lib/template/version.rb +1 -1
- data/lib/template-ruby.rb +2 -3
- data/lib/template.rb +18 -22
- data/spec/spec_helper.rb +0 -5
- data/spec/template_spec.rb +13 -0
- data/template-ruby.gemspec +2 -1
- metadata +34 -222
- data/.cherry.js +0 -21
- data/.editorconfig +0 -9
- data/.github/workflows/rspec.yml +0 -14
- data/.gitignore +0 -2
- data/.prettierrc +0 -3
- data/.tool-versions +0 -1
- data/CHANGELOG.md +0 -55
- data/LICENSE +0 -7
- data/README.md +0 -103
- data/TODO +0 -17
- data/bin/code +0 -76
- data/bin/format +0 -3
- data/bin/publish +0 -19
- data/bin/template +0 -85
- data/bin/test +0 -17
- data/code-ruby.gemspec +0 -17
- data/docs/class.code +0 -9
- data/docs/euler/1.template +0 -10
- data/docs/euler/2.template +0 -16
- data/docs/euler/3.template +0 -16
- data/docs/euler/4.template +0 -10
- data/docs/euler/5.template +0 -13
- data/docs/fibonnaci.template +0 -14
- data/docs/meetup.code +0 -12
- data/docs/precedence.template +0 -36
- data/docs/rain.code +0 -22
- data/docs/slack.code +0 -17
- data/docs/stripe.code +0 -7
- data/docs/twitter.code +0 -9
- data/language-ruby.gemspec +0 -17
- data/lib/code/error.rb +0 -18
- data/lib/code/node/base_10.rb +0 -29
- data/lib/code/node/base_16.rb +0 -13
- data/lib/code/node/base_2.rb +0 -13
- data/lib/code/node/base_8.rb +0 -13
- data/lib/code/node/boolean.rb +0 -22
- data/lib/code/node/call.rb +0 -47
- data/lib/code/node/call_argument.rb +0 -21
- data/lib/code/node/chained_call.rb +0 -23
- data/lib/code/node/code.rb +0 -20
- data/lib/code/node/decimal.rb +0 -26
- data/lib/code/node/dictionnary.rb +0 -33
- data/lib/code/node/equal.rb +0 -34
- data/lib/code/node/function.rb +0 -20
- data/lib/code/node/function_parameter.rb +0 -31
- data/lib/code/node/if.rb +0 -59
- data/lib/code/node/if_modifier.rb +0 -47
- data/lib/code/node/list.rb +0 -16
- data/lib/code/node/negation.rb +0 -15
- data/lib/code/node/not.rb +0 -15
- data/lib/code/node/nothing.rb +0 -12
- data/lib/code/node/number.rb +0 -25
- data/lib/code/node/operation.rb +0 -38
- data/lib/code/node/power.rb +0 -20
- data/lib/code/node/rescue.rb +0 -17
- data/lib/code/node/splat.rb +0 -15
- data/lib/code/node/statement.rb +0 -59
- data/lib/code/node/string.rb +0 -53
- data/lib/code/node/ternary.rb +0 -24
- data/lib/code/node/unary_minus.rb +0 -15
- data/lib/code/node/while.rb +0 -35
- data/lib/code/node.rb +0 -13
- data/lib/code/object/argument.rb +0 -32
- data/lib/code/object/boolean.rb +0 -27
- data/lib/code/object/decimal.rb +0 -162
- data/lib/code/object/dictionnary.rb +0 -96
- data/lib/code/object/function.rb +0 -64
- data/lib/code/object/global.rb +0 -42
- data/lib/code/object/integer.rb +0 -221
- data/lib/code/object/list.rb +0 -207
- data/lib/code/object/nothing.rb +0 -23
- data/lib/code/object/number.rb +0 -6
- data/lib/code/object/range.rb +0 -146
- data/lib/code/object/ruby_function.rb +0 -31
- data/lib/code/object/string.rb +0 -102
- data/lib/code/object.rb +0 -197
- data/lib/code/parser/addition.rb +0 -21
- data/lib/code/parser/and_operator.rb +0 -17
- data/lib/code/parser/bitwise_and.rb +0 -17
- data/lib/code/parser/bitwise_or.rb +0 -21
- data/lib/code/parser/boolean.rb +0 -17
- data/lib/code/parser/call.rb +0 -122
- data/lib/code/parser/chained_call.rb +0 -47
- data/lib/code/parser/class.rb +0 -45
- data/lib/code/parser/code.rb +0 -25
- data/lib/code/parser/dictionnary.rb +0 -67
- data/lib/code/parser/equal.rb +0 -94
- data/lib/code/parser/equality.rb +0 -35
- data/lib/code/parser/equality_lower.rb +0 -9
- data/lib/code/parser/function.rb +0 -85
- data/lib/code/parser/greater.rb +0 -25
- data/lib/code/parser/group.rb +0 -22
- data/lib/code/parser/if.rb +0 -63
- data/lib/code/parser/if_modifier.rb +0 -55
- data/lib/code/parser/list.rb +0 -42
- data/lib/code/parser/multiplication.rb +0 -25
- data/lib/code/parser/name.rb +0 -107
- data/lib/code/parser/negation.rb +0 -30
- data/lib/code/parser/not_keyword.rb +0 -23
- data/lib/code/parser/nothing.rb +0 -22
- data/lib/code/parser/number.rb +0 -154
- data/lib/code/parser/operation.rb +0 -35
- data/lib/code/parser/or_keyword.rb +0 -21
- data/lib/code/parser/or_operator.rb +0 -17
- data/lib/code/parser/power.rb +0 -43
- data/lib/code/parser/range.rb +0 -17
- data/lib/code/parser/rescue.rb +0 -39
- data/lib/code/parser/shift.rb +0 -21
- data/lib/code/parser/splat.rb +0 -31
- data/lib/code/parser/statement.rb +0 -9
- data/lib/code/parser/string.rb +0 -78
- data/lib/code/parser/ternary.rb +0 -46
- data/lib/code/parser/unary_minus.rb +0 -31
- data/lib/code/parser/while.rb +0 -36
- data/lib/code/parser/whitespace.rb +0 -49
- data/lib/code/parser.rb +0 -19
- data/lib/code/ruby.rb +0 -174
- data/lib/code-ruby.rb +0 -10
- data/lib/code.rb +0 -47
- data/lib/language/atom.rb +0 -342
- data/lib/language/output.rb +0 -130
- data/lib/language/parser/absent/present.rb +0 -8
- data/lib/language/parser/absent.rb +0 -6
- data/lib/language/parser/end_of_input.rb +0 -6
- data/lib/language/parser/interuption.rb +0 -38
- data/lib/language/parser/not_end_of_input.rb +0 -6
- data/lib/language/parser/str/not_found.rb +0 -16
- data/lib/language/parser/str.rb +0 -6
- data/lib/language/parser.rb +0 -53
- data/lib/language-ruby.rb +0 -10
- data/lib/language.rb +0 -80
- data/spec/code/addition_spec.rb +0 -13
- data/spec/code/and_operator_spec.rb +0 -13
- data/spec/code/bitwise_and_spec.rb +0 -13
- data/spec/code/bitwise_or_spec.rb +0 -13
- data/spec/code/boolean_spec.rb +0 -13
- data/spec/code/call_spec.rb +0 -21
- data/spec/code/chained_call_spec.rb +0 -16
- data/spec/code/code_spec.rb +0 -29
- data/spec/code/dictionnary_spec.rb +0 -17
- data/spec/code/equal_spec.rb +0 -26
- data/spec/code/equality_spec.rb +0 -13
- data/spec/code/function_spec.rb +0 -18
- data/spec/code/greater_spec.rb +0 -18
- data/spec/code/group_spec.rb +0 -12
- data/spec/code/if_modifier_spec.rb +0 -20
- data/spec/code/if_spec.rb +0 -25
- data/spec/code/list_spec.rb +0 -19
- data/spec/code/multiplication_spec.rb +0 -18
- data/spec/code/negation_spec.rb +0 -20
- data/spec/code/not_keyword_spec.rb +0 -13
- data/spec/code/nothing_spec.rb +0 -17
- data/spec/code/number_spec.rb +0 -22
- data/spec/code/or_keyword_spec.rb +0 -17
- data/spec/code/or_operator_spec.rb +0 -16
- data/spec/code/parser/boolean_spec.rb +0 -16
- data/spec/code/parser/call_spec.rb +0 -26
- data/spec/code/parser/chained_call.rb +0 -17
- data/spec/code/parser/dictionnary_spec.rb +0 -18
- data/spec/code/parser/function_spec.rb +0 -16
- data/spec/code/parser/group_spec.rb +0 -18
- data/spec/code/parser/list_spec.rb +0 -18
- data/spec/code/parser/number_spec.rb +0 -12
- data/spec/code/parser/string_spec.rb +0 -21
- data/spec/code/parser_spec.rb +0 -23
- data/spec/code/power_spec.rb +0 -13
- data/spec/code/range_spec.rb +0 -16
- data/spec/code/rescue_spec.rb +0 -13
- data/spec/code/shift_spec.rb +0 -13
- data/spec/code/splat_spec.rb +0 -13
- data/spec/code/string_spec.rb +0 -27
- data/spec/code/ternary_spec.rb +0 -18
- data/spec/code/unary_minus_spec.rb +0 -13
- data/spec/code/while_spec.rb +0 -18
data/lib/code/parser/number.rb
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Number < Language
|
4
|
-
def number
|
5
|
-
::Code::Parser::Number
|
6
|
-
end
|
7
|
-
|
8
|
-
def zero
|
9
|
-
str("0")
|
10
|
-
end
|
11
|
-
|
12
|
-
def one
|
13
|
-
str("1")
|
14
|
-
end
|
15
|
-
|
16
|
-
def two
|
17
|
-
str("2")
|
18
|
-
end
|
19
|
-
|
20
|
-
def three
|
21
|
-
str("3")
|
22
|
-
end
|
23
|
-
|
24
|
-
def four
|
25
|
-
str("4")
|
26
|
-
end
|
27
|
-
|
28
|
-
def five
|
29
|
-
str("5")
|
30
|
-
end
|
31
|
-
|
32
|
-
def six
|
33
|
-
str("6")
|
34
|
-
end
|
35
|
-
|
36
|
-
def seven
|
37
|
-
str("7")
|
38
|
-
end
|
39
|
-
|
40
|
-
def eight
|
41
|
-
str("8")
|
42
|
-
end
|
43
|
-
|
44
|
-
def nine
|
45
|
-
str("9")
|
46
|
-
end
|
47
|
-
|
48
|
-
def dot
|
49
|
-
str(".")
|
50
|
-
end
|
51
|
-
|
52
|
-
def a
|
53
|
-
str("a") | str("A")
|
54
|
-
end
|
55
|
-
|
56
|
-
def b
|
57
|
-
str("b") | str("B")
|
58
|
-
end
|
59
|
-
|
60
|
-
def c
|
61
|
-
str("c") | str("C")
|
62
|
-
end
|
63
|
-
|
64
|
-
def d
|
65
|
-
str("d") | str("D")
|
66
|
-
end
|
67
|
-
|
68
|
-
def e
|
69
|
-
str("e") | str("E")
|
70
|
-
end
|
71
|
-
|
72
|
-
def f
|
73
|
-
str("f") | str("F")
|
74
|
-
end
|
75
|
-
|
76
|
-
def o
|
77
|
-
str("o") | str("O")
|
78
|
-
end
|
79
|
-
|
80
|
-
def x
|
81
|
-
str("x") | str("X")
|
82
|
-
end
|
83
|
-
|
84
|
-
def underscore
|
85
|
-
str("_")
|
86
|
-
end
|
87
|
-
|
88
|
-
def base_16_digit
|
89
|
-
zero | one | two | three | four | five | six | seven | eight | nine |
|
90
|
-
a | b | c | d | e | f
|
91
|
-
end
|
92
|
-
|
93
|
-
def base_10_digit
|
94
|
-
zero | one | two | three | four | five | six | seven | eight | nine
|
95
|
-
end
|
96
|
-
|
97
|
-
def base_8_digit
|
98
|
-
zero | one | two | three | four | five | six | seven
|
99
|
-
end
|
100
|
-
|
101
|
-
def base_2_digit
|
102
|
-
zero | one
|
103
|
-
end
|
104
|
-
|
105
|
-
def base_16_whole
|
106
|
-
base_16_digit << (underscore.ignore | base_16_digit).repeat
|
107
|
-
end
|
108
|
-
|
109
|
-
def base_10_whole
|
110
|
-
base_10_digit << (underscore.ignore | base_10_digit).repeat
|
111
|
-
end
|
112
|
-
|
113
|
-
def base_8_whole
|
114
|
-
base_8_digit << (underscore.ignore | base_8_digit).repeat
|
115
|
-
end
|
116
|
-
|
117
|
-
def base_2_whole
|
118
|
-
base_2_digit << (underscore.ignore | base_2_digit).repeat
|
119
|
-
end
|
120
|
-
|
121
|
-
def exponent
|
122
|
-
(e << number).aka(:exponent)
|
123
|
-
end
|
124
|
-
|
125
|
-
def decimal
|
126
|
-
(base_10_whole << dot << base_10_whole).aka(:decimal) << exponent.maybe
|
127
|
-
end
|
128
|
-
|
129
|
-
def base_16_number
|
130
|
-
zero.ignore << x.ignore << base_16_whole
|
131
|
-
end
|
132
|
-
|
133
|
-
def base_10_number
|
134
|
-
base_10_whole.aka(:whole) << exponent.maybe
|
135
|
-
end
|
136
|
-
|
137
|
-
def base_8_number
|
138
|
-
zero.ignore << o.ignore << base_8_whole
|
139
|
-
end
|
140
|
-
|
141
|
-
def base_2_number
|
142
|
-
zero.ignore << b.ignore << base_2_whole
|
143
|
-
end
|
144
|
-
|
145
|
-
def root
|
146
|
-
(
|
147
|
-
decimal.aka(:decimal) | base_16_number.aka(:base_16) |
|
148
|
-
base_8_number.aka(:base_8) | base_2_number.aka(:base_2) |
|
149
|
-
base_10_number.aka(:base_10)
|
150
|
-
).aka(:number) | ::Code::Parser::Boolean
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Operation < Language
|
4
|
-
def statement
|
5
|
-
raise NotImplementedError
|
6
|
-
end
|
7
|
-
|
8
|
-
def whitespace
|
9
|
-
::Code::Parser::Whitespace
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace?
|
13
|
-
whitespace.maybe
|
14
|
-
end
|
15
|
-
|
16
|
-
def operator
|
17
|
-
raise NotImplementedError
|
18
|
-
end
|
19
|
-
|
20
|
-
def root
|
21
|
-
(
|
22
|
-
statement.aka(:first) <<
|
23
|
-
(
|
24
|
-
whitespace? << operator.aka(:operator) << whitespace? <<
|
25
|
-
statement.aka(:statement)
|
26
|
-
).repeat(1).aka(:others).maybe
|
27
|
-
)
|
28
|
-
.aka(:operation)
|
29
|
-
.then do |output|
|
30
|
-
output[:operation][:others] ? output : output[:operation][:first]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class OrKeyword < Operation
|
4
|
-
def statement
|
5
|
-
::Code::Parser::NotKeyword
|
6
|
-
end
|
7
|
-
|
8
|
-
def or_keyword
|
9
|
-
str("or")
|
10
|
-
end
|
11
|
-
|
12
|
-
def and_keyword
|
13
|
-
str("and")
|
14
|
-
end
|
15
|
-
|
16
|
-
def operator
|
17
|
-
or_keyword | and_keyword
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/code/parser/power.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Power < Language
|
4
|
-
def power
|
5
|
-
::Code::Parser::Power
|
6
|
-
end
|
7
|
-
|
8
|
-
def statement
|
9
|
-
::Code::Parser::Negation
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace
|
14
|
-
end
|
15
|
-
|
16
|
-
def whitespace?
|
17
|
-
whitespace.maybe
|
18
|
-
end
|
19
|
-
|
20
|
-
def asterisk
|
21
|
-
str("*")
|
22
|
-
end
|
23
|
-
|
24
|
-
def operator
|
25
|
-
asterisk << asterisk
|
26
|
-
end
|
27
|
-
|
28
|
-
def root
|
29
|
-
(
|
30
|
-
statement.aka(:left) <<
|
31
|
-
(
|
32
|
-
whitespace? << operator.aka(:operator) << whitespace? <<
|
33
|
-
power.aka(:right)
|
34
|
-
).maybe
|
35
|
-
)
|
36
|
-
.aka(:power)
|
37
|
-
.then do |output|
|
38
|
-
output[:power][:right] ? output : output[:power][:left]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/lib/code/parser/range.rb
DELETED
data/lib/code/parser/rescue.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Rescue < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::Ternary
|
6
|
-
end
|
7
|
-
|
8
|
-
def rescue_class
|
9
|
-
::Code::Parser::Rescue
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace
|
14
|
-
end
|
15
|
-
|
16
|
-
def whitespace?
|
17
|
-
whitespace.maybe
|
18
|
-
end
|
19
|
-
|
20
|
-
def rescue_keyword
|
21
|
-
str("rescue")
|
22
|
-
end
|
23
|
-
|
24
|
-
def root
|
25
|
-
(
|
26
|
-
statement.aka(:left) <<
|
27
|
-
(
|
28
|
-
whitespace? << rescue_keyword << whitespace? <<
|
29
|
-
rescue_class.aka(:right)
|
30
|
-
).maybe
|
31
|
-
)
|
32
|
-
.aka(:rescue)
|
33
|
-
.then do |output|
|
34
|
-
output[:rescue][:right] ? output : output[:rescue][:left]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/code/parser/shift.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Shift < Operation
|
4
|
-
def statement
|
5
|
-
::Code::Parser::Addition
|
6
|
-
end
|
7
|
-
|
8
|
-
def greater
|
9
|
-
str(">")
|
10
|
-
end
|
11
|
-
|
12
|
-
def lesser
|
13
|
-
str("<")
|
14
|
-
end
|
15
|
-
|
16
|
-
def operator
|
17
|
-
(greater << greater) | (lesser << lesser)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/code/parser/splat.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Splat < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::Class
|
6
|
-
end
|
7
|
-
|
8
|
-
def splat
|
9
|
-
::Code::Parser::Splat
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace
|
14
|
-
end
|
15
|
-
|
16
|
-
def whitespace?
|
17
|
-
whitespace.maybe
|
18
|
-
end
|
19
|
-
|
20
|
-
def ampersand
|
21
|
-
str("&")
|
22
|
-
end
|
23
|
-
|
24
|
-
def root
|
25
|
-
(ampersand.aka(:operator) << whitespace? << splat.aka(:right)).aka(
|
26
|
-
:splat
|
27
|
-
) | statement
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/code/parser/string.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class String < Language
|
4
|
-
def code
|
5
|
-
::Code::Parser::Code
|
6
|
-
end
|
7
|
-
|
8
|
-
def name
|
9
|
-
::Code::Parser::Name
|
10
|
-
end
|
11
|
-
|
12
|
-
def single_quote
|
13
|
-
str("'")
|
14
|
-
end
|
15
|
-
|
16
|
-
def double_quote
|
17
|
-
str('"')
|
18
|
-
end
|
19
|
-
|
20
|
-
def backslash
|
21
|
-
str("\\")
|
22
|
-
end
|
23
|
-
|
24
|
-
def opening_curly_bracket
|
25
|
-
str("{")
|
26
|
-
end
|
27
|
-
|
28
|
-
def closing_curly_bracket
|
29
|
-
str("}")
|
30
|
-
end
|
31
|
-
|
32
|
-
def colon
|
33
|
-
str(":")
|
34
|
-
end
|
35
|
-
|
36
|
-
def code_part
|
37
|
-
opening_curly_bracket << code << closing_curly_bracket.maybe
|
38
|
-
end
|
39
|
-
|
40
|
-
def single_quoted_text_part
|
41
|
-
(
|
42
|
-
backslash.ignore << opening_curly_bracket |
|
43
|
-
backslash.ignore << single_quote |
|
44
|
-
single_quote.absent << opening_curly_bracket.absent << any
|
45
|
-
).repeat(1)
|
46
|
-
end
|
47
|
-
|
48
|
-
def double_quoted_text_part
|
49
|
-
(
|
50
|
-
backslash.ignore << opening_curly_bracket |
|
51
|
-
backslash.ignore << double_quote |
|
52
|
-
double_quote.absent << opening_curly_bracket.absent << any
|
53
|
-
).repeat(1)
|
54
|
-
end
|
55
|
-
|
56
|
-
def single_quoted_string
|
57
|
-
single_quote.ignore <<
|
58
|
-
(code_part.aka(:code) | single_quoted_text_part.aka(:text)).repeat <<
|
59
|
-
single_quote.ignore.maybe
|
60
|
-
end
|
61
|
-
|
62
|
-
def double_quoted_string
|
63
|
-
double_quote.ignore <<
|
64
|
-
(code_part.aka(:code) | double_quoted_text_part.aka(:text)).repeat <<
|
65
|
-
double_quote.ignore.maybe
|
66
|
-
end
|
67
|
-
|
68
|
-
def symbol
|
69
|
-
(colon.ignore << name).aka(:text).repeat(1, 1)
|
70
|
-
end
|
71
|
-
|
72
|
-
def root
|
73
|
-
(single_quoted_string | double_quoted_string | symbol).aka(:string) |
|
74
|
-
::Code::Parser::Number
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/lib/code/parser/ternary.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Ternary < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::Range
|
6
|
-
end
|
7
|
-
|
8
|
-
def ternary
|
9
|
-
::Code::Parser::Ternary
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace
|
14
|
-
end
|
15
|
-
|
16
|
-
def whitespace?
|
17
|
-
whitespace.maybe
|
18
|
-
end
|
19
|
-
|
20
|
-
def question_mark
|
21
|
-
str("?")
|
22
|
-
end
|
23
|
-
|
24
|
-
def colon
|
25
|
-
str(":")
|
26
|
-
end
|
27
|
-
|
28
|
-
def root
|
29
|
-
(
|
30
|
-
statement.aka(:left) <<
|
31
|
-
(
|
32
|
-
whitespace? << question_mark << whitespace? <<
|
33
|
-
ternary.aka(:middle) <<
|
34
|
-
(
|
35
|
-
whitespace? << colon << whitespace? << ternary.aka(:right)
|
36
|
-
).maybe
|
37
|
-
).maybe
|
38
|
-
)
|
39
|
-
.aka(:ternary)
|
40
|
-
.then do |output|
|
41
|
-
output[:ternary][:middle] ? output : output[:ternary][:left]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class UnaryMinus < Language
|
4
|
-
def unary_minus
|
5
|
-
::Code::Parser::UnaryMinus
|
6
|
-
end
|
7
|
-
|
8
|
-
def whitespace
|
9
|
-
::Code::Parser::Whitespace
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace?
|
13
|
-
whitespace.maybe
|
14
|
-
end
|
15
|
-
|
16
|
-
def minus
|
17
|
-
str("-")
|
18
|
-
end
|
19
|
-
|
20
|
-
def operator
|
21
|
-
minus
|
22
|
-
end
|
23
|
-
|
24
|
-
def root
|
25
|
-
(operator.aka(:operator) << whitespace? << unary_minus.aka(:right)).aka(
|
26
|
-
:unary_minus
|
27
|
-
) | ::Code::Parser::Power
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/code/parser/while.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class While < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::If
|
6
|
-
end
|
7
|
-
|
8
|
-
def whitespace
|
9
|
-
::Code::Parser::Whitespace
|
10
|
-
end
|
11
|
-
|
12
|
-
def code
|
13
|
-
::Code::Parser::Code
|
14
|
-
end
|
15
|
-
|
16
|
-
def while_keyword
|
17
|
-
str("while")
|
18
|
-
end
|
19
|
-
|
20
|
-
def until_keyword
|
21
|
-
str("until")
|
22
|
-
end
|
23
|
-
|
24
|
-
def end_keyword
|
25
|
-
str("end")
|
26
|
-
end
|
27
|
-
|
28
|
-
def root
|
29
|
-
(
|
30
|
-
(while_keyword | until_keyword).aka(:operator) << whitespace <<
|
31
|
-
statement.aka(:statement) << code.aka(:body) << end_keyword.maybe
|
32
|
-
).aka(:while) | statement
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Whitespace < Language
|
4
|
-
def space
|
5
|
-
str(" ")
|
6
|
-
end
|
7
|
-
|
8
|
-
def newline
|
9
|
-
str("\n")
|
10
|
-
end
|
11
|
-
|
12
|
-
def hashtag
|
13
|
-
str("#")
|
14
|
-
end
|
15
|
-
|
16
|
-
def slash
|
17
|
-
str("/")
|
18
|
-
end
|
19
|
-
|
20
|
-
def asterisk
|
21
|
-
str("*")
|
22
|
-
end
|
23
|
-
|
24
|
-
def hash_comment
|
25
|
-
hashtag << (newline.absent << any).repeat << newline.maybe
|
26
|
-
end
|
27
|
-
|
28
|
-
def double_slash_comment
|
29
|
-
slash << slash << (newline.absent << any).repeat << newline.maybe
|
30
|
-
end
|
31
|
-
|
32
|
-
def multi_line_comment
|
33
|
-
slash << asterisk << ((asterisk << slash).absent << any).repeat <<
|
34
|
-
asterisk.maybe << slash.maybe
|
35
|
-
end
|
36
|
-
|
37
|
-
def without_newline
|
38
|
-
(space | multi_line_comment).repeat(1)
|
39
|
-
end
|
40
|
-
|
41
|
-
def root
|
42
|
-
(
|
43
|
-
space | newline | hash_comment | double_slash_comment |
|
44
|
-
multi_line_comment
|
45
|
-
).repeat(1)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
data/lib/code/parser.rb
DELETED