diff options
Diffstat (limited to 'ext/ripper/tools/preproc.rb')
-rwxr-xr-x | ext/ripper/tools/preproc.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ext/ripper/tools/preproc.rb b/ext/ripper/tools/preproc.rb new file mode 100755 index 0000000000..a2dba36e02 --- /dev/null +++ b/ext/ripper/tools/preproc.rb @@ -0,0 +1,57 @@ +def main + prelude + grammar + usercode +end + +def prelude + while line = ARGF.gets + case line + when %r</\*%%%\*/> + puts '/*' + when %r</\*%> + puts '*/' + when %r<%\*/> + puts + when /\A%%/ + puts '%%' + return + when /\A%token/ + puts line.sub(/<\w+>/, '<val>') + when /\A%type/ + puts line.sub(/<\w+>/, '<val>') + else + print line + end + end +end + +def grammar + while line = ARGF.gets + case line + when %r</\*%%%\*/> + puts '#if 0' + when %r</\*%c%\*/> + puts '/*' + when %r</\*%c> + puts '*/' + when %r</\*%> + puts '#endif' + when %r<%\*/> + puts + when /\A%%/ + puts '%%' + return + else + print line + end + end +end + +def usercode + while line = ARGF.gets + print line + end +end + +main |