summaryrefslogtreecommitdiff
path: root/jni/ruby/tool/ytab.sed
blob: 46317db28486c8696c04ea95587b6d2571ac84f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sed -f
/^int yydebug;/{
i\
#ifndef yydebug
a\
#endif
}
/^extern int yydebug;/{
i\
#ifndef yydebug
a\
#endif
}
/^yydestruct.*yymsg/,/#endif/{
  /^yydestruct/{
    /parser/!{
      h
      s/^/ruby_parser_&/
      s/)$/, parser)/
      /\*/s/parser)$/struct parser_params *&/
    }
  }
  /^#endif/{
    x
    /^./{
      i\
    struct parser_params *parser;
      a\
#define yydestruct(m, t, v) ruby_parser_yydestruct(m, t, v, parser)
    }
    x
  }
}
s/^\([  ]*\)\(yyerror[  ]*([    ]*parser,\)/\1parser_\2/
s!^ *extern char \*getenv();!/* & */!
s/^\(#.*\)".*\.tab\.c"/\1"parse.c"/
/^\(#.*\)".*\.y"/s:\\\\:/:g