adlint 2.6.14 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +1 -3
- data/ChangeLog +511 -0
- data/INSTALL +1 -1
- data/MANIFEST +57 -37
- data/NEWS +36 -7
- data/README +2 -2
- data/Rakefile +6 -6
- data/TODO +1 -1
- data/bin/adlint +25 -16
- data/bin/adlint_chk +22 -12
- data/bin/adlint_cma +17 -12
- data/bin/adlint_sma +22 -12
- data/bin/adlintize +98 -17
- data/etc/conf.d/fallback/cinit.erb +1 -1
- data/etc/conf.d/fallback/traits.erb +37 -37
- data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +1 -1
- data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +41 -41
- data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +1 -1
- data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +40 -40
- data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +1 -1
- data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +40 -40
- data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
- data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +40 -40
- data/etc/conf.d/noarch/GNUmakefile.erb +1 -1
- data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
- data/etc/conf.d/noarch/adlint_all_sh.erb +1 -1
- data/etc/conf.d/noarch/pinit.erb +1 -1
- data/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb +1 -1
- data/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb +42 -42
- data/etc/mesg.d/c_builtin/en_US/messages.yml +33 -33
- data/etc/mesg.d/c_builtin/ja_JP/messages.yml +5 -5
- data/etc/mesg.d/core/en_US/messages.yml +2 -2
- data/etc/mesg.d/core/ja_JP/messages.yml +2 -2
- data/features/code_check/W0018.feature +197 -0
- data/features/code_check/W0019.feature +79 -0
- data/features/code_check/W0021.feature +81 -0
- data/features/code_check/W0023.feature +203 -0
- data/features/code_check/W0024.feature +226 -0
- data/features/code_check/W0025.feature +5 -0
- data/features/code_check/W0088.feature +2 -2
- data/features/code_check/W0109.feature +2 -2
- data/features/code_check/W0477.feature +0 -3
- data/features/code_check/W0478.feature +0 -1
- data/features/code_check/W0582.feature +3 -3
- data/features/code_check/W0583.feature +4 -7
- data/features/code_check/W0646.feature +0 -1
- data/features/code_check/W0695.feature +0 -1
- data/features/code_check/W0705.feature +8 -0
- data/features/code_check/W0723.feature +0 -1
- data/features/code_check/W0745.feature +1 -0
- data/features/code_check/W0781.feature +1 -0
- data/features/code_check/W1057.feature +141 -0
- data/features/code_check/W1058.feature +93 -0
- data/features/code_check/W1059.feature +86 -0
- data/features/code_check/W1060.feature +77 -0
- data/features/code_check/W1061.feature +143 -0
- data/features/code_check/W1062.feature +162 -0
- data/features/code_check/W1063.feature +123 -0
- data/features/code_check/W1064.feature +83 -0
- data/features/code_check/W1065.feature +82 -0
- data/features/code_check/W9003.feature +2 -0
- data/features/step_definitions/code_check_steps.rb +1 -0
- data/features/support/env.rb +16 -13
- data/lib/adlint.rb +7 -4
- data/lib/adlint/analyzer.rb +131 -157
- data/lib/adlint/annot.rb +149 -0
- data/lib/adlint/cc1.rb +57 -0
- data/lib/adlint/{c → cc1}/branch.rb +74 -62
- data/lib/adlint/{c → cc1}/builtin.rb +21 -21
- data/lib/adlint/{c → cc1}/const.rb +119 -117
- data/lib/adlint/{c → cc1}/conv.rb +76 -78
- data/lib/adlint/{c → cc1}/ctrlexpr.rb +69 -86
- data/lib/adlint/cc1/domain.rb +8103 -0
- data/lib/adlint/{c → cc1}/enum.rb +3 -3
- data/lib/adlint/{c → cc1}/environ.rb +21 -21
- data/lib/adlint/{c → cc1}/expr.rb +232 -218
- data/lib/adlint/{c → cc1}/format.rb +305 -342
- data/lib/adlint/{c → cc1}/interp.rb +269 -220
- data/lib/adlint/cc1/lexer.rb +246 -0
- data/lib/adlint/{c → cc1}/mediator.rb +78 -84
- data/lib/adlint/{c → cc1}/object.rb +261 -264
- data/lib/adlint/{c → cc1}/operator.rb +7 -7
- data/lib/adlint/{c → cc1}/option.rb +4 -3
- data/lib/adlint/{c → cc1}/parser.rb +274 -506
- data/lib/adlint/{c → cc1}/parser.y +69 -301
- data/lib/adlint/cc1/phase.rb +138 -0
- data/lib/adlint/{c → cc1}/resolver.rb +66 -78
- data/lib/adlint/{c → cc1}/scanner.rb +57 -49
- data/lib/adlint/{c → cc1}/scope.rb +3 -3
- data/lib/adlint/{c → cc1}/seqp.rb +13 -5
- data/lib/adlint/{c → cc1}/syntax.rb +819 -1122
- data/lib/adlint/{c → cc1}/type.rb +1498 -1479
- data/lib/adlint/{c → cc1}/util.rb +20 -12
- data/lib/adlint/{c → cc1}/value.rb +699 -642
- data/lib/adlint/code.rb +163 -164
- data/lib/adlint/cpp.rb +2 -2
- data/lib/adlint/cpp/asm.rb +13 -14
- data/lib/adlint/cpp/constexpr.rb +42 -38
- data/lib/adlint/cpp/constexpr.y +44 -40
- data/lib/adlint/cpp/eval.rb +435 -435
- data/lib/adlint/cpp/lexer.rb +343 -340
- data/lib/adlint/cpp/macro.rb +188 -190
- data/lib/adlint/cpp/phase.rb +66 -45
- data/lib/adlint/cpp/scanner.rb +14 -17
- data/lib/adlint/cpp/source.rb +49 -55
- data/lib/adlint/cpp/subst.rb +65 -65
- data/lib/adlint/cpp/syntax.rb +155 -275
- data/lib/adlint/cpp/util.rb +22 -19
- data/lib/adlint/driver.rb +86 -93
- data/lib/adlint/error.rb +33 -52
- data/lib/adlint/exam.rb +158 -24
- data/lib/adlint/exam/c_builtin.rb +7 -7
- data/lib/adlint/exam/c_builtin/cc1_check.rb +20522 -0
- data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +957 -0
- data/lib/adlint/exam/c_builtin/cc1_code.rb +459 -0
- data/lib/adlint/exam/c_builtin/cc1_metric.rb +794 -0
- data/lib/adlint/exam/c_builtin/cpp_check.rb +486 -441
- data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +36 -39
- data/lib/adlint/exam/c_builtin/cpp_code.rb +63 -65
- data/lib/adlint/exam/c_builtin/ld_check.rb +136 -129
- data/lib/adlint/exam/c_builtin/ld_metric.rb +11 -11
- data/lib/adlint/lang.rb +25 -25
- data/lib/adlint/ld.rb +2 -2
- data/lib/adlint/ld/object.rb +220 -188
- data/lib/adlint/ld/phase.rb +94 -63
- data/lib/adlint/ld/typedef.rb +22 -11
- data/lib/adlint/ld/util.rb +43 -35
- data/lib/adlint/lexer.rb +59 -56
- data/lib/adlint/location.rb +140 -0
- data/lib/adlint/memo.rb +157 -0
- data/lib/adlint/message.rb +207 -156
- data/lib/adlint/metric.rb +139 -217
- data/lib/adlint/monitor.rb +45 -43
- data/lib/adlint/phase.rb +56 -29
- data/lib/adlint/prelude.rb +66 -54
- data/lib/adlint/report.rb +253 -332
- data/lib/adlint/source.rb +26 -27
- data/lib/adlint/supp.rb +131 -0
- data/lib/adlint/symbol.rb +14 -16
- data/lib/adlint/token.rb +19 -91
- data/lib/adlint/traits.rb +242 -226
- data/lib/adlint/util.rb +116 -205
- data/lib/adlint/version.rb +8 -8
- data/share/HEADER +2 -2
- data/share/doc/developers_guide_ja.html +148 -19
- data/share/doc/developers_guide_ja.texi +141 -11
- data/share/doc/samples/GNUmakefile +1 -1
- data/share/doc/samples/adlint_traits.yml +45 -36
- data/share/doc/users_guide_en.html +1321 -1252
- data/share/doc/users_guide_en.texi +475 -408
- data/share/doc/users_guide_ja.html +1932 -1878
- data/share/doc/users_guide_ja.texi +324 -273
- data/share/sample/bison-2.5/adlint/GNUmakefile +5 -1
- data/share/sample/bison-2.5/adlint/adlint_traits.yml +38 -38
- data/share/sample/bison-2.5/adlint/lib/GNUmakefile +1 -1
- data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +1 -1
- data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +1 -1
- data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +50 -42
- data/share/sample/bison-2.5/adlint/src/GNUmakefile +1 -1
- data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +1 -1
- data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +1 -1
- data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +50 -42
- data/share/sample/ctags-5.8/adlint/GNUmakefile +1 -1
- data/share/sample/ctags-5.8/adlint/adlint_cinit.h +1 -1
- data/share/sample/ctags-5.8/adlint/adlint_pinit.h +1 -1
- data/share/sample/ctags-5.8/adlint/adlint_traits.yml +50 -42
- data/share/sample/flex-2.5.35/adlint/GNUmakefile +1 -1
- data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +1 -1
- data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +1 -1
- data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +46 -38
- data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +50 -42
- data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +1 -1
- data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +50 -42
- data/share/sample/screen-4.0.3/adlint/GNUmakefile +1 -1
- data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +1 -1
- data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +1 -1
- data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +50 -42
- data/share/sample/vim-7.3/adlint/vim/GNUmakefile +1 -1
- data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +1 -1
- data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +1 -1
- data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +50 -42
- data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +1 -1
- data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +1 -1
- data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +1 -1
- data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +49 -41
- data/share/sample/zsh-4.3.15/adlint/GNUmakefile +1 -1
- data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +46 -38
- data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +1 -1
- data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +50 -42
- data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +1 -1
- data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +50 -42
- data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +1 -1
- data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +50 -42
- data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +1 -1
- data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +1 -1
- data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +50 -42
- data/spec/adlint/{c → cc1}/ctrlexpr_spec.rb +51 -49
- data/spec/adlint/{c → cc1}/domain_spec.rb +210 -179
- data/spec/adlint/{c → cc1}/operator_spec.rb +3 -3
- data/spec/adlint/{c → cc1}/syntax_spec.rb +10 -12
- data/spec/adlint/{c → cc1}/type_spec.rb +61 -68
- data/{lib/adlint/c.rb → spec/adlint/location_spec.rb} +24 -29
- data/spec/conf.d/default_traits.yml +38 -37
- data/spec/conf.d/empty_cinit.h +1 -1
- data/spec/conf.d/empty_pinit.h +1 -1
- data/spec/conf.d/project/foo.c +0 -0
- data/spec/spec_helper.rb +2 -2
- metadata +60 -40
- data/lib/adlint/c/domain.rb +0 -7931
- data/lib/adlint/c/lexer.rb +0 -252
- data/lib/adlint/c/phase.rb +0 -135
- data/lib/adlint/exam/c_builtin/c_check.rb +0 -20745
- data/lib/adlint/exam/c_builtin/c_check_shima.rb +0 -983
- data/lib/adlint/exam/c_builtin/c_code.rb +0 -477
- data/lib/adlint/exam/c_builtin/c_metric.rb +0 -818
@@ -1,7 +1,7 @@
|
|
1
1
|
# The ISO C99 parser.
|
2
2
|
#
|
3
3
|
# Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
|
4
|
-
# Copyright:: Copyright (C) 2010-
|
4
|
+
# Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
|
5
5
|
# License:: GPLv3+: GNU General Public License version 3 or later
|
6
6
|
#
|
7
7
|
# Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
# / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
|
12
12
|
# / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
|
13
13
|
# / __ |/ /_/ / /___/ / /| / / /
|
14
|
-
# /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-
|
14
|
+
# /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
|
15
15
|
#
|
16
16
|
# This file is part of AdLint.
|
17
17
|
#
|
@@ -29,7 +29,7 @@
|
|
29
29
|
#
|
30
30
|
#++
|
31
31
|
|
32
|
-
class AdLint::
|
32
|
+
class AdLint::Cc1::Parser
|
33
33
|
|
34
34
|
token IDENTIFIER
|
35
35
|
TYPEDEF_NAME
|
@@ -89,35 +89,30 @@ primary_expression
|
|
89
89
|
: IDENTIFIER
|
90
90
|
{
|
91
91
|
checkpoint(val[0].location)
|
92
|
-
|
93
92
|
result = ObjectSpecifier.new(val[0])
|
94
93
|
result.head_token = result.tail_token = val[0]
|
95
94
|
}
|
96
95
|
| CONSTANT
|
97
96
|
{
|
98
97
|
checkpoint(val[0].location)
|
99
|
-
|
100
98
|
result = ConstantSpecifier.new(val[0])
|
101
99
|
result.head_token = result.tail_token = val[0]
|
102
100
|
}
|
103
101
|
| STRING_LITERAL
|
104
102
|
{
|
105
103
|
checkpoint(val[0].location)
|
106
|
-
|
107
104
|
result = StringLiteralSpecifier.new(val[0])
|
108
105
|
result.head_token = result.tail_token = val[0]
|
109
106
|
}
|
110
107
|
| NULL
|
111
108
|
{
|
112
109
|
checkpoint(val[0].location)
|
113
|
-
|
114
110
|
result = NullConstantSpecifier.new(val[0])
|
115
111
|
result.head_token = result.tail_token = val[0]
|
116
112
|
}
|
117
113
|
| "(" expression ")"
|
118
114
|
{
|
119
115
|
checkpoint(val[0].location)
|
120
|
-
|
121
116
|
result = GroupedExpression.new(val[1])
|
122
117
|
result.head_token = val[0]
|
123
118
|
result.tail_token = val[2]
|
@@ -125,7 +120,6 @@ primary_expression
|
|
125
120
|
| "(" compound_statement ")"
|
126
121
|
{
|
127
122
|
checkpoint(val[0].location)
|
128
|
-
|
129
123
|
E(:E0013, val[0].location)
|
130
124
|
result = ErrorExpression.new(val[0])
|
131
125
|
result.head_token = val[0]
|
@@ -138,7 +132,6 @@ postfix_expression
|
|
138
132
|
| postfix_expression "[" expression "]"
|
139
133
|
{
|
140
134
|
checkpoint(val[0].location)
|
141
|
-
|
142
135
|
result = ArraySubscriptExpression.new(val[0], val[2], val[1])
|
143
136
|
result.head_token = val[0].head_token
|
144
137
|
result.tail_token = val[3]
|
@@ -146,7 +139,6 @@ postfix_expression
|
|
146
139
|
| postfix_expression "(" ")"
|
147
140
|
{
|
148
141
|
checkpoint(val[0].location)
|
149
|
-
|
150
142
|
result = FunctionCallExpression.new(val[0], [], val[1])
|
151
143
|
result.head_token = val[0].head_token
|
152
144
|
result.tail_token = val[2]
|
@@ -154,7 +146,6 @@ postfix_expression
|
|
154
146
|
| postfix_expression "(" argument_expression_list ")"
|
155
147
|
{
|
156
148
|
checkpoint(val[0].location)
|
157
|
-
|
158
149
|
result = FunctionCallExpression.new(val[0], val[2], val [1])
|
159
150
|
result.head_token = val[0].head_token
|
160
151
|
result.tail_token = val[3]
|
@@ -162,7 +153,6 @@ postfix_expression
|
|
162
153
|
| postfix_expression "." IDENTIFIER
|
163
154
|
{
|
164
155
|
checkpoint(val[0].location)
|
165
|
-
|
166
156
|
result = MemberAccessByValueExpression.new(val[0], val[2], val[1])
|
167
157
|
result.head_token = val[0].head_token
|
168
158
|
result.tail_token = val[2]
|
@@ -170,7 +160,6 @@ postfix_expression
|
|
170
160
|
| postfix_expression "->" IDENTIFIER
|
171
161
|
{
|
172
162
|
checkpoint(val[0].location)
|
173
|
-
|
174
163
|
result = MemberAccessByPointerExpression.new(val[0], val[2], val[1])
|
175
164
|
result.head_token = val[0].head_token
|
176
165
|
result.tail_token = val[2]
|
@@ -178,7 +167,6 @@ postfix_expression
|
|
178
167
|
| postfix_expression "." CONSTANT
|
179
168
|
{
|
180
169
|
checkpoint(val[0].location)
|
181
|
-
|
182
170
|
result = BitAccessByValueExpression.new(val[0], val[2], val[1])
|
183
171
|
result.head_token = val[0].head_token
|
184
172
|
result.tail_token = val[2]
|
@@ -186,7 +174,6 @@ postfix_expression
|
|
186
174
|
| postfix_expression "->" CONSTANT
|
187
175
|
{
|
188
176
|
checkpoint(val[0].location)
|
189
|
-
|
190
177
|
result = BitAccessByPointerExpression.new(val[0], val[2], val[1])
|
191
178
|
result.head_token = val[0].head_token
|
192
179
|
result.tail_token = val[2]
|
@@ -194,7 +181,6 @@ postfix_expression
|
|
194
181
|
| postfix_expression "++"
|
195
182
|
{
|
196
183
|
checkpoint(val[0].location)
|
197
|
-
|
198
184
|
result = PostfixIncrementExpression.new(val[1], val[0])
|
199
185
|
result.head_token = val[0].head_token
|
200
186
|
result.tail_token = val[1]
|
@@ -202,7 +188,6 @@ postfix_expression
|
|
202
188
|
| postfix_expression "--"
|
203
189
|
{
|
204
190
|
checkpoint(val[0].location)
|
205
|
-
|
206
191
|
result = PostfixDecrementExpression.new(val[1], val[0])
|
207
192
|
result.head_token = val[0].head_token
|
208
193
|
result.tail_token = val[1]
|
@@ -210,7 +195,6 @@ postfix_expression
|
|
210
195
|
| "(" type_name ")" "{" initializer_list "}"
|
211
196
|
{
|
212
197
|
checkpoint(val[0].location)
|
213
|
-
|
214
198
|
result = CompoundLiteralExpression.new(val[1], val[4], val[0])
|
215
199
|
result.head_token = val[0]
|
216
200
|
result.tail_token = val[5]
|
@@ -218,7 +202,6 @@ postfix_expression
|
|
218
202
|
| "(" type_name ")" "{" initializer_list "," "}"
|
219
203
|
{
|
220
204
|
checkpoint(val[0].location)
|
221
|
-
|
222
205
|
result = CompoundLiteralExpression.new(val[1], val[4], val[0])
|
223
206
|
result.head_token = val[0]
|
224
207
|
result.tail_token = val[6]
|
@@ -229,13 +212,11 @@ argument_expression_list
|
|
229
212
|
: assignment_expression
|
230
213
|
{
|
231
214
|
checkpoint(val[0].location)
|
232
|
-
|
233
215
|
result = val
|
234
216
|
}
|
235
217
|
| argument_expression_list "," assignment_expression
|
236
218
|
{
|
237
219
|
checkpoint(val[0].first.location)
|
238
|
-
|
239
220
|
result = val[0].push(val[2])
|
240
221
|
}
|
241
222
|
;
|
@@ -245,7 +226,6 @@ unary_expression
|
|
245
226
|
| "++" unary_expression
|
246
227
|
{
|
247
228
|
checkpoint(val[0].location)
|
248
|
-
|
249
229
|
result = PrefixIncrementExpression.new(val[0], val[1])
|
250
230
|
result.head_token = val[0]
|
251
231
|
result.tail_token = val[1].tail_token
|
@@ -253,7 +233,6 @@ unary_expression
|
|
253
233
|
| "--" unary_expression
|
254
234
|
{
|
255
235
|
checkpoint(val[0].location)
|
256
|
-
|
257
236
|
result = PrefixDecrementExpression.new(val[0], val[1])
|
258
237
|
result.head_token = val[0]
|
259
238
|
result.tail_token = val[1].tail_token
|
@@ -261,7 +240,6 @@ unary_expression
|
|
261
240
|
| "&" cast_expression
|
262
241
|
{
|
263
242
|
checkpoint(val[0].location)
|
264
|
-
|
265
243
|
result = AddressExpression.new(val[0], val[1])
|
266
244
|
result.head_token = val[0]
|
267
245
|
result.tail_token = val[1].tail_token
|
@@ -269,7 +247,6 @@ unary_expression
|
|
269
247
|
| "*" cast_expression
|
270
248
|
{
|
271
249
|
checkpoint(val[0].location)
|
272
|
-
|
273
250
|
result = IndirectionExpression.new(val[0], val[1])
|
274
251
|
result.head_token = val[0]
|
275
252
|
result.tail_token = val[1].tail_token
|
@@ -277,7 +254,6 @@ unary_expression
|
|
277
254
|
| unary_arithmetic_operator cast_expression
|
278
255
|
{
|
279
256
|
checkpoint(val[0].location)
|
280
|
-
|
281
257
|
result = UnaryArithmeticExpression.new(val[0], val[1])
|
282
258
|
result.head_token = val[0]
|
283
259
|
result.tail_token = val[1].tail_token
|
@@ -285,7 +261,6 @@ unary_expression
|
|
285
261
|
| SIZEOF unary_expression
|
286
262
|
{
|
287
263
|
checkpoint(val[0].location)
|
288
|
-
|
289
264
|
result = SizeofExpression.new(val[0], val[1])
|
290
265
|
result.head_token = val[0]
|
291
266
|
result.tail_token = val[1].tail_token
|
@@ -293,7 +268,6 @@ unary_expression
|
|
293
268
|
| SIZEOF "(" type_name ")"
|
294
269
|
{
|
295
270
|
checkpoint(val[0].location)
|
296
|
-
|
297
271
|
result = SizeofTypeExpression.new(val[0], val[2])
|
298
272
|
result.head_token = val[0]
|
299
273
|
result.tail_token = val[3]
|
@@ -301,7 +275,6 @@ unary_expression
|
|
301
275
|
| ALIGNOF unary_expression
|
302
276
|
{
|
303
277
|
checkpoint(val[0].location)
|
304
|
-
|
305
278
|
result = AlignofExpression.new(val[0], val[1])
|
306
279
|
result.head_token = val[0]
|
307
280
|
result.tail_token = val[1].tail_token
|
@@ -309,7 +282,6 @@ unary_expression
|
|
309
282
|
| ALIGNOF "(" type_name ")"
|
310
283
|
{
|
311
284
|
checkpoint(val[0].location)
|
312
|
-
|
313
285
|
result = AlignofTypeExpression.new(val[0], val[2])
|
314
286
|
result.head_token = val[0]
|
315
287
|
result.tail_token = val[3]
|
@@ -317,7 +289,6 @@ unary_expression
|
|
317
289
|
| "&&" unary_expression
|
318
290
|
{
|
319
291
|
checkpoint(val[0].location)
|
320
|
-
|
321
292
|
E(:E0014, val[0].location, val[0].value)
|
322
293
|
result = ErrorExpression.new(val[0])
|
323
294
|
result.head_token = val[0]
|
@@ -337,7 +308,6 @@ cast_expression
|
|
337
308
|
| "(" type_name ")" cast_expression
|
338
309
|
{
|
339
310
|
checkpoint(val[0].location)
|
340
|
-
|
341
311
|
result = CastExpression.new(val[1], val[3])
|
342
312
|
result.head_token = val[0]
|
343
313
|
result.tail_token = val[3].tail_token
|
@@ -349,7 +319,6 @@ multiplicative_expression
|
|
349
319
|
| multiplicative_expression "*" cast_expression
|
350
320
|
{
|
351
321
|
checkpoint(val[0].location)
|
352
|
-
|
353
322
|
result = MultiplicativeExpression.new(val[1], val[0], val[2])
|
354
323
|
result.head_token = val[0].head_token
|
355
324
|
result.tail_token = val[2].tail_token
|
@@ -357,7 +326,6 @@ multiplicative_expression
|
|
357
326
|
| multiplicative_expression "/" cast_expression
|
358
327
|
{
|
359
328
|
checkpoint(val[0].location)
|
360
|
-
|
361
329
|
result = MultiplicativeExpression.new(val[1], val[0], val[2])
|
362
330
|
result.head_token = val[0].head_token
|
363
331
|
result.tail_token = val[2].tail_token
|
@@ -365,7 +333,6 @@ multiplicative_expression
|
|
365
333
|
| multiplicative_expression "%" cast_expression
|
366
334
|
{
|
367
335
|
checkpoint(val[0].location)
|
368
|
-
|
369
336
|
result = MultiplicativeExpression.new(val[1], val[0], val[2])
|
370
337
|
result.head_token = val[0].head_token
|
371
338
|
result.tail_token = val[2].tail_token
|
@@ -377,7 +344,6 @@ additive_expression
|
|
377
344
|
| additive_expression "+" multiplicative_expression
|
378
345
|
{
|
379
346
|
checkpoint(val[0].location)
|
380
|
-
|
381
347
|
result = AdditiveExpression.new(val[1], val[0], val[2])
|
382
348
|
result.head_token = val[0].head_token
|
383
349
|
result.tail_token = val[2].tail_token
|
@@ -385,7 +351,6 @@ additive_expression
|
|
385
351
|
| additive_expression "-" multiplicative_expression
|
386
352
|
{
|
387
353
|
checkpoint(val[0].location)
|
388
|
-
|
389
354
|
result = AdditiveExpression.new(val[1], val[0], val[2])
|
390
355
|
result.head_token = val[0].head_token
|
391
356
|
result.tail_token = val[2].tail_token
|
@@ -397,7 +362,6 @@ shift_expression
|
|
397
362
|
| shift_expression "<<" additive_expression
|
398
363
|
{
|
399
364
|
checkpoint(val[0].location)
|
400
|
-
|
401
365
|
result = ShiftExpression.new(val[1], val[0], val[2])
|
402
366
|
result.head_token = val[0].head_token
|
403
367
|
result.tail_token = val[2].tail_token
|
@@ -405,7 +369,6 @@ shift_expression
|
|
405
369
|
| shift_expression ">>" additive_expression
|
406
370
|
{
|
407
371
|
checkpoint(val[0].location)
|
408
|
-
|
409
372
|
result = ShiftExpression.new(val[1], val[0], val[2])
|
410
373
|
result.head_token = val[0].head_token
|
411
374
|
result.tail_token = val[2].tail_token
|
@@ -417,7 +380,6 @@ relational_expression
|
|
417
380
|
| relational_expression "<" shift_expression
|
418
381
|
{
|
419
382
|
checkpoint(val[0].location)
|
420
|
-
|
421
383
|
result = RelationalExpression.new(val[1], val[0], val[2])
|
422
384
|
result.head_token = val[0].head_token
|
423
385
|
result.tail_token = val[2].tail_token
|
@@ -425,7 +387,6 @@ relational_expression
|
|
425
387
|
| relational_expression ">" shift_expression
|
426
388
|
{
|
427
389
|
checkpoint(val[0].location)
|
428
|
-
|
429
390
|
result = RelationalExpression.new(val[1], val[0], val[2])
|
430
391
|
result.head_token = val[0].head_token
|
431
392
|
result.tail_token = val[2].tail_token
|
@@ -433,7 +394,6 @@ relational_expression
|
|
433
394
|
| relational_expression "<=" shift_expression
|
434
395
|
{
|
435
396
|
checkpoint(val[0].location)
|
436
|
-
|
437
397
|
result = RelationalExpression.new(val[1], val[0], val[2])
|
438
398
|
result.head_token = val[0].head_token
|
439
399
|
result.tail_token = val[2].tail_token
|
@@ -441,7 +401,6 @@ relational_expression
|
|
441
401
|
| relational_expression ">=" shift_expression
|
442
402
|
{
|
443
403
|
checkpoint(val[0].location)
|
444
|
-
|
445
404
|
result = RelationalExpression.new(val[1], val[0], val[2])
|
446
405
|
result.head_token = val[0].head_token
|
447
406
|
result.tail_token = val[2].tail_token
|
@@ -453,7 +412,6 @@ equality_expression
|
|
453
412
|
| equality_expression "==" relational_expression
|
454
413
|
{
|
455
414
|
checkpoint(val[0].location)
|
456
|
-
|
457
415
|
result = EqualityExpression.new(val[1], val[0], val[2])
|
458
416
|
result.head_token = val[0].head_token
|
459
417
|
result.tail_token = val[2].tail_token
|
@@ -461,7 +419,6 @@ equality_expression
|
|
461
419
|
| equality_expression "!=" relational_expression
|
462
420
|
{
|
463
421
|
checkpoint(val[0].location)
|
464
|
-
|
465
422
|
result = EqualityExpression.new(val[1], val[0], val[2])
|
466
423
|
result.head_token = val[0].head_token
|
467
424
|
result.tail_token = val[2].tail_token
|
@@ -473,7 +430,6 @@ and_expression
|
|
473
430
|
| and_expression "&" equality_expression
|
474
431
|
{
|
475
432
|
checkpoint(val[0].location)
|
476
|
-
|
477
433
|
result = AndExpression.new(val[1], val[0], val[2])
|
478
434
|
result.head_token = val[0].head_token
|
479
435
|
result.tail_token = val[2].tail_token
|
@@ -485,7 +441,6 @@ exclusive_or_expression
|
|
485
441
|
| exclusive_or_expression "^" and_expression
|
486
442
|
{
|
487
443
|
checkpoint(val[0].location)
|
488
|
-
|
489
444
|
result = ExclusiveOrExpression.new(val[1], val[0], val[2])
|
490
445
|
result.head_token = val[0].head_token
|
491
446
|
result.tail_token = val[2].tail_token
|
@@ -497,7 +452,6 @@ inclusive_or_expression
|
|
497
452
|
| inclusive_or_expression "|" exclusive_or_expression
|
498
453
|
{
|
499
454
|
checkpoint(val[0].location)
|
500
|
-
|
501
455
|
result = InclusiveOrExpression.new(val[1], val[0], val[2])
|
502
456
|
result.head_token = val[0].head_token
|
503
457
|
result.tail_token = val[2].tail_token
|
@@ -509,7 +463,6 @@ logical_and_expression
|
|
509
463
|
| logical_and_expression "&&" inclusive_or_expression
|
510
464
|
{
|
511
465
|
checkpoint(val[0].location)
|
512
|
-
|
513
466
|
result = LogicalAndExpression.new(val[1], val[0], val[2])
|
514
467
|
result.head_token = val[0].head_token
|
515
468
|
result.tail_token = val[2].tail_token
|
@@ -521,7 +474,6 @@ logical_or_expression
|
|
521
474
|
| logical_or_expression "||" logical_and_expression
|
522
475
|
{
|
523
476
|
checkpoint(val[0].location)
|
524
|
-
|
525
477
|
result = LogicalOrExpression.new(val[1], val[0], val[2])
|
526
478
|
result.head_token = val[0].head_token
|
527
479
|
result.tail_token = val[2].tail_token
|
@@ -533,7 +485,6 @@ conditional_expression
|
|
533
485
|
| logical_or_expression "?" expression ":" conditional_expression
|
534
486
|
{
|
535
487
|
checkpoint(val[0].location)
|
536
|
-
|
537
488
|
result = ConditionalExpression.new(val[0], val[2], val[4], val[1])
|
538
489
|
result.head_token = val[0].head_token
|
539
490
|
result.tail_token = val[4].tail_token
|
@@ -545,7 +496,6 @@ assignment_expression
|
|
545
496
|
| cast_expression "=" assignment_expression
|
546
497
|
{
|
547
498
|
checkpoint(val[0].location)
|
548
|
-
|
549
499
|
result = SimpleAssignmentExpression.new(val[1], val[0], val[2])
|
550
500
|
result.head_token = val[0].head_token
|
551
501
|
result.tail_token = val[2].tail_token
|
@@ -553,7 +503,6 @@ assignment_expression
|
|
553
503
|
| cast_expression compound_assignment_operator assignment_expression
|
554
504
|
{
|
555
505
|
checkpoint(val[0].location)
|
556
|
-
|
557
506
|
result = CompoundAssignmentExpression.new(val[1], val[0], val[2])
|
558
507
|
result.head_token = val[0].head_token
|
559
508
|
result.tail_token = val[2].tail_token
|
@@ -578,15 +527,11 @@ expression
|
|
578
527
|
| expression "," assignment_expression
|
579
528
|
{
|
580
529
|
checkpoint(val[0].location)
|
581
|
-
|
582
530
|
case val[0]
|
583
531
|
when CommaSeparatedExpression
|
584
532
|
result = val[0].push(val[2])
|
585
|
-
result.tail_token = val[2].tail_token
|
586
533
|
else
|
587
534
|
result = CommaSeparatedExpression.new(val[0]).push(val[2])
|
588
|
-
result.head_token = val[0].head_token
|
589
|
-
result.tail_token = val[2].tail_token
|
590
535
|
end
|
591
536
|
}
|
592
537
|
;
|
@@ -602,21 +547,17 @@ declaration
|
|
602
547
|
: declaration_specifiers ";"
|
603
548
|
{
|
604
549
|
checkpoint(val[0].location)
|
605
|
-
|
606
550
|
@lexer.start_identifier_translation
|
607
|
-
|
608
|
-
result = Declaration.new(val[0], [], @symbol_table)
|
551
|
+
result = Declaration.new(val[0], [], @sym_tbl)
|
609
552
|
result.head_token = val[0].head_token
|
610
553
|
result.tail_token = val[1]
|
611
554
|
}
|
612
555
|
| declaration_specifiers init_declarator_list ";"
|
613
556
|
{
|
614
557
|
checkpoint(val[0].location)
|
615
|
-
|
616
|
-
result = Declaration.new(val[0], val[1], @symbol_table)
|
558
|
+
result = Declaration.new(val[0], val[1], @sym_tbl)
|
617
559
|
result.head_token = val[0].head_token
|
618
560
|
result.tail_token = val[2]
|
619
|
-
|
620
561
|
result.items.each do |item|
|
621
562
|
case item
|
622
563
|
when TypedefDeclaration
|
@@ -633,8 +574,7 @@ global_declaration
|
|
633
574
|
| init_declarator_list ";"
|
634
575
|
{
|
635
576
|
checkpoint(val[0].first.location)
|
636
|
-
|
637
|
-
result = Declaration.new(nil, val[0], @symbol_table)
|
577
|
+
result = Declaration.new(nil, val[0], @sym_tbl)
|
638
578
|
result.head_token = val[0].first.head_token
|
639
579
|
result.tail_token = val[1]
|
640
580
|
}
|
@@ -644,7 +584,6 @@ declaration_specifiers
|
|
644
584
|
: storage_class_specifier
|
645
585
|
{
|
646
586
|
checkpoint(val[0].location)
|
647
|
-
|
648
587
|
result = DeclarationSpecifiers.new
|
649
588
|
result.storage_class_specifier = val[0]
|
650
589
|
result.head_token = result.tail_token = val[0]
|
@@ -652,7 +591,6 @@ declaration_specifiers
|
|
652
591
|
| declaration_specifiers storage_class_specifier
|
653
592
|
{
|
654
593
|
checkpoint(val[0].location)
|
655
|
-
|
656
594
|
result = val[0]
|
657
595
|
result.storage_class_specifier = val[1]
|
658
596
|
result.tail_token = val[1]
|
@@ -660,9 +598,7 @@ declaration_specifiers
|
|
660
598
|
| type_specifier
|
661
599
|
{
|
662
600
|
checkpoint(val[0].location)
|
663
|
-
|
664
601
|
@lexer.stop_identifier_translation
|
665
|
-
|
666
602
|
result = DeclarationSpecifiers.new
|
667
603
|
result.type_specifiers.push(val[0])
|
668
604
|
result.head_token = val[0].head_token
|
@@ -671,9 +607,7 @@ declaration_specifiers
|
|
671
607
|
| declaration_specifiers type_specifier
|
672
608
|
{
|
673
609
|
checkpoint(val[0].location)
|
674
|
-
|
675
610
|
@lexer.stop_identifier_translation
|
676
|
-
|
677
611
|
result = val[0]
|
678
612
|
result.type_specifiers.push(val[1])
|
679
613
|
result.tail_token = val[1].tail_token
|
@@ -681,7 +615,6 @@ declaration_specifiers
|
|
681
615
|
| type_qualifier
|
682
616
|
{
|
683
617
|
checkpoint(val[0].location)
|
684
|
-
|
685
618
|
result = DeclarationSpecifiers.new
|
686
619
|
result.type_qualifiers.push(val[0])
|
687
620
|
result.head_token = result.tail_token = val[0]
|
@@ -689,7 +622,6 @@ declaration_specifiers
|
|
689
622
|
| declaration_specifiers type_qualifier
|
690
623
|
{
|
691
624
|
checkpoint(val[0].location)
|
692
|
-
|
693
625
|
result = val[0]
|
694
626
|
result.type_qualifiers.push(val[1])
|
695
627
|
result.tail_token = val[1]
|
@@ -697,7 +629,6 @@ declaration_specifiers
|
|
697
629
|
| function_specifier
|
698
630
|
{
|
699
631
|
checkpoint(val[0].location)
|
700
|
-
|
701
632
|
result = DeclarationSpecifiers.new
|
702
633
|
result.function_specifier = val[0]
|
703
634
|
result.head_token = result.tail_token = val[0]
|
@@ -705,7 +636,6 @@ declaration_specifiers
|
|
705
636
|
| declaration_specifiers function_specifier
|
706
637
|
{
|
707
638
|
checkpoint(val[0].location)
|
708
|
-
|
709
639
|
result = val[0]
|
710
640
|
result.function_specifier = val[1]
|
711
641
|
result.tail_token = val[1]
|
@@ -716,13 +646,11 @@ init_declarator_list
|
|
716
646
|
: init_declarator
|
717
647
|
{
|
718
648
|
checkpoint(val[0].location)
|
719
|
-
|
720
649
|
result = val
|
721
650
|
}
|
722
651
|
| init_declarator_list "," init_declarator
|
723
652
|
{
|
724
653
|
checkpoint(val[0].first.location)
|
725
|
-
|
726
654
|
result = val[0].push(val[2])
|
727
655
|
}
|
728
656
|
;
|
@@ -731,7 +659,6 @@ init_declarator
|
|
731
659
|
: declarator
|
732
660
|
{
|
733
661
|
checkpoint(val[0].location)
|
734
|
-
|
735
662
|
result = InitDeclarator.new(val[0], nil)
|
736
663
|
result.head_token = val[0].head_token
|
737
664
|
result.tail_token = val[0].tail_token
|
@@ -739,7 +666,6 @@ init_declarator
|
|
739
666
|
| declarator "=" initializer
|
740
667
|
{
|
741
668
|
checkpoint(val[0].location)
|
742
|
-
|
743
669
|
result = InitDeclarator.new(val[0], val[2])
|
744
670
|
result.head_token = val[0].head_token
|
745
671
|
result.tail_token = val[2].tail_token
|
@@ -758,91 +684,78 @@ type_specifier
|
|
758
684
|
: VOID
|
759
685
|
{
|
760
686
|
checkpoint(val[0].location)
|
761
|
-
|
762
687
|
result = StandardTypeSpecifier.new(val[0])
|
763
688
|
result.head_token = result.tail_token = val[0]
|
764
689
|
}
|
765
690
|
| CHAR
|
766
691
|
{
|
767
692
|
checkpoint(val[0].location)
|
768
|
-
|
769
693
|
result = StandardTypeSpecifier.new(val[0])
|
770
694
|
result.head_token = result.tail_token = val[0]
|
771
695
|
}
|
772
696
|
| SHORT
|
773
697
|
{
|
774
698
|
checkpoint(val[0].location)
|
775
|
-
|
776
699
|
result = StandardTypeSpecifier.new(val[0])
|
777
700
|
result.head_token = result.tail_token = val[0]
|
778
701
|
}
|
779
702
|
| INT
|
780
703
|
{
|
781
704
|
checkpoint(val[0].location)
|
782
|
-
|
783
705
|
result = StandardTypeSpecifier.new(val[0])
|
784
706
|
result.head_token = result.tail_token = val[0]
|
785
707
|
}
|
786
708
|
| LONG
|
787
709
|
{
|
788
710
|
checkpoint(val[0].location)
|
789
|
-
|
790
711
|
result = StandardTypeSpecifier.new(val[0])
|
791
712
|
result.head_token = result.tail_token = val[0]
|
792
713
|
}
|
793
714
|
| FLOAT
|
794
715
|
{
|
795
716
|
checkpoint(val[0].location)
|
796
|
-
|
797
717
|
result = StandardTypeSpecifier.new(val[0])
|
798
718
|
result.head_token = result.tail_token = val[0]
|
799
719
|
}
|
800
720
|
| DOUBLE
|
801
721
|
{
|
802
722
|
checkpoint(val[0].location)
|
803
|
-
|
804
723
|
result = StandardTypeSpecifier.new(val[0])
|
805
724
|
result.head_token = result.tail_token = val[0]
|
806
725
|
}
|
807
726
|
| SIGNED
|
808
727
|
{
|
809
728
|
checkpoint(val[0].location)
|
810
|
-
|
811
729
|
result = StandardTypeSpecifier.new(val[0])
|
812
730
|
result.head_token = result.tail_token = val[0]
|
813
731
|
}
|
814
732
|
| UNSIGNED
|
815
733
|
{
|
816
734
|
checkpoint(val[0].location)
|
817
|
-
|
818
735
|
result = StandardTypeSpecifier.new(val[0])
|
819
736
|
result.head_token = result.tail_token = val[0]
|
820
737
|
}
|
821
738
|
| BOOL
|
822
739
|
{
|
823
740
|
checkpoint(val[0].location)
|
824
|
-
|
825
741
|
result = StandardTypeSpecifier.new(val[0])
|
826
742
|
result.head_token = result.tail_token = val[0]
|
827
743
|
}
|
828
744
|
| COMPLEX
|
829
745
|
{
|
830
746
|
checkpoint(val[0].location)
|
831
|
-
|
832
747
|
result = StandardTypeSpecifier.new(val[0])
|
833
748
|
result.head_token = result.tail_token = val[0]
|
834
749
|
}
|
835
750
|
| IMAGINARY
|
836
751
|
{
|
837
752
|
checkpoint(val[0].location)
|
838
|
-
|
839
753
|
result = StandardTypeSpecifier.new(val[0])
|
840
754
|
result.head_token = result.tail_token = val[0]
|
841
755
|
}
|
842
756
|
| TYPEDEF_NAME
|
843
757
|
{
|
844
758
|
checkpoint(val[0].location)
|
845
|
-
|
846
759
|
result = TypedefTypeSpecifier.new(val[0])
|
847
760
|
result.head_token = result.tail_token = val[0]
|
848
761
|
}
|
@@ -851,7 +764,6 @@ type_specifier
|
|
851
764
|
| TYPEOF "(" constant_expression ")"
|
852
765
|
{
|
853
766
|
checkpoint(val[0].location)
|
854
|
-
|
855
767
|
val[2].full = true
|
856
768
|
result = TypeofTypeSpecifier.new(val[2], nil)
|
857
769
|
result.head_token = val[0]
|
@@ -860,7 +772,6 @@ type_specifier
|
|
860
772
|
| TYPEOF "(" type_name ")"
|
861
773
|
{
|
862
774
|
checkpoint(val[0].location)
|
863
|
-
|
864
775
|
result = TypeofTypeSpecifier.new(nil, val[2])
|
865
776
|
result.head_token = val[0]
|
866
777
|
result.tail_token = val[3]
|
@@ -871,7 +782,6 @@ struct_or_union_specifier
|
|
871
782
|
: STRUCT IDENTIFIER "{" struct_declaration_list "}"
|
872
783
|
{
|
873
784
|
checkpoint(val[0].location)
|
874
|
-
|
875
785
|
result = StructSpecifier.new(val[1], val[3])
|
876
786
|
result.head_token = val[0]
|
877
787
|
result.tail_token = val[4]
|
@@ -879,7 +789,6 @@ struct_or_union_specifier
|
|
879
789
|
| STRUCT IDENTIFIER "{" "}"
|
880
790
|
{
|
881
791
|
checkpoint(val[0].location)
|
882
|
-
|
883
792
|
result = StructSpecifier.new(val[1], [])
|
884
793
|
result.head_token = val[0]
|
885
794
|
result.tail_token = val[3]
|
@@ -887,7 +796,6 @@ struct_or_union_specifier
|
|
887
796
|
| UNION IDENTIFIER "{" struct_declaration_list "}"
|
888
797
|
{
|
889
798
|
checkpoint(val[0].location)
|
890
|
-
|
891
799
|
result = UnionSpecifier.new(val[1], val[3])
|
892
800
|
result.head_token = val[0]
|
893
801
|
result.tail_token = val[4]
|
@@ -895,7 +803,6 @@ struct_or_union_specifier
|
|
895
803
|
| UNION IDENTIFIER "{" "}"
|
896
804
|
{
|
897
805
|
checkpoint(val[0].location)
|
898
|
-
|
899
806
|
result = UnionSpecifier.new(val[1], [])
|
900
807
|
result.head_token = val[0]
|
901
808
|
result.tail_token = val[3]
|
@@ -903,39 +810,34 @@ struct_or_union_specifier
|
|
903
810
|
| STRUCT "{" struct_declaration_list "}"
|
904
811
|
{
|
905
812
|
checkpoint(val[0].location)
|
906
|
-
|
907
|
-
result = StructSpecifier.new(create_unnamed_tag_name(val[0]), val[2])
|
813
|
+
result = StructSpecifier.new(create_anon_tag_name(val[0]), val[2])
|
908
814
|
result.head_token = val[0]
|
909
815
|
result.tail_token = val[3]
|
910
816
|
}
|
911
817
|
| STRUCT "{" "}"
|
912
818
|
{
|
913
819
|
checkpoint(val[0].location)
|
914
|
-
|
915
|
-
result = StructSpecifier.new(create_unnamed_tag_name(val[0]), [])
|
820
|
+
result = StructSpecifier.new(create_anon_tag_name(val[0]), [])
|
916
821
|
result.head_token = val[0]
|
917
822
|
result.tail_token = val[2]
|
918
823
|
}
|
919
824
|
| UNION "{" struct_declaration_list "}"
|
920
825
|
{
|
921
826
|
checkpoint(val[0].location)
|
922
|
-
|
923
|
-
result = UnionSpecifier.new(create_unnamed_tag_name(val[0]), val[2])
|
827
|
+
result = UnionSpecifier.new(create_anon_tag_name(val[0]), val[2])
|
924
828
|
result.head_token = val[0]
|
925
829
|
result.tail_token = val[3]
|
926
830
|
}
|
927
831
|
| UNION "{" "}"
|
928
832
|
{
|
929
833
|
checkpoint(val[0].location)
|
930
|
-
|
931
|
-
result = UnionSpecifier.new(create_unnamed_tag_name(val[0]), [])
|
834
|
+
result = UnionSpecifier.new(create_anon_tag_name(val[0]), [])
|
932
835
|
result.head_token = val[0]
|
933
836
|
result.tail_token = val[2]
|
934
837
|
}
|
935
838
|
| STRUCT IDENTIFIER
|
936
839
|
{
|
937
840
|
checkpoint(val[0].location)
|
938
|
-
|
939
841
|
result = StructSpecifier.new(val[1], nil)
|
940
842
|
result.head_token = val[0]
|
941
843
|
result.tail_token = val[1]
|
@@ -943,7 +845,6 @@ struct_or_union_specifier
|
|
943
845
|
| UNION IDENTIFIER
|
944
846
|
{
|
945
847
|
checkpoint(val[0].location)
|
946
|
-
|
947
848
|
result = UnionSpecifier.new(val[1], nil)
|
948
849
|
result.head_token = val[0]
|
949
850
|
result.tail_token = val[1]
|
@@ -954,13 +855,11 @@ struct_declaration_list
|
|
954
855
|
: struct_declaration
|
955
856
|
{
|
956
857
|
checkpoint(val[0].location)
|
957
|
-
|
958
858
|
result = val
|
959
859
|
}
|
960
860
|
| struct_declaration_list struct_declaration
|
961
861
|
{
|
962
862
|
checkpoint(val[0].first.location)
|
963
|
-
|
964
863
|
result = val[0].push(val[1])
|
965
864
|
}
|
966
865
|
;
|
@@ -969,9 +868,7 @@ struct_declaration
|
|
969
868
|
: specifier_qualifier_list ";"
|
970
869
|
{
|
971
870
|
checkpoint(val[0].location)
|
972
|
-
|
973
871
|
@lexer.start_identifier_translation
|
974
|
-
|
975
872
|
result = StructDeclaration.new(val[0], [])
|
976
873
|
result.head_token = val[0].head_token
|
977
874
|
result.tail_token = val[1]
|
@@ -980,7 +877,6 @@ struct_declaration
|
|
980
877
|
struct_declarator_list ";"
|
981
878
|
{
|
982
879
|
checkpoint(val[0].location)
|
983
|
-
|
984
880
|
result = StructDeclaration.new(val[0], val[2])
|
985
881
|
result.head_token = val[0].head_token
|
986
882
|
result.tail_token = val[3]
|
@@ -991,9 +887,7 @@ specifier_qualifier_list
|
|
991
887
|
: specifier_qualifier_list type_specifier
|
992
888
|
{
|
993
889
|
checkpoint(val[0].location)
|
994
|
-
|
995
890
|
@lexer.stop_identifier_translation
|
996
|
-
|
997
891
|
result = val[0]
|
998
892
|
result.type_specifiers.push(val[1])
|
999
893
|
result.tail_token = val[1].tail_token
|
@@ -1001,9 +895,7 @@ specifier_qualifier_list
|
|
1001
895
|
| type_specifier
|
1002
896
|
{
|
1003
897
|
checkpoint(val[0].location)
|
1004
|
-
|
1005
898
|
@lexer.stop_identifier_translation
|
1006
|
-
|
1007
899
|
result = SpecifierQualifierList.new
|
1008
900
|
result.type_specifiers.push(val[0])
|
1009
901
|
result.head_token = val[0].head_token
|
@@ -1012,7 +904,6 @@ specifier_qualifier_list
|
|
1012
904
|
| specifier_qualifier_list type_qualifier
|
1013
905
|
{
|
1014
906
|
checkpoint(val[0].location)
|
1015
|
-
|
1016
907
|
result = val[0]
|
1017
908
|
result.type_qualifiers.push(val[1])
|
1018
909
|
result.tail_token = val[1]
|
@@ -1020,7 +911,6 @@ specifier_qualifier_list
|
|
1020
911
|
| type_qualifier
|
1021
912
|
{
|
1022
913
|
checkpoint(val[0].location)
|
1023
|
-
|
1024
914
|
result = SpecifierQualifierList.new
|
1025
915
|
result.type_qualifiers.push(val[0])
|
1026
916
|
result.head_token = result.tail_token = val[0]
|
@@ -1031,13 +921,11 @@ struct_declarator_list
|
|
1031
921
|
: struct_declarator
|
1032
922
|
{
|
1033
923
|
checkpoint(val[0].location)
|
1034
|
-
|
1035
924
|
result = val
|
1036
925
|
}
|
1037
926
|
| struct_declarator_list "," struct_declarator
|
1038
927
|
{
|
1039
928
|
checkpoint(val[0].first.location)
|
1040
|
-
|
1041
929
|
result = val[0].push(val[2])
|
1042
930
|
}
|
1043
931
|
;
|
@@ -1046,7 +934,6 @@ struct_declarator
|
|
1046
934
|
: declarator
|
1047
935
|
{
|
1048
936
|
checkpoint(val[0].location)
|
1049
|
-
|
1050
937
|
result = StructDeclarator.new(val[0], nil)
|
1051
938
|
result.head_token = val[0].head_token
|
1052
939
|
result.tail_token = val[0].tail_token
|
@@ -1054,7 +941,6 @@ struct_declarator
|
|
1054
941
|
| ":" constant_expression
|
1055
942
|
{
|
1056
943
|
checkpoint(val[0].location)
|
1057
|
-
|
1058
944
|
val[1].full = true
|
1059
945
|
result = StructDeclarator.new(nil, val[1])
|
1060
946
|
result.head_token = val[0]
|
@@ -1063,7 +949,6 @@ struct_declarator
|
|
1063
949
|
| declarator ":" constant_expression
|
1064
950
|
{
|
1065
951
|
checkpoint(val[0].location)
|
1066
|
-
|
1067
952
|
val[2].full = true
|
1068
953
|
result = StructDeclarator.new(val[0], val[2])
|
1069
954
|
result.head_token = val[0].head_token
|
@@ -1075,15 +960,13 @@ enum_specifier
|
|
1075
960
|
: ENUM "{" enumerator_list "}"
|
1076
961
|
{
|
1077
962
|
checkpoint(val[0].location)
|
1078
|
-
|
1079
|
-
result = EnumSpecifier.new(create_unnamed_tag_name(val[0]), val[2])
|
963
|
+
result = EnumSpecifier.new(create_anon_tag_name(val[0]), val[2])
|
1080
964
|
result.head_token = val[0]
|
1081
965
|
result.tail_token = val[3]
|
1082
966
|
}
|
1083
967
|
| ENUM IDENTIFIER "{" enumerator_list "}"
|
1084
968
|
{
|
1085
969
|
checkpoint(val[0].location)
|
1086
|
-
|
1087
970
|
result = EnumSpecifier.new(val[1], val[3])
|
1088
971
|
result.head_token = val[0]
|
1089
972
|
result.tail_token = val[4]
|
@@ -1091,16 +974,14 @@ enum_specifier
|
|
1091
974
|
| ENUM "{" enumerator_list "," "}"
|
1092
975
|
{
|
1093
976
|
checkpoint(val[0].location)
|
1094
|
-
|
1095
|
-
|
1096
|
-
val[3])
|
977
|
+
result = EnumSpecifier.new(create_anon_tag_name(val[0]),
|
978
|
+
val[2], val[3])
|
1097
979
|
result.head_token = val[0]
|
1098
980
|
result.tail_token = val[4]
|
1099
981
|
}
|
1100
982
|
| ENUM IDENTIFIER "{" enumerator_list "," "}"
|
1101
983
|
{
|
1102
984
|
checkpoint(val[0].location)
|
1103
|
-
|
1104
985
|
result = EnumSpecifier.new(val[1], val[3], val[4])
|
1105
986
|
result.head_token = val[0]
|
1106
987
|
result.tail_token = val[5]
|
@@ -1108,7 +989,6 @@ enum_specifier
|
|
1108
989
|
| ENUM IDENTIFIER
|
1109
990
|
{
|
1110
991
|
checkpoint(val[0].location)
|
1111
|
-
|
1112
992
|
result = EnumSpecifier.new(val[1], nil)
|
1113
993
|
result.head_token = val[0]
|
1114
994
|
result.tail_token = val[1]
|
@@ -1119,13 +999,11 @@ enumerator_list
|
|
1119
999
|
: enumerator
|
1120
1000
|
{
|
1121
1001
|
checkpoint(val[0].location)
|
1122
|
-
|
1123
1002
|
result = val
|
1124
1003
|
}
|
1125
1004
|
| enumerator_list "," enumerator
|
1126
1005
|
{
|
1127
1006
|
checkpoint(val[0].first.location)
|
1128
|
-
|
1129
1007
|
result = val[0].push(val[2])
|
1130
1008
|
}
|
1131
1009
|
;
|
@@ -1134,18 +1012,16 @@ enumerator
|
|
1134
1012
|
: IDENTIFIER
|
1135
1013
|
{
|
1136
1014
|
checkpoint(val[0].location)
|
1137
|
-
|
1138
|
-
|
1139
|
-
result = Enumerator.new(val[0], nil, symbol)
|
1015
|
+
sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0])
|
1016
|
+
result = Enumerator.new(val[0], nil, sym)
|
1140
1017
|
result.head_token = result.tail_token = val[0]
|
1141
1018
|
}
|
1142
1019
|
| IDENTIFIER "=" constant_expression
|
1143
1020
|
{
|
1144
1021
|
checkpoint(val[0].location)
|
1145
|
-
|
1146
1022
|
val[2].full = true
|
1147
|
-
|
1148
|
-
result = Enumerator.new(val[0], val[2],
|
1023
|
+
sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0])
|
1024
|
+
result = Enumerator.new(val[0], val[2], sym)
|
1149
1025
|
result.head_token = val[0]
|
1150
1026
|
result.tail_token = val[2].tail_token
|
1151
1027
|
}
|
@@ -1165,7 +1041,6 @@ declarator
|
|
1165
1041
|
: pointer direct_declarator
|
1166
1042
|
{
|
1167
1043
|
checkpoint(val[0].first.location)
|
1168
|
-
|
1169
1044
|
result = val[1]
|
1170
1045
|
result.pointer = val[0]
|
1171
1046
|
result.head_token = val[0].first
|
@@ -1174,7 +1049,6 @@ declarator
|
|
1174
1049
|
| direct_declarator
|
1175
1050
|
{
|
1176
1051
|
checkpoint(val[0].location)
|
1177
|
-
|
1178
1052
|
result = val[0]
|
1179
1053
|
result.full = true
|
1180
1054
|
}
|
@@ -1184,16 +1058,13 @@ direct_declarator
|
|
1184
1058
|
: IDENTIFIER
|
1185
1059
|
{
|
1186
1060
|
checkpoint(val[0].location)
|
1187
|
-
|
1188
1061
|
@lexer.start_identifier_translation
|
1189
|
-
|
1190
1062
|
result = IdentifierDeclarator.new(val[0])
|
1191
1063
|
result.head_token = result.tail_token = val[0]
|
1192
1064
|
}
|
1193
1065
|
| "(" declarator ")"
|
1194
1066
|
{
|
1195
1067
|
checkpoint(val[0].location)
|
1196
|
-
|
1197
1068
|
result = GroupedDeclarator.new(val[1])
|
1198
1069
|
result.head_token = val[0]
|
1199
1070
|
result.tail_token = val[2]
|
@@ -1201,7 +1072,6 @@ direct_declarator
|
|
1201
1072
|
| direct_declarator "[" type_qualifier_list assignment_expression "]"
|
1202
1073
|
{
|
1203
1074
|
checkpoint(val[0].location)
|
1204
|
-
|
1205
1075
|
val[3].full = true
|
1206
1076
|
result = ArrayDeclarator.new(val[0], val[3])
|
1207
1077
|
result.head_token = val[0].head_token
|
@@ -1210,7 +1080,6 @@ direct_declarator
|
|
1210
1080
|
| direct_declarator "[" type_qualifier_list "]"
|
1211
1081
|
{
|
1212
1082
|
checkpoint(val[0].location)
|
1213
|
-
|
1214
1083
|
result = ArrayDeclarator.new(val[0], nil)
|
1215
1084
|
result.head_token = val[0].head_token
|
1216
1085
|
result.tail_token = val[3]
|
@@ -1218,7 +1087,6 @@ direct_declarator
|
|
1218
1087
|
| direct_declarator "[" assignment_expression "]"
|
1219
1088
|
{
|
1220
1089
|
checkpoint(val[0].location)
|
1221
|
-
|
1222
1090
|
val[2].full = true
|
1223
1091
|
result = ArrayDeclarator.new(val[0], val[2])
|
1224
1092
|
result.head_token = val[0].head_token
|
@@ -1228,7 +1096,6 @@ direct_declarator
|
|
1228
1096
|
"[" STATIC type_qualifier_list assignment_expression "]"
|
1229
1097
|
{
|
1230
1098
|
checkpoint(val[0].location)
|
1231
|
-
|
1232
1099
|
val[4].full = true
|
1233
1100
|
result = ArrayDeclarator.new(val[0], val[4])
|
1234
1101
|
result.head_token = val[0].head_token
|
@@ -1238,7 +1105,6 @@ direct_declarator
|
|
1238
1105
|
"[" type_qualifier_list STATIC assignment_expression "]"
|
1239
1106
|
{
|
1240
1107
|
checkpoint(val[0].location)
|
1241
|
-
|
1242
1108
|
val[4].full = true
|
1243
1109
|
result = ArrayDeclarator.new(val[0], val[4])
|
1244
1110
|
result.head_token = val[0].head_token
|
@@ -1247,7 +1113,6 @@ direct_declarator
|
|
1247
1113
|
| direct_declarator "[" type_qualifier_list "*" "]"
|
1248
1114
|
{
|
1249
1115
|
checkpoint(val[0].location)
|
1250
|
-
|
1251
1116
|
result = ArrayDeclarator.new(val[0], nil)
|
1252
1117
|
result.head_token = val[0].head_token
|
1253
1118
|
result.tail_token = val[4]
|
@@ -1255,7 +1120,6 @@ direct_declarator
|
|
1255
1120
|
| direct_declarator "[" "*" "]"
|
1256
1121
|
{
|
1257
1122
|
checkpoint(val[0].location)
|
1258
|
-
|
1259
1123
|
result = ArrayDeclarator.new(val[0], nil)
|
1260
1124
|
result.head_token = val[0].head_token
|
1261
1125
|
result.tail_token = val[3]
|
@@ -1263,7 +1127,6 @@ direct_declarator
|
|
1263
1127
|
| direct_declarator "[" "]"
|
1264
1128
|
{
|
1265
1129
|
checkpoint(val[0].location)
|
1266
|
-
|
1267
1130
|
result = ArrayDeclarator.new(val[0], nil)
|
1268
1131
|
result.head_token = val[0].head_token
|
1269
1132
|
result.tail_token = val[2]
|
@@ -1271,7 +1134,6 @@ direct_declarator
|
|
1271
1134
|
| direct_declarator "(" parameter_type_list ")"
|
1272
1135
|
{
|
1273
1136
|
checkpoint(val[0].location)
|
1274
|
-
|
1275
1137
|
result = AnsiFunctionDeclarator.new(val[0], val[2])
|
1276
1138
|
result.head_token = val[0].head_token
|
1277
1139
|
result.tail_token = val[3]
|
@@ -1279,7 +1141,6 @@ direct_declarator
|
|
1279
1141
|
| direct_declarator "(" identifier_list ")"
|
1280
1142
|
{
|
1281
1143
|
checkpoint(val[0].location)
|
1282
|
-
|
1283
1144
|
result = KandRFunctionDeclarator.new(val[0], val[2])
|
1284
1145
|
result.head_token = val[0].head_token
|
1285
1146
|
result.tail_token = val[3]
|
@@ -1287,7 +1148,6 @@ direct_declarator
|
|
1287
1148
|
| direct_declarator "(" ")"
|
1288
1149
|
{
|
1289
1150
|
checkpoint(val[0].location)
|
1290
|
-
|
1291
1151
|
result = AbbreviatedFunctionDeclarator.new(val[0])
|
1292
1152
|
result.head_token = val[0].head_token
|
1293
1153
|
result.tail_token = val[2]
|
@@ -1298,25 +1158,21 @@ pointer
|
|
1298
1158
|
: "*"
|
1299
1159
|
{
|
1300
1160
|
checkpoint(val[0].location)
|
1301
|
-
|
1302
1161
|
result = val
|
1303
1162
|
}
|
1304
1163
|
| "*" type_qualifier_list
|
1305
1164
|
{
|
1306
1165
|
checkpoint(val[0].location)
|
1307
|
-
|
1308
1166
|
result = val[1].unshift(val[0])
|
1309
1167
|
}
|
1310
1168
|
| "*" pointer
|
1311
1169
|
{
|
1312
1170
|
checkpoint(val[0].location)
|
1313
|
-
|
1314
1171
|
result = val[1].unshift(val[0])
|
1315
1172
|
}
|
1316
1173
|
| "*" type_qualifier_list pointer
|
1317
1174
|
{
|
1318
1175
|
checkpoint(val[0].location)
|
1319
|
-
|
1320
1176
|
result = val[1].unshift(val[0]).concat(val[2])
|
1321
1177
|
}
|
1322
1178
|
;
|
@@ -1325,13 +1181,11 @@ type_qualifier_list
|
|
1325
1181
|
: type_qualifier
|
1326
1182
|
{
|
1327
1183
|
checkpoint(val[0].location)
|
1328
|
-
|
1329
1184
|
result = val
|
1330
1185
|
}
|
1331
1186
|
| type_qualifier_list type_qualifier
|
1332
1187
|
{
|
1333
1188
|
checkpoint(val[0].first.location)
|
1334
|
-
|
1335
1189
|
result = val[0].push(val[1])
|
1336
1190
|
}
|
1337
1191
|
;
|
@@ -1340,7 +1194,6 @@ parameter_type_list
|
|
1340
1194
|
: parameter_list
|
1341
1195
|
{
|
1342
1196
|
checkpoint(val[0].first.location)
|
1343
|
-
|
1344
1197
|
result = ParameterTypeList.new(val[0], false)
|
1345
1198
|
result.head_token = val[0].first.head_token
|
1346
1199
|
result.tail_token = val[0].last.tail_token
|
@@ -1348,7 +1201,6 @@ parameter_type_list
|
|
1348
1201
|
| parameter_list "," "..."
|
1349
1202
|
{
|
1350
1203
|
checkpoint(val[0].first.location)
|
1351
|
-
|
1352
1204
|
result = ParameterTypeList.new(val[0], true)
|
1353
1205
|
result.head_token = val[0].first.head_token
|
1354
1206
|
result.tail_token = val[2]
|
@@ -1359,13 +1211,11 @@ parameter_list
|
|
1359
1211
|
: parameter_declaration
|
1360
1212
|
{
|
1361
1213
|
checkpoint(val[0].location)
|
1362
|
-
|
1363
1214
|
result = val
|
1364
1215
|
}
|
1365
1216
|
| parameter_list "," parameter_declaration
|
1366
1217
|
{
|
1367
1218
|
checkpoint(val[0].first.location)
|
1368
|
-
|
1369
1219
|
result = val[0].push(val[2])
|
1370
1220
|
}
|
1371
1221
|
;
|
@@ -1374,7 +1224,6 @@ parameter_declaration
|
|
1374
1224
|
: declaration_specifiers declarator
|
1375
1225
|
{
|
1376
1226
|
checkpoint(val[0].location)
|
1377
|
-
|
1378
1227
|
result = ParameterDeclaration.new(val[0], val[1])
|
1379
1228
|
result.head_token = val[0].head_token
|
1380
1229
|
result.tail_token = val[1].tail_token
|
@@ -1382,7 +1231,6 @@ parameter_declaration
|
|
1382
1231
|
| declaration_specifiers abstract_declarator
|
1383
1232
|
{
|
1384
1233
|
checkpoint(val[0].location)
|
1385
|
-
|
1386
1234
|
result = ParameterDeclaration.new(val[0], val[1])
|
1387
1235
|
result.head_token = val[0].head_token
|
1388
1236
|
result.tail_token = val[1].tail_token
|
@@ -1390,9 +1238,7 @@ parameter_declaration
|
|
1390
1238
|
| declaration_specifiers
|
1391
1239
|
{
|
1392
1240
|
checkpoint(val[0].location)
|
1393
|
-
|
1394
1241
|
@lexer.start_identifier_translation
|
1395
|
-
|
1396
1242
|
result = ParameterDeclaration.new(val[0], nil)
|
1397
1243
|
result.head_token = val[0].head_token
|
1398
1244
|
result.tail_token = val[0].tail_token
|
@@ -1403,13 +1249,11 @@ identifier_list
|
|
1403
1249
|
: IDENTIFIER
|
1404
1250
|
{
|
1405
1251
|
checkpoint(val[0].location)
|
1406
|
-
|
1407
1252
|
result = val
|
1408
1253
|
}
|
1409
1254
|
| identifier_list "," IDENTIFIER
|
1410
1255
|
{
|
1411
1256
|
checkpoint(val[0].first.location)
|
1412
|
-
|
1413
1257
|
result = val[0].push(val[2])
|
1414
1258
|
}
|
1415
1259
|
;
|
@@ -1418,18 +1262,15 @@ type_name
|
|
1418
1262
|
: specifier_qualifier_list
|
1419
1263
|
{
|
1420
1264
|
checkpoint(val[0].location)
|
1421
|
-
|
1422
1265
|
@lexer.start_identifier_translation
|
1423
|
-
|
1424
|
-
result = TypeName.new(val[0], nil, @symbol_table)
|
1266
|
+
result = TypeName.new(val[0], nil, @sym_tbl)
|
1425
1267
|
result.head_token = val[0].head_token
|
1426
1268
|
result.tail_token = val[0].tail_token
|
1427
1269
|
}
|
1428
1270
|
| specifier_qualifier_list abstract_declarator
|
1429
1271
|
{
|
1430
1272
|
checkpoint(val[0].location)
|
1431
|
-
|
1432
|
-
result = TypeName.new(val[0], val[1], @symbol_table)
|
1273
|
+
result = TypeName.new(val[0], val[1], @sym_tbl)
|
1433
1274
|
result.head_token = val[0].head_token
|
1434
1275
|
result.tail_token = val[1].tail_token
|
1435
1276
|
}
|
@@ -1439,9 +1280,7 @@ abstract_declarator
|
|
1439
1280
|
: pointer
|
1440
1281
|
{
|
1441
1282
|
checkpoint(val[0].first.location)
|
1442
|
-
|
1443
1283
|
@lexer.start_identifier_translation
|
1444
|
-
|
1445
1284
|
result = PointerAbstractDeclarator.new(nil, val[0])
|
1446
1285
|
result.head_token = val[0].first
|
1447
1286
|
result.tail_token = val[0].last
|
@@ -1450,7 +1289,6 @@ abstract_declarator
|
|
1450
1289
|
| pointer direct_abstract_declarator
|
1451
1290
|
{
|
1452
1291
|
checkpoint(val[0].first.location)
|
1453
|
-
|
1454
1292
|
result = PointerAbstractDeclarator.new(val[1], val[0])
|
1455
1293
|
result.head_token = val[0].first
|
1456
1294
|
result.tail_token = val[1].tail_token
|
@@ -1459,7 +1297,6 @@ abstract_declarator
|
|
1459
1297
|
| direct_abstract_declarator
|
1460
1298
|
{
|
1461
1299
|
checkpoint(val[0].location)
|
1462
|
-
|
1463
1300
|
result = val[0]
|
1464
1301
|
result.full = true
|
1465
1302
|
}
|
@@ -1469,9 +1306,7 @@ direct_abstract_declarator
|
|
1469
1306
|
: "(" abstract_declarator ")"
|
1470
1307
|
{
|
1471
1308
|
checkpoint(val[0].location)
|
1472
|
-
|
1473
1309
|
@lexer.start_identifier_translation
|
1474
|
-
|
1475
1310
|
result = GroupedAbstractDeclarator.new(val[1])
|
1476
1311
|
result.head_token = val[0]
|
1477
1312
|
result.tail_token = val[2]
|
@@ -1479,9 +1314,7 @@ direct_abstract_declarator
|
|
1479
1314
|
| "[" "]"
|
1480
1315
|
{
|
1481
1316
|
checkpoint(val[0].location)
|
1482
|
-
|
1483
1317
|
@lexer.start_identifier_translation
|
1484
|
-
|
1485
1318
|
result = ArrayAbstractDeclarator.new(nil, nil)
|
1486
1319
|
result.head_token = val[0]
|
1487
1320
|
result.tail_token = val[1]
|
@@ -1489,9 +1322,7 @@ direct_abstract_declarator
|
|
1489
1322
|
| "[" assignment_expression "]"
|
1490
1323
|
{
|
1491
1324
|
checkpoint(val[0].location)
|
1492
|
-
|
1493
1325
|
@lexer.start_identifier_translation
|
1494
|
-
|
1495
1326
|
val[1].full = true
|
1496
1327
|
result = ArrayAbstractDeclarator.new(nil, val[1])
|
1497
1328
|
result.head_token = val[0]
|
@@ -1500,7 +1331,6 @@ direct_abstract_declarator
|
|
1500
1331
|
| direct_abstract_declarator "[" "]"
|
1501
1332
|
{
|
1502
1333
|
checkpoint(val[0].location)
|
1503
|
-
|
1504
1334
|
result = ArrayAbstractDeclarator.new(val[0], nil)
|
1505
1335
|
result.head_token = val[0].head_token
|
1506
1336
|
result.tail_token = val[2]
|
@@ -1508,7 +1338,6 @@ direct_abstract_declarator
|
|
1508
1338
|
| direct_abstract_declarator "[" assignment_expression "]"
|
1509
1339
|
{
|
1510
1340
|
checkpoint(val[0].location)
|
1511
|
-
|
1512
1341
|
val[2].full = true
|
1513
1342
|
result = ArrayAbstractDeclarator.new(val[0], val[2])
|
1514
1343
|
result.head_token = val[0].head_token
|
@@ -1517,9 +1346,7 @@ direct_abstract_declarator
|
|
1517
1346
|
| "[" "*" "]"
|
1518
1347
|
{
|
1519
1348
|
checkpoint(val[0].location)
|
1520
|
-
|
1521
1349
|
@lexer.start_identifier_translation
|
1522
|
-
|
1523
1350
|
result = ArrayAbstractDeclarator.new(nil, nil)
|
1524
1351
|
result.head_token = val[0]
|
1525
1352
|
result.tail_token = val[2]
|
@@ -1527,7 +1354,6 @@ direct_abstract_declarator
|
|
1527
1354
|
| direct_abstract_declarator "[" "*" "]"
|
1528
1355
|
{
|
1529
1356
|
checkpoint(val[0].location)
|
1530
|
-
|
1531
1357
|
result = ArrayAbstractDeclarator.new(val[0], nil)
|
1532
1358
|
result.head_token = val[0].head_token
|
1533
1359
|
result.tail_token = val[3]
|
@@ -1535,9 +1361,7 @@ direct_abstract_declarator
|
|
1535
1361
|
| "(" ")"
|
1536
1362
|
{
|
1537
1363
|
checkpoint(val[0].location)
|
1538
|
-
|
1539
1364
|
@lexer.start_identifier_translation
|
1540
|
-
|
1541
1365
|
result = FunctionAbstractDeclarator.new(nil, nil)
|
1542
1366
|
result.head_token = val[0]
|
1543
1367
|
result.tail_token = val[1]
|
@@ -1545,7 +1369,6 @@ direct_abstract_declarator
|
|
1545
1369
|
| "(" { @lexer.start_identifier_translation } parameter_type_list ")"
|
1546
1370
|
{
|
1547
1371
|
checkpoint(val[0].location)
|
1548
|
-
|
1549
1372
|
result = FunctionAbstractDeclarator.new(nil, val[2])
|
1550
1373
|
result.head_token = val[0]
|
1551
1374
|
result.tail_token = val[3]
|
@@ -1553,9 +1376,7 @@ direct_abstract_declarator
|
|
1553
1376
|
| direct_abstract_declarator "(" ")"
|
1554
1377
|
{
|
1555
1378
|
checkpoint(val[0].location)
|
1556
|
-
|
1557
1379
|
@lexer.start_identifier_translation
|
1558
|
-
|
1559
1380
|
result = FunctionAbstractDeclarator.new(val[0], nil)
|
1560
1381
|
result.head_token = val[0].head_token
|
1561
1382
|
result.tail_token = val[2]
|
@@ -1563,7 +1384,6 @@ direct_abstract_declarator
|
|
1563
1384
|
| direct_abstract_declarator "(" parameter_type_list ")"
|
1564
1385
|
{
|
1565
1386
|
checkpoint(val[0].location)
|
1566
|
-
|
1567
1387
|
result = FunctionAbstractDeclarator.new(val[0], val[2])
|
1568
1388
|
result.head_token = val[0].head_token
|
1569
1389
|
result.tail_token = val[3]
|
@@ -1574,7 +1394,6 @@ initializer
|
|
1574
1394
|
: assignment_expression
|
1575
1395
|
{
|
1576
1396
|
checkpoint(val[0].location)
|
1577
|
-
|
1578
1397
|
val[0].full = true
|
1579
1398
|
result = Initializer.new(val[0], nil)
|
1580
1399
|
result.head_token = val[0].head_token
|
@@ -1583,7 +1402,6 @@ initializer
|
|
1583
1402
|
| "{" "}"
|
1584
1403
|
{
|
1585
1404
|
checkpoint(val[0].location)
|
1586
|
-
|
1587
1405
|
result = Initializer.new(nil, nil)
|
1588
1406
|
result.head_token = val[0]
|
1589
1407
|
result.tail_token = val[1]
|
@@ -1591,7 +1409,6 @@ initializer
|
|
1591
1409
|
| "{" initializer_list "}"
|
1592
1410
|
{
|
1593
1411
|
checkpoint(val[0].location)
|
1594
|
-
|
1595
1412
|
result = Initializer.new(nil, val[1])
|
1596
1413
|
result.head_token = val[0]
|
1597
1414
|
result.tail_token = val[2]
|
@@ -1599,7 +1416,6 @@ initializer
|
|
1599
1416
|
| "{" initializer_list "," "}"
|
1600
1417
|
{
|
1601
1418
|
checkpoint(val[0].location)
|
1602
|
-
|
1603
1419
|
result = Initializer.new(nil, val[1])
|
1604
1420
|
result.head_token = val[0]
|
1605
1421
|
result.tail_token = val[3]
|
@@ -1610,25 +1426,21 @@ initializer_list
|
|
1610
1426
|
: initializer
|
1611
1427
|
{
|
1612
1428
|
checkpoint(val[0].location)
|
1613
|
-
|
1614
1429
|
result = val
|
1615
1430
|
}
|
1616
1431
|
| designation initializer
|
1617
1432
|
{
|
1618
1433
|
checkpoint(val[1].location)
|
1619
|
-
|
1620
1434
|
result = [val[1]]
|
1621
1435
|
}
|
1622
1436
|
| initializer_list "," initializer
|
1623
1437
|
{
|
1624
1438
|
checkpoint(val[0].first.location)
|
1625
|
-
|
1626
1439
|
result = val[0].push(val[2])
|
1627
1440
|
}
|
1628
1441
|
| initializer_list "," designation initializer
|
1629
1442
|
{
|
1630
1443
|
checkpoint(val[0].first.location)
|
1631
|
-
|
1632
1444
|
result = val[0].push(val[3])
|
1633
1445
|
}
|
1634
1446
|
;
|
@@ -1663,7 +1475,6 @@ labeled_statement
|
|
1663
1475
|
: IDENTIFIER ":" statement
|
1664
1476
|
{
|
1665
1477
|
checkpoint(val[0].location)
|
1666
|
-
|
1667
1478
|
result = GenericLabeledStatement.new(val[0], val[2])
|
1668
1479
|
result.head_token = val[0]
|
1669
1480
|
result.tail_token = val[2].tail_token
|
@@ -1671,7 +1482,6 @@ labeled_statement
|
|
1671
1482
|
| CASE constant_expression ":" statement
|
1672
1483
|
{
|
1673
1484
|
checkpoint(val[0].location)
|
1674
|
-
|
1675
1485
|
val[1].full = true
|
1676
1486
|
result = CaseLabeledStatement.new(val[1], val[3])
|
1677
1487
|
result.head_token = val[0]
|
@@ -1680,7 +1490,6 @@ labeled_statement
|
|
1680
1490
|
| DEFAULT ":" statement
|
1681
1491
|
{
|
1682
1492
|
checkpoint(val[0].location)
|
1683
|
-
|
1684
1493
|
result = DefaultLabeledStatement.new(val[2])
|
1685
1494
|
result.head_token = val[0]
|
1686
1495
|
result.tail_token = val[2].tail_token
|
@@ -1691,7 +1500,6 @@ compound_statement
|
|
1691
1500
|
: "{" "}"
|
1692
1501
|
{
|
1693
1502
|
checkpoint(val[0].location)
|
1694
|
-
|
1695
1503
|
result = CompoundStatement.new([])
|
1696
1504
|
result.head_token = val[0]
|
1697
1505
|
result.tail_token = val[1]
|
@@ -1699,7 +1507,6 @@ compound_statement
|
|
1699
1507
|
| "{" { @lexer.enter_scope } block_item_list { @lexer.leave_scope } "}"
|
1700
1508
|
{
|
1701
1509
|
checkpoint(val[0].location)
|
1702
|
-
|
1703
1510
|
result = CompoundStatement.new(val[2])
|
1704
1511
|
result.head_token = val[0]
|
1705
1512
|
result.tail_token = val[4]
|
@@ -1710,13 +1517,11 @@ block_item_list
|
|
1710
1517
|
: block_item
|
1711
1518
|
{
|
1712
1519
|
checkpoint(val[0].location)
|
1713
|
-
|
1714
1520
|
result = val
|
1715
1521
|
}
|
1716
1522
|
| block_item_list block_item
|
1717
1523
|
{
|
1718
1524
|
checkpoint(val[0].first.location)
|
1719
|
-
|
1720
1525
|
result = val[0].push(val[1])
|
1721
1526
|
}
|
1722
1527
|
;
|
@@ -1731,14 +1536,12 @@ expression_statement
|
|
1731
1536
|
: ";"
|
1732
1537
|
{
|
1733
1538
|
checkpoint(val[0].location)
|
1734
|
-
|
1735
1539
|
result = ExpressionStatement.new(nil)
|
1736
1540
|
result.head_token = result.tail_token = val[0]
|
1737
1541
|
}
|
1738
1542
|
| expression ";"
|
1739
1543
|
{
|
1740
1544
|
checkpoint(val[0].location)
|
1741
|
-
|
1742
1545
|
val[0].full = true
|
1743
1546
|
result = ExpressionStatement.new(val[0])
|
1744
1547
|
result.head_token = val[0].head_token
|
@@ -1750,7 +1553,6 @@ selection_statement
|
|
1750
1553
|
: IF "(" expression ")" statement
|
1751
1554
|
{
|
1752
1555
|
checkpoint(val[0].location)
|
1753
|
-
|
1754
1556
|
val[2].full = true
|
1755
1557
|
result = IfStatement.new(val[2], val[4], val[3])
|
1756
1558
|
result.head_token = val[0]
|
@@ -1759,7 +1561,6 @@ selection_statement
|
|
1759
1561
|
| IF "(" expression ")" statement ELSE statement
|
1760
1562
|
{
|
1761
1563
|
checkpoint(val[0].location)
|
1762
|
-
|
1763
1564
|
val[2].full = true
|
1764
1565
|
result = IfElseStatement.new(val[2], val[4], val[6], val[3], val[5])
|
1765
1566
|
result.head_token = val[0]
|
@@ -1768,7 +1569,6 @@ selection_statement
|
|
1768
1569
|
| SWITCH "(" expression ")" statement
|
1769
1570
|
{
|
1770
1571
|
checkpoint(val[0].location)
|
1771
|
-
|
1772
1572
|
val[2].full = true
|
1773
1573
|
result = SwitchStatement.new(val[2], val[4])
|
1774
1574
|
result.head_token = val[0]
|
@@ -1780,7 +1580,6 @@ iteration_statement
|
|
1780
1580
|
: WHILE "(" expression ")" statement
|
1781
1581
|
{
|
1782
1582
|
checkpoint(val[0].location)
|
1783
|
-
|
1784
1583
|
val[2].full = true
|
1785
1584
|
result = WhileStatement.new(val[2], val[4], val[3])
|
1786
1585
|
result.head_token = val[0]
|
@@ -1789,7 +1588,6 @@ iteration_statement
|
|
1789
1588
|
| DO statement WHILE "(" expression ")" ";"
|
1790
1589
|
{
|
1791
1590
|
checkpoint(val[0].location)
|
1792
|
-
|
1793
1591
|
val[4].full = true
|
1794
1592
|
result = DoStatement.new(val[1], val[4], val[0], val[2])
|
1795
1593
|
result.head_token = val[0]
|
@@ -1798,7 +1596,6 @@ iteration_statement
|
|
1798
1596
|
| FOR "(" expression_statement expression_statement ")" statement
|
1799
1597
|
{
|
1800
1598
|
checkpoint(val[0].location)
|
1801
|
-
|
1802
1599
|
result = ForStatement.new(val[2], val[3], nil, val[5], val[4])
|
1803
1600
|
result.head_token = val[0]
|
1804
1601
|
result.tail_token = val[5].tail_token
|
@@ -1807,7 +1604,6 @@ iteration_statement
|
|
1807
1604
|
statement
|
1808
1605
|
{
|
1809
1606
|
checkpoint(val[0].location)
|
1810
|
-
|
1811
1607
|
val[4].full = true
|
1812
1608
|
result = ForStatement.new(val[2], val[3], val[4], val[6], val[5])
|
1813
1609
|
result.head_token = val[0]
|
@@ -1816,7 +1612,6 @@ iteration_statement
|
|
1816
1612
|
| FOR "(" declaration expression_statement ")" statement
|
1817
1613
|
{
|
1818
1614
|
checkpoint(val[0].location)
|
1819
|
-
|
1820
1615
|
result = C99ForStatement.new(val[2], val[3], nil, val[5], val[4])
|
1821
1616
|
result.head_token = val[0]
|
1822
1617
|
result.tail_token = val[5].tail_token
|
@@ -1824,7 +1619,6 @@ iteration_statement
|
|
1824
1619
|
| FOR "(" declaration expression_statement expression ")" statement
|
1825
1620
|
{
|
1826
1621
|
checkpoint(val[0].location)
|
1827
|
-
|
1828
1622
|
val[4].full = true
|
1829
1623
|
result = C99ForStatement.new(val[2], val[3], val[4], val[6], val[5])
|
1830
1624
|
result.head_token = val[0]
|
@@ -1836,7 +1630,6 @@ jump_statement
|
|
1836
1630
|
: GOTO IDENTIFIER ";"
|
1837
1631
|
{
|
1838
1632
|
checkpoint(val[0].location)
|
1839
|
-
|
1840
1633
|
result = GotoStatement.new(val[1])
|
1841
1634
|
result.head_token = val[0]
|
1842
1635
|
result.tail_token = val[2]
|
@@ -1844,7 +1637,6 @@ jump_statement
|
|
1844
1637
|
| GOTO "*" expression ";"
|
1845
1638
|
{
|
1846
1639
|
checkpoint(val[0].location)
|
1847
|
-
|
1848
1640
|
E(:E0015, val[1].location, val[1].value)
|
1849
1641
|
result = ErrorStatement.new(val[1])
|
1850
1642
|
result.head_token = val[0]
|
@@ -1853,7 +1645,6 @@ jump_statement
|
|
1853
1645
|
| CONTINUE ";"
|
1854
1646
|
{
|
1855
1647
|
checkpoint(val[0].location)
|
1856
|
-
|
1857
1648
|
result = ContinueStatement.new
|
1858
1649
|
result.head_token = val[0]
|
1859
1650
|
result.tail_token = val[1]
|
@@ -1861,7 +1652,6 @@ jump_statement
|
|
1861
1652
|
| BREAK ";"
|
1862
1653
|
{
|
1863
1654
|
checkpoint(val[0].location)
|
1864
|
-
|
1865
1655
|
result = BreakStatement.new
|
1866
1656
|
result.head_token = val[0]
|
1867
1657
|
result.tail_token = val[1]
|
@@ -1869,7 +1659,6 @@ jump_statement
|
|
1869
1659
|
| RETURN ";"
|
1870
1660
|
{
|
1871
1661
|
checkpoint(val[0].location)
|
1872
|
-
|
1873
1662
|
result = ReturnStatement.new(nil)
|
1874
1663
|
result.head_token = val[0]
|
1875
1664
|
result.tail_token = val[1]
|
@@ -1877,7 +1666,6 @@ jump_statement
|
|
1877
1666
|
| RETURN expression ";"
|
1878
1667
|
{
|
1879
1668
|
checkpoint(val[0].location)
|
1880
|
-
|
1881
1669
|
val[1].full = true
|
1882
1670
|
result = ReturnStatement.new(val[1])
|
1883
1671
|
result.head_token = val[0]
|
@@ -1896,13 +1684,8 @@ translation_unit
|
|
1896
1684
|
| translation_unit external_declaration
|
1897
1685
|
{
|
1898
1686
|
checkpoint(val[0].location)
|
1899
|
-
|
1900
1687
|
result = val[0]
|
1901
|
-
if result.external_declarations.empty?
|
1902
|
-
result.head_token = val[1].head_token
|
1903
|
-
end
|
1904
1688
|
result.push(val[1])
|
1905
|
-
result.tail_token = val[1].tail_token
|
1906
1689
|
}
|
1907
1690
|
;
|
1908
1691
|
|
@@ -1915,56 +1698,46 @@ function_definition
|
|
1915
1698
|
: declaration_specifiers declarator declaration_list compound_statement
|
1916
1699
|
{
|
1917
1700
|
checkpoint(val[0].location)
|
1918
|
-
|
1919
1701
|
result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3],
|
1920
|
-
@
|
1702
|
+
@sym_tbl)
|
1921
1703
|
result.head_token = val[0].head_token
|
1922
1704
|
result.tail_token = val[3].tail_token
|
1923
1705
|
}
|
1924
1706
|
| declaration_specifiers declarator compound_statement
|
1925
1707
|
{
|
1926
1708
|
checkpoint(val[0].location)
|
1927
|
-
|
1928
1709
|
case val[1]
|
1929
1710
|
when AnsiFunctionDeclarator
|
1930
|
-
result = AnsiFunctionDefinition.new(val[0], val[1], val[2],
|
1931
|
-
@symbol_table)
|
1711
|
+
result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl)
|
1932
1712
|
when KandRFunctionDeclarator
|
1933
1713
|
result = KandRFunctionDefinition.new(val[0], val[1], [], val[2],
|
1934
|
-
@
|
1714
|
+
@sym_tbl)
|
1935
1715
|
when AbbreviatedFunctionDeclarator
|
1936
|
-
result = AnsiFunctionDefinition.new(val[0], val[1], val[2],
|
1937
|
-
@symbol_table)
|
1716
|
+
result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl)
|
1938
1717
|
end
|
1939
|
-
|
1940
1718
|
result.head_token = val[0].head_token
|
1941
1719
|
result.tail_token = val[2].tail_token
|
1942
1720
|
}
|
1943
1721
|
| declarator declaration_list compound_statement
|
1944
1722
|
{
|
1945
1723
|
checkpoint(val[0].location)
|
1946
|
-
|
1947
1724
|
result = KandRFunctionDefinition.new(nil, val[0], val[1], val[2],
|
1948
|
-
@
|
1725
|
+
@sym_tbl)
|
1949
1726
|
result.head_token = val[0].head_token
|
1950
1727
|
result.tail_token = val[2].tail_token
|
1951
1728
|
}
|
1952
1729
|
| declarator compound_statement
|
1953
1730
|
{
|
1954
1731
|
checkpoint(val[0].location)
|
1955
|
-
|
1956
1732
|
case val[0]
|
1957
1733
|
when AnsiFunctionDeclarator
|
1958
|
-
result = AnsiFunctionDefinition.new(nil, val[0], val[1],
|
1959
|
-
@symbol_table)
|
1734
|
+
result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl)
|
1960
1735
|
when KandRFunctionDeclarator
|
1961
1736
|
result = KandRFunctionDefinition.new(nil, val[0], [], val[1],
|
1962
|
-
@
|
1737
|
+
@sym_tbl)
|
1963
1738
|
when AbbreviatedFunctionDeclarator
|
1964
|
-
result = AnsiFunctionDefinition.new(nil, val[0], val[1],
|
1965
|
-
@symbol_table)
|
1739
|
+
result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl)
|
1966
1740
|
end
|
1967
|
-
|
1968
1741
|
result.head_token = val[0].head_token
|
1969
1742
|
result.tail_token = val[1].tail_token
|
1970
1743
|
}
|
@@ -1974,28 +1747,23 @@ local_function_definition
|
|
1974
1747
|
: declaration_specifiers declarator declaration_list compound_statement
|
1975
1748
|
{
|
1976
1749
|
checkpoint(val[0].location)
|
1977
|
-
|
1978
1750
|
result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3],
|
1979
|
-
@
|
1751
|
+
@sym_tbl)
|
1980
1752
|
result.head_token = val[0].head_token
|
1981
1753
|
result.tail_token = val[3].tail_token
|
1982
1754
|
}
|
1983
1755
|
| declaration_specifiers declarator compound_statement
|
1984
1756
|
{
|
1985
1757
|
checkpoint(val[0].location)
|
1986
|
-
|
1987
1758
|
case val[1]
|
1988
1759
|
when AnsiFunctionDeclarator
|
1989
|
-
result = AnsiFunctionDefinition.new(val[0], val[1], val[2],
|
1990
|
-
@symbol_table)
|
1760
|
+
result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl)
|
1991
1761
|
when KandRFunctionDeclarator
|
1992
1762
|
result = KandRFunctionDefinition.new(val[0], val[1], [], val[2],
|
1993
|
-
@
|
1763
|
+
@sym_tbl)
|
1994
1764
|
when AbbreviatedFunctionDeclarator
|
1995
|
-
result = AnsiFunctionDefinition.new(val[0], val[1], val[2],
|
1996
|
-
@symbol_table)
|
1765
|
+
result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl)
|
1997
1766
|
end
|
1998
|
-
|
1999
1767
|
result.head_token = val[0].head_token
|
2000
1768
|
result.tail_token = val[2].tail_token
|
2001
1769
|
}
|
@@ -2005,13 +1773,11 @@ declaration_list
|
|
2005
1773
|
: declaration
|
2006
1774
|
{
|
2007
1775
|
checkpoint(val[0].location)
|
2008
|
-
|
2009
1776
|
result = val
|
2010
1777
|
}
|
2011
1778
|
| declaration_list declaration
|
2012
1779
|
{
|
2013
1780
|
checkpoint(val[0].first.location)
|
2014
|
-
|
2015
1781
|
result = val[0].push(val[1])
|
2016
1782
|
}
|
2017
1783
|
;
|
@@ -2024,20 +1790,20 @@ require "adlint/error"
|
|
2024
1790
|
require "adlint/symbol"
|
2025
1791
|
require "adlint/monitor"
|
2026
1792
|
require "adlint/util"
|
2027
|
-
require "adlint/
|
2028
|
-
require "adlint/
|
1793
|
+
require "adlint/cc1/lexer"
|
1794
|
+
require "adlint/cc1/syntax"
|
2029
1795
|
|
2030
1796
|
---- inner
|
2031
1797
|
|
2032
|
-
include MonitorUtil
|
2033
1798
|
include ReportUtil
|
1799
|
+
include MonitorUtil
|
2034
1800
|
|
2035
|
-
def initialize(
|
2036
|
-
@
|
2037
|
-
@lexer
|
2038
|
-
@
|
1801
|
+
def initialize(phase_ctxt)
|
1802
|
+
@phase_ctxt = phase_ctxt
|
1803
|
+
@lexer = create_lexer(phase_ctxt[:cc1_source])
|
1804
|
+
@sym_tbl = phase_ctxt[:symbol_table]
|
2039
1805
|
@token_array = []
|
2040
|
-
@
|
1806
|
+
@anon_tag_no = 0
|
2041
1807
|
end
|
2042
1808
|
|
2043
1809
|
attr_reader :token_array
|
@@ -2051,8 +1817,8 @@ extend Pluggable
|
|
2051
1817
|
def_plugin :on_string_literals_concatenated
|
2052
1818
|
|
2053
1819
|
private
|
2054
|
-
def create_lexer(
|
2055
|
-
Lexer.new(
|
1820
|
+
def create_lexer(pp_src)
|
1821
|
+
Lexer.new(pp_src).tap { |lexer| attach_lexer_plugin(lexer) }
|
2056
1822
|
end
|
2057
1823
|
|
2058
1824
|
def attach_lexer_plugin(lexer)
|
@@ -2062,46 +1828,48 @@ def attach_lexer_plugin(lexer)
|
|
2062
1828
|
end
|
2063
1829
|
|
2064
1830
|
def next_token
|
2065
|
-
if
|
2066
|
-
@token_array.push(
|
2067
|
-
[
|
1831
|
+
if tok = @lexer.next_token
|
1832
|
+
@token_array.push(tok)
|
1833
|
+
[tok.type, tok]
|
2068
1834
|
else
|
2069
1835
|
nil
|
2070
1836
|
end
|
2071
1837
|
end
|
2072
1838
|
|
2073
|
-
def on_error(
|
2074
|
-
if
|
2075
|
-
E(:E0008,
|
2076
|
-
|
2077
|
-
|
2078
|
-
@context.msg_fpath, @context.log_fpath)
|
1839
|
+
def on_error(err_tok, err_val, *)
|
1840
|
+
if fst_tok = @token_array[-2] and snd_tok = @token_array[-1]
|
1841
|
+
E(:E0008, loc_of(fst_tok), "#{val_of(fst_tok)} #{val_of(snd_tok)}")
|
1842
|
+
raise ParseError.new(loc_of(fst_tok),
|
1843
|
+
@phase_ctxt.msg_fpath, @phase_ctxt.log_fpath)
|
2079
1844
|
else
|
2080
|
-
E(:E0008,
|
2081
|
-
raise ParseError.new(
|
2082
|
-
@
|
1845
|
+
E(:E0008, loc_of(err_val), val_of(err_val))
|
1846
|
+
raise ParseError.new(loc_of(err_val),
|
1847
|
+
@phase_ctxt.msg_fpath, @phase_ctxt.log_fpath)
|
2083
1848
|
end
|
2084
1849
|
end
|
2085
1850
|
|
2086
|
-
def
|
2087
|
-
|
2088
|
-
Location.new
|
2089
|
-
else
|
2090
|
-
value.location
|
2091
|
-
end
|
1851
|
+
def loc_of(val)
|
1852
|
+
val == "$" ? Location.new : val.location
|
2092
1853
|
end
|
2093
1854
|
|
2094
|
-
def
|
2095
|
-
|
1855
|
+
def val_of(tok)
|
1856
|
+
tok == "$" ? "EOF" : tok.value
|
2096
1857
|
end
|
2097
1858
|
|
2098
|
-
def
|
2099
|
-
Token.new(:IDENTIFIER, "
|
2100
|
-
|
1859
|
+
def create_anon_tag_name(base_tok)
|
1860
|
+
Token.new(:IDENTIFIER, "__adlint__anon_#{@anon_tag_no += 1}",
|
1861
|
+
base_tok.location)
|
2101
1862
|
end
|
2102
1863
|
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
1864
|
+
extend Forwardable
|
1865
|
+
|
1866
|
+
def_delegator :@phase_ctxt, :report
|
1867
|
+
private :report
|
1868
|
+
|
1869
|
+
def_delegator :@phase_ctxt, :message_catalog
|
1870
|
+
private :message_catalog
|
1871
|
+
|
1872
|
+
def_delegator :@phase_ctxt, :monitor
|
1873
|
+
private :monitor
|
2106
1874
|
|
2107
1875
|
# vim:ft=racc:sw=2:ts=2:sts=2:et:
|