meta_compile 0.0.4 → 0.0.5

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.
data/bin/meta_compile CHANGED
@@ -7,8 +7,8 @@ compile_program
7
7
  end
8
8
  def compile_outarg
9
9
  begin
10
- @i.scan /\s*/; s='$'
11
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
10
+ @i.scan /\s*/; s='$'; l=s.length;
11
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
12
12
  if @f
13
13
  @o.print '@o.print @t'
14
14
  @o.print "\n"
@@ -24,16 +24,16 @@ end while false
24
24
  end
25
25
  def compile_out
26
26
  begin
27
- @i.scan /\s*/; s='<'
28
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
27
+ @i.scan /\s*/; s='<'; l=s.length;
28
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
29
29
  if @f
30
30
  begin
31
31
  compile_outarg
32
32
  end while @f
33
33
  @f = true
34
34
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
35
- @i.scan /\s*/; s='>'
36
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
35
+ @i.scan /\s*/; s='>'; l=s.length;
36
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
37
37
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
38
38
  @o.print '@o.print "\n"'
39
39
  @o.print "\n"
@@ -53,44 +53,45 @@ break if @f
53
53
  if @f
54
54
  @o.print '@i.scan /\s*/; s='
55
55
  @o.print @t
56
+ @o.print '; l=s.length;'
56
57
  @o.print "\n"
57
- @o.print '@f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil'
58
+ @o.print '@f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil'
58
59
  @o.print "\n"
59
60
  end
60
61
  break if @f
61
- @i.scan /\s*/; s='.id'
62
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
62
+ @i.scan /\s*/; s='.id'; l=s.length;
63
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
63
64
  if @f
64
65
  @o.print '@i.scan /\s*/; @f = @t = @i.scan /[A-Za-z]+[A-Za-z0-9_]+/'
65
66
  @o.print "\n"
66
67
  end
67
68
  break if @f
68
- @i.scan /\s*/; s='.string'
69
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
69
+ @i.scan /\s*/; s='.string'; l=s.length;
70
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
70
71
  if @f
71
72
  @o.print '@i.scan /\s*/; @f = @t = @i.scan /\047[^\047]*\047/'
72
73
  @o.print "\n"
73
74
  end
74
75
  break if @f
75
- @i.scan /\s*/; s='('
76
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
76
+ @i.scan /\s*/; s='('; l=s.length;
77
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
77
78
  if @f
78
79
  compile_exp1
79
80
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
80
- @i.scan /\s*/; s=')'
81
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
81
+ @i.scan /\s*/; s=')'; l=s.length;
82
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
82
83
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
83
84
  end
84
85
  break if @f
85
- @i.scan /\s*/; s='.e'
86
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
86
+ @i.scan /\s*/; s='.e'; l=s.length;
87
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
87
88
  if @f
88
89
  @o.print '@f = true'
89
90
  @o.print "\n"
90
91
  end
91
92
  break if @f
92
- @i.scan /\s*/; s='*'
93
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
93
+ @i.scan /\s*/; s='*'; l=s.length;
94
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
94
95
  if @f
95
96
  @o.print 'begin'
96
97
  @o.print "\n"
@@ -148,8 +149,8 @@ compile_exp2
148
149
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
149
150
  begin
150
151
  begin
151
- @i.scan /\s*/; s='|'
152
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
152
+ @i.scan /\s*/; s='|'; l=s.length;
153
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
153
154
  if @f
154
155
  @o.print 'break if @f'
155
156
  @o.print "\n"
@@ -165,20 +166,20 @@ raise("error at: " + @i.rest.split("\n")[0]) if !@f
165
166
  end
166
167
  end while false
167
168
  end
168
- def compile_stat
169
+ def compile_rule
169
170
  begin
170
171
  @i.scan /\s*/; @f = @t = @i.scan /[A-Za-z]+[A-Za-z0-9_]+/
171
172
  if @f
172
173
  @o.print 'def compile_'
173
174
  @o.print @t
174
175
  @o.print "\n"
175
- @i.scan /\s*/; s='='
176
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
176
+ @i.scan /\s*/; s='='; l=s.length;
177
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
177
178
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
178
179
  compile_exp1
179
180
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
180
- @i.scan /\s*/; s=';'
181
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
181
+ @i.scan /\s*/; s=';'; l=s.length;
182
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
182
183
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
183
184
  @o.print 'end'
184
185
  @o.print "\n"
@@ -187,8 +188,8 @@ end while false
187
188
  end
188
189
  def compile_program
189
190
  begin
190
- @i.scan /\s*/; s='.syntax'
191
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
191
+ @i.scan /\s*/; s='.syntax'; l=s.length;
192
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
192
193
  if @f
193
194
  @i.scan /\s*/; @f = @t = @i.scan /[A-Za-z]+[A-Za-z0-9_]+/
194
195
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
@@ -208,12 +209,12 @@ raise("error at: " + @i.rest.split("\n")[0]) if !@f
208
209
  @o.print 'end'
209
210
  @o.print "\n"
210
211
  begin
211
- compile_stat
212
+ compile_rule
212
213
  end while @f
213
214
  @f = true
214
215
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
215
- @i.scan /\s*/; s='.end'
216
- @f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil
216
+ @i.scan /\s*/; s='.end'; l=s.length;
217
+ @f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil
217
218
  raise("error at: " + @i.rest.split("\n")[0]) if !@f
218
219
  @o.print 'end'
219
220
  @o.print "\n"
@@ -1,13 +1,12 @@
1
1
  .syntax RMetaII
2
2
 
3
- outarg = '$' <'@o.print @t'>
4
- | .string <'@o.print ' $>;
3
+ outarg = '$' <'@o.print @t'> | .string <'@o.print ' $>;
5
4
 
6
5
  out = '<' *outarg '>' <'@o.print "\n"'>;
7
6
 
8
7
  exp3 = .id <'compile_' $>
9
- | .string <'@i.scan /\s*/; s=' $>
10
- <'@f = (@i.peek(s.length) == s) ? (@t=s; @i.pos += s.length) : nil'>
8
+ | .string <'@i.scan /\s*/; s=' $ '; l=s.length;'>
9
+ <'@f = (@i.peek(l) == s) ? (@t=s; @i.pos += l) : nil'>
11
10
  | '.id' <'@i.scan /\s*/; @f = @t = @i.scan /[A-Za-z]+[A-Za-z0-9_]+/'>
12
11
  | '.string' <'@i.scan /\s*/; @f = @t = @i.scan /\047[^\047]*\047/'>
13
12
  | '(' exp1 ')'
@@ -22,14 +21,14 @@ exp1 = <'begin'> exp2
22
21
  *( '|' <'break if @f'> exp2 )
23
22
  <'end while false'>;
24
23
 
25
- stat = .id <'def compile_' $> '=' exp1 ';' <'end'>;
24
+ rule = .id <'def compile_' $> '=' exp1 ';' <'end'>;
26
25
 
27
26
  program = '.syntax' .id
28
27
  <'#!/usr/bin/env ruby'> <'require "strscan"'>
29
28
  <'class ' $> <'def compile(str, out)'>
30
29
  <'@i, @o = StringScanner.new(str), out'>
31
30
  <'compile_program'> <'end'>
32
- *stat '.end' <'end'>
31
+ *rule '.end' <'end'>
33
32
  <'begin; puts "Use: meta_compile <in> <out>"; exit; end if ARGV.length != 2'>
34
33
  <'File.open(ARGV[1], "w") {|f| RMetaII.new.compile(File.read(ARGV[0]), f)}'>;
35
34
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta_compile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: