File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -59,6 +59,10 @@ def do_keyword
5959 str ( "do" )
6060 end
6161
62+ def begin_keyword
63+ str ( "do" )
64+ end
65+
6266 def end_keyword
6367 str ( "end" )
6468 end
@@ -107,8 +111,9 @@ def parameters
107111
108112 def block
109113 (
110- do_keyword << whitespace? << parameters . aka ( :parameters ) . maybe <<
111- code . aka ( :body ) << end_keyword . maybe
114+ ( do_keyword | begin_keyword ) << whitespace? <<
115+ parameters . aka ( :parameters ) . maybe << code . aka ( :body ) <<
116+ end_keyword . maybe
112117 ) |
113118 (
114119 opening_curly_bracket << whitespace? <<
Original file line number Diff line number Diff line change @@ -7,41 +7,8 @@ def statement
77 While
88 end
99
10- def name
11- Name
12- end
13-
14- def code
15- Code
16- end
17-
18- def whitespace
19- Whitespace
20- end
21-
22- def whitespace?
23- whitespace . maybe
24- end
25-
26- def class_keyword
27- str ( "class" )
28- end
29-
30- def end_keyword
31- str ( "end" )
32- end
33-
34- def lesser
35- str ( "<" )
36- end
37-
3810 def root
39- (
40- class_keyword << whitespace? << name . aka ( :name ) <<
41- (
42- whitespace? << lesser << whitespace? << name . aka ( :superclass )
43- ) . maybe << code . aka ( :body ) << end_keyword . maybe
44- ) . aka ( :class ) | statement
11+ statement
4512 end
4613 end
4714 end
Original file line number Diff line number Diff line change @@ -23,6 +23,18 @@ def whitespace?
2323 whitespace . maybe
2424 end
2525
26+ def do_keyword
27+ str ( "do" )
28+ end
29+
30+ def begin_keyword
31+ str ( "begin" )
32+ end
33+
34+ def end_keyword
35+ str ( "end" )
36+ end
37+
2638 def opening_parenthesis
2739 str ( "(" )
2840 end
@@ -88,11 +100,15 @@ def parameters
88100 ( whitespace? << closing_parenthesis . ignore ) . maybe
89101 end
90102
103+ def body
104+ ( ( begin_keyword | do_keyword ) << code << end_keyword . maybe ) |
105+ ( opening_curly_bracket << code << closing_curly_bracket . maybe ) | code
106+ end
107+
91108 def root
92109 (
93110 parameters . aka ( :parameters ) << whitespace? << equal << greater <<
94- whitespace? << opening_curly_bracket << code . aka ( :body ) <<
95- closing_curly_bracket . maybe
111+ whitespace? << body . aka ( :body )
96112 ) . aka ( :function ) | Dictionary
97113 end
98114 end
Original file line number Diff line number Diff line change @@ -15,8 +15,22 @@ def closing_parenthesis
1515 str ( ")" )
1616 end
1717
18+ def end_keyword
19+ str ( "end" )
20+ end
21+
22+ def do_keyword
23+ str ( "do" )
24+ end
25+
26+ def begin_keyword
27+ str ( "begin" )
28+ end
29+
1830 def root
1931 ( opening_parenthesis << code << closing_parenthesis . maybe ) . aka ( :group ) |
32+ ( begin_keyword << code << end_keyword . maybe ) . aka ( :group ) |
33+ ( do_keyword << code << end_keyword . maybe ) . aka ( :group ) |
2034 Call
2135 end
2236 end
Original file line number Diff line number Diff line change @@ -23,6 +23,22 @@ def whitespace?
2323 whitespace . maybe
2424 end
2525
26+ def do_keyword
27+ str ( "do" )
28+ end
29+
30+ def begin_keyword
31+ str ( "begin" )
32+ end
33+
34+ def opening_curly_bracket
35+ str ( "{" )
36+ end
37+
38+ def closing_curly_bracket
39+ str ( "{" )
40+ end
41+
2642 def if_keyword
2743 str ( "if" )
2844 end
@@ -43,20 +59,25 @@ def end_keyword
4359 str ( "end" )
4460 end
4561
62+ def body
63+ ( ( begin_keyword | do_keyword ) << code << end_keyword . maybe ) |
64+ ( opening_curly_bracket << code << closing_curly_bracket . maybe ) | code
65+ end
66+
4667 def root
4768 (
4869 ( if_keyword | unless_keyword ) . aka ( :first_operator ) << whitespace <<
49- statement . aka ( :first_statement ) << code . aka ( :first_body ) <<
70+ statement . aka ( :first_statement ) << body . aka ( :first_body ) <<
5071 (
5172 (
5273 elsif_keyword . aka ( :operator ) << whitespace <<
53- statement . aka ( :statement ) << code . aka ( :body )
74+ statement . aka ( :statement ) << body . aka ( :body )
5475 ) |
5576 (
5677 else_keyword << whitespace <<
5778 ( if_keyword | unless_keyword ) . aka ( :operator ) <<
58- whitespace << statement . aka ( :statement ) << code . aka ( :body )
59- ) | ( else_keyword . aka ( :operator ) << code . aka ( :body ) )
79+ whitespace << statement . aka ( :statement ) << body . aka ( :body )
80+ ) | ( else_keyword . aka ( :operator ) << body . aka ( :body ) )
6081 ) . repeat ( 1 ) . aka ( :elses ) . maybe << end_keyword . maybe
6182 ) . aka ( :if ) | statement
6283 end
Original file line number Diff line number Diff line change @@ -91,10 +91,18 @@ def elsif_keyword
9191 str ( "elsif" )
9292 end
9393
94+ def begin_keyword
95+ str ( "begin" )
96+ end
97+
9498 def else_keyword
9599 str ( "else" )
96100 end
97101
102+ def begin_keyword
103+ str ( "begin" )
104+ end
105+
98106 def special_character
99107 ampersand | equal | pipe | dot | colon | comma | space | newline |
100108 opening_curly_bracket | closing_curly_bracket | opening_parenthesis |
@@ -113,8 +121,9 @@ def separator
113121
114122 def root
115123 ( do_keyword << separator ) . absent << (
116- else_keyword << separator
117- ) . absent << ( elsif_keyword << separator ) . absent <<
124+ begin_keyword << separator
125+ ) . absent << ( else_keyword << separator ) . absent <<
126+ ( elsif_keyword << separator ) . absent <<
118127 ( end_keyword << separator ) . absent << character . repeat ( 1 )
119128 end
120129 end
Original file line number Diff line number Diff line change @@ -35,6 +35,10 @@ def do_keyword
3535 str ( "do" )
3636 end
3737
38+ def begin_keyword
39+ str ( "begin" )
40+ end
41+
3842 def loop_keyword
3943 str ( "loop" )
4044 end
@@ -47,19 +51,19 @@ def closing_curly_bracket
4751 str ( "}" )
4852 end
4953
54+ def body
55+ ( ( do_keyword | begin_keyword ) << code << end_keyword . maybe ) |
56+ ( opening_curly_bracket << code << closing_curly_bracket ) | code
57+ end
58+
5059 def root
5160 (
5261 (
5362 (
5463 ( while_keyword | until_keyword ) . aka ( :operator ) << whitespace <<
5564 statement . aka ( :statement )
5665 ) | ( loop_keyword . aka ( :operator ) << whitespace )
57- ) << (
58- (
59- whitespace? << ( opening_curly_bracket | do_keyword )
60- ) . maybe << code . aka ( :body ) <<
61- ( closing_curly_bracket | end_keyword ) . maybe
62- )
66+ ) << body . aka ( :body )
6367 ) . aka ( :while ) | statement
6468 end
6569 end
Original file line number Diff line number Diff line change 353353 next if code_input . is_a? ( Code ::Object ::Decimal )
354354
355355 expect ( code_input . to_json ) . to eq ( code_expected . to_json )
356+ YAML . unsafe_load ( code_input . to_yaml )
357+ YAML . unsafe_load ( code_expected . to_yaml )
356358 end
357359 end
358360
You can’t perform that action at this time.
0 commit comments