language-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/language-ruby.gemspec +3 -3
- data/lib/language/atom/any.rb +8 -0
- data/lib/language/atom/repeat.rb +15 -0
- data/lib/language/atom.rb +25 -42
- data/lib/language/output.rb +13 -11
- data/lib/language/parser/absent/present.rb +2 -0
- data/lib/language/parser/absent.rb +2 -0
- data/lib/language/parser/end_of_input.rb +2 -0
- data/lib/language/parser/interuption.rb +2 -0
- data/lib/language/parser/not_end_of_input.rb +2 -0
- data/lib/language/parser/str/not_found.rb +2 -0
- data/lib/language/parser/str.rb +2 -0
- data/lib/language/parser.rb +10 -10
- data/lib/language/version.rb +3 -0
- data/lib/language-ruby.rb +0 -5
- data/lib/language.rb +9 -7
- data/spec/spec_helper.rb +1 -6
- metadata +7 -221
- 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/.rspec +0 -1
- data/.tool-versions +0 -1
- data/CHANGELOG.md +0 -55
- data/Gemfile.lock +0 -49
- 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/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/template/node/code_part.rb +0 -13
- data/lib/template/node/part.rb +0 -19
- data/lib/template/node/template.rb +0 -15
- data/lib/template/node/text_part.rb +0 -13
- data/lib/template/node.rb +0 -4
- data/lib/template/parser/template.rb +0 -39
- data/lib/template/parser.rb +0 -19
- data/lib/template/version.rb +0 -3
- data/lib/template-ruby.rb +0 -10
- data/lib/template.rb +0 -50
- 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/template-ruby.gemspec +0 -19
data/lib/code/parser/if.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class If < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::IfModifier
|
6
|
-
end
|
7
|
-
|
8
|
-
def if_class
|
9
|
-
::Code::Parser::If
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace
|
14
|
-
end
|
15
|
-
|
16
|
-
def code
|
17
|
-
::Code::Parser::Code
|
18
|
-
end
|
19
|
-
|
20
|
-
def whitespace?
|
21
|
-
whitespace.maybe
|
22
|
-
end
|
23
|
-
|
24
|
-
def if_keyword
|
25
|
-
str("if")
|
26
|
-
end
|
27
|
-
|
28
|
-
def unless_keyword
|
29
|
-
str("unless")
|
30
|
-
end
|
31
|
-
|
32
|
-
def elsif_keyword
|
33
|
-
str("elsif")
|
34
|
-
end
|
35
|
-
|
36
|
-
def else_keyword
|
37
|
-
str("else")
|
38
|
-
end
|
39
|
-
|
40
|
-
def end_keyword
|
41
|
-
str("end")
|
42
|
-
end
|
43
|
-
|
44
|
-
def root
|
45
|
-
(
|
46
|
-
(if_keyword | unless_keyword).aka(:first_operator) << whitespace <<
|
47
|
-
statement.aka(:first_statement) << code.aka(:first_body) <<
|
48
|
-
(
|
49
|
-
(
|
50
|
-
elsif_keyword.aka(:operator) << whitespace <<
|
51
|
-
statement.aka(:statement) << code.aka(:body)
|
52
|
-
) |
|
53
|
-
(
|
54
|
-
else_keyword << whitespace <<
|
55
|
-
(if_keyword | unless_keyword).aka(:operator) <<
|
56
|
-
whitespace << statement.aka(:statement) << code.aka(:body)
|
57
|
-
) | (else_keyword.aka(:operator) << code.aka(:body))
|
58
|
-
).repeat(1).aka(:elses).maybe << end_keyword.maybe
|
59
|
-
).aka(:if) | statement
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class IfModifier < Language
|
4
|
-
def statement
|
5
|
-
::Code::Parser::OrKeyword
|
6
|
-
end
|
7
|
-
|
8
|
-
def if_modifier
|
9
|
-
::Code::Parser::IfModifier
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace
|
13
|
-
::Code::Parser::Whitespace.new.without_newline
|
14
|
-
end
|
15
|
-
|
16
|
-
def whitespace?
|
17
|
-
whitespace.maybe
|
18
|
-
end
|
19
|
-
|
20
|
-
def if_keyword
|
21
|
-
str("if")
|
22
|
-
end
|
23
|
-
|
24
|
-
def unless_keyword
|
25
|
-
str("unless")
|
26
|
-
end
|
27
|
-
|
28
|
-
def while_keyword
|
29
|
-
str("while")
|
30
|
-
end
|
31
|
-
|
32
|
-
def until_keyword
|
33
|
-
str("until")
|
34
|
-
end
|
35
|
-
|
36
|
-
def operator
|
37
|
-
if_keyword | unless_keyword | while_keyword | until_keyword
|
38
|
-
end
|
39
|
-
|
40
|
-
def root
|
41
|
-
(
|
42
|
-
statement.aka(:left) <<
|
43
|
-
(
|
44
|
-
whitespace? << operator.aka(:operator) << whitespace? <<
|
45
|
-
if_modifier.aka(:right)
|
46
|
-
).maybe
|
47
|
-
)
|
48
|
-
.aka(:if_modifier)
|
49
|
-
.then do |output|
|
50
|
-
output[:if_modifier][:right] ? output : output[:if_modifier][:left]
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
data/lib/code/parser/list.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class List < Language
|
4
|
-
def code
|
5
|
-
::Code::Parser::Code.new.present
|
6
|
-
end
|
7
|
-
|
8
|
-
def whitespace
|
9
|
-
::Code::Parser::Whitespace
|
10
|
-
end
|
11
|
-
|
12
|
-
def whitespace?
|
13
|
-
whitespace.maybe
|
14
|
-
end
|
15
|
-
|
16
|
-
def opening_square_bracket
|
17
|
-
str("[")
|
18
|
-
end
|
19
|
-
|
20
|
-
def closing_square_bracket
|
21
|
-
str("]")
|
22
|
-
end
|
23
|
-
|
24
|
-
def comma
|
25
|
-
str(",")
|
26
|
-
end
|
27
|
-
|
28
|
-
def element
|
29
|
-
code
|
30
|
-
end
|
31
|
-
|
32
|
-
def root
|
33
|
-
(
|
34
|
-
opening_square_bracket.ignore << whitespace? <<
|
35
|
-
element.repeat(0, 1) <<
|
36
|
-
(whitespace? << comma << whitespace? << element).repeat <<
|
37
|
-
(whitespace? << closing_square_bracket.ignore).maybe
|
38
|
-
).aka(:list) | ::Code::Parser::String
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Multiplication < Operation
|
4
|
-
def statement
|
5
|
-
::Code::Parser::UnaryMinus
|
6
|
-
end
|
7
|
-
|
8
|
-
def asterisk
|
9
|
-
str("*")
|
10
|
-
end
|
11
|
-
|
12
|
-
def slash
|
13
|
-
str("/")
|
14
|
-
end
|
15
|
-
|
16
|
-
def percent
|
17
|
-
str("%")
|
18
|
-
end
|
19
|
-
|
20
|
-
def operator
|
21
|
-
asterisk | slash | percent
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/code/parser/name.rb
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Name < Language
|
4
|
-
def space
|
5
|
-
str(" ")
|
6
|
-
end
|
7
|
-
|
8
|
-
def newline
|
9
|
-
str("\n")
|
10
|
-
end
|
11
|
-
|
12
|
-
def comma
|
13
|
-
str(",")
|
14
|
-
end
|
15
|
-
|
16
|
-
def equal
|
17
|
-
str("=")
|
18
|
-
end
|
19
|
-
|
20
|
-
def colon
|
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 opening_square_bracket
|
33
|
-
str("[")
|
34
|
-
end
|
35
|
-
|
36
|
-
def closing_square_bracket
|
37
|
-
str("]")
|
38
|
-
end
|
39
|
-
|
40
|
-
def opening_parenthesis
|
41
|
-
str("(")
|
42
|
-
end
|
43
|
-
|
44
|
-
def closing_parenthesis
|
45
|
-
str(")")
|
46
|
-
end
|
47
|
-
|
48
|
-
def single_quote
|
49
|
-
str("'")
|
50
|
-
end
|
51
|
-
|
52
|
-
def double_quote
|
53
|
-
str('"')
|
54
|
-
end
|
55
|
-
|
56
|
-
def dot
|
57
|
-
str(".")
|
58
|
-
end
|
59
|
-
|
60
|
-
def pipe
|
61
|
-
str("|")
|
62
|
-
end
|
63
|
-
|
64
|
-
def ampersand
|
65
|
-
str("&")
|
66
|
-
end
|
67
|
-
|
68
|
-
def do_keyword
|
69
|
-
str("do")
|
70
|
-
end
|
71
|
-
|
72
|
-
def end_keyword
|
73
|
-
str("end")
|
74
|
-
end
|
75
|
-
|
76
|
-
def elsif_keyword
|
77
|
-
str("elsif")
|
78
|
-
end
|
79
|
-
|
80
|
-
def else_keyword
|
81
|
-
str("else")
|
82
|
-
end
|
83
|
-
|
84
|
-
def special_character
|
85
|
-
ampersand | equal | pipe | dot | colon | comma | space | newline |
|
86
|
-
opening_curly_bracket | closing_curly_bracket | opening_parenthesis |
|
87
|
-
closing_parenthesis | opening_square_bracket |
|
88
|
-
closing_square_bracket | single_quote | double_quote
|
89
|
-
end
|
90
|
-
|
91
|
-
def character
|
92
|
-
special_character.absent << any
|
93
|
-
end
|
94
|
-
|
95
|
-
def separator
|
96
|
-
special_character
|
97
|
-
end
|
98
|
-
|
99
|
-
def root
|
100
|
-
(do_keyword << separator).absent <<
|
101
|
-
(else_keyword << separator).absent <<
|
102
|
-
(elsif_keyword << separator).absent <<
|
103
|
-
(end_keyword << separator).absent << character.repeat(1)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
data/lib/code/parser/negation.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Negation < Language
|
4
|
-
def exclamation_point
|
5
|
-
str("!")
|
6
|
-
end
|
7
|
-
|
8
|
-
def tilde
|
9
|
-
str("~")
|
10
|
-
end
|
11
|
-
|
12
|
-
def plus
|
13
|
-
str("+")
|
14
|
-
end
|
15
|
-
|
16
|
-
def operator
|
17
|
-
exclamation_point | tilde | plus
|
18
|
-
end
|
19
|
-
|
20
|
-
def negation
|
21
|
-
::Code::Parser::Negation
|
22
|
-
end
|
23
|
-
|
24
|
-
def root
|
25
|
-
(operator.aka(:operator) << negation.aka(:right)).aka(:negation) |
|
26
|
-
::Code::Parser::Function
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class NotKeyword < Language
|
4
|
-
def not_class
|
5
|
-
::Code::Parser::NotKeyword
|
6
|
-
end
|
7
|
-
|
8
|
-
def whitespace
|
9
|
-
::Code::Parser::Whitespace
|
10
|
-
end
|
11
|
-
|
12
|
-
def not_keyword
|
13
|
-
str("not")
|
14
|
-
end
|
15
|
-
|
16
|
-
def root
|
17
|
-
(not_keyword.aka(:operator) << whitespace << not_class.aka(:right)).aka(
|
18
|
-
:not
|
19
|
-
) | ::Code::Parser::Equal
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/lib/code/parser/nothing.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
class Code
|
2
|
-
class Parser
|
3
|
-
class Nothing < Language
|
4
|
-
def nothing_keyword
|
5
|
-
str("nothing")
|
6
|
-
end
|
7
|
-
|
8
|
-
def null_keyword
|
9
|
-
str("null")
|
10
|
-
end
|
11
|
-
|
12
|
-
def nil_keyword
|
13
|
-
str("nil")
|
14
|
-
end
|
15
|
-
|
16
|
-
def root
|
17
|
-
(nothing_keyword | null_keyword | nil_keyword).aka(:nothing) |
|
18
|
-
::Code::Parser::Group
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
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
|