meta_compile 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: