From 7f00441914f5b9bd4f845a1c866da65e1946083e Mon Sep 17 00:00:00 2001 From: Coccinelle Date: Sun, 3 Oct 2010 14:03:17 +0200 Subject: [PATCH] Release coccinelle-0.2.0rc1 Release Candidate 1 for coccinelle-0.2.0 --- Makefile | 136 +- Makefile.dev | 44 + changes.txt | 26 +- cocci.ml | 101 +- cocci.mli | 25 +- commitmsg | 31 +- ctl/.depend | 4 + ctl/Makefile | 20 - ctl/ast_ctl.ml | 22 - ctl/ctl_engine.ml | 22 - ctl/ctl_engine.mli | 22 - ctl/flag_ctl.ml | 62 +- ctl/pretty_print_ctl.ml | 22 - ctl/pretty_print_ctl.mli | 30 +- ctl/test_ctl.ml | 22 - ctl/wrapper_ctl.ml | 22 - ctl/wrapper_ctl.mli | 22 - demos/first.c | 4 + demos/first.cocci | 30 + demos/orgmode.cocci | 18 +- docs/manual/cocci_syntax.tex | 2 +- docs/manual/main_grammar.pdf | Bin 287589 -> 287682 bytes docs/manual/manual.pdf | Bin 364897 -> 365066 bytes docs/manual/options.pdf | Bin 94612 -> 94794 bytes docs/manual/spatch_options.tex | 5 +- editors/emacs/cocci.el | 103 +- engine/Makefile | 20 - engine/asttoctl.ml | 22 - engine/asttoctl.mli | 40 +- engine/asttoctl2.ml | 22 - engine/asttoctl2.mli | 52 +- engine/asttomember.ml | 22 - engine/asttomember.mli | 26 +- engine/c_vs_c.ml | 22 - engine/c_vs_c.mli | 28 +- engine/check_exhaustive_pattern.ml | 22 - engine/check_reachability.ml | 22 - engine/check_reachability.mli | 48 +- engine/cocci_vs_c.ml | 22 - engine/cocci_vs_c.mli | 22 - engine/ctlcocci_integration.ml | 69 +- engine/ctlcocci_integration.mli | 22 - engine/ctltotex.ml | 22 - engine/ctltotex.mli | 36 +- engine/flag_engine.ml | 46 +- engine/flag_matcher.ml | 68 +- engine/isomorphisms_c_c.ml | 22 - engine/lib_engine.ml | 26 +- engine/lib_matcher_c.ml | 22 - engine/lib_matcher_c.mli | 22 - engine/main.ml | 22 - engine/pattern_c.ml | 22 - engine/pattern_c.mli | 34 +- engine/postprocess_transinfo.ml | 22 - engine/postprocess_transinfo.mli | 48 +- engine/pretty_print_engine.ml | 31 +- engine/pretty_print_engine.mli | 22 - engine/sgrep.ml | 22 - engine/transformation_c.ml | 22 - engine/transformation_c.mli | 34 +- env.csh | 2 + env.sh | 6 +- flag_cocci.ml | 22 - globals/Makefile | 20 - globals/config.ml.in | 6 +- globals/flag.ml | 72 +- main.ml | 34 +- parsing_c/flag_parsing_c.ml | 2 + parsing_c/unparse_c.ml | 2 + parsing_cocci/.depend | 5 + parsing_cocci/Makefile | 20 - parsing_cocci/adjacency.ml | 22 - parsing_cocci/adjacency.mli | 24 +- parsing_cocci/adjust_pragmas.ml | 22 - parsing_cocci/adjust_pragmas.mli | 24 +- parsing_cocci/arity.ml | 22 - parsing_cocci/arity.mli | 24 +- parsing_cocci/ast0_cocci.ml | 22 - parsing_cocci/ast0_cocci.mli | 22 - parsing_cocci/ast0toast.ml | 22 - parsing_cocci/ast0toast.mli | 22 - parsing_cocci/ast_cocci.ml | 24 +- parsing_cocci/ast_cocci.mli | 24 +- parsing_cocci/check_meta.ml | 38 +- parsing_cocci/check_meta.mli | 34 +- parsing_cocci/comm_assoc.ml | 22 - parsing_cocci/comm_assoc.mli | 28 +- parsing_cocci/compute_lines.ml | 62 +- parsing_cocci/compute_lines.mli | 38 +- parsing_cocci/context_neg.ml | 22 - parsing_cocci/context_neg.mli | 38 +- parsing_cocci/data.ml | 23 +- parsing_cocci/data.mli | 23 +- parsing_cocci/disjdistr.ml | 34 +- parsing_cocci/disjdistr.mli | 26 +- parsing_cocci/flag_parsing_cocci.ml | 64 +- parsing_cocci/free_vars.ml | 22 - parsing_cocci/free_vars.mli | 22 - parsing_cocci/function_prototypes.ml | 22 - parsing_cocci/function_prototypes.mli | 32 +- parsing_cocci/get_constants.ml | 23 +- parsing_cocci/get_constants.mli | 24 +- parsing_cocci/get_constants2.ml | 29 +- parsing_cocci/get_constants2.mli | 31 +- parsing_cocci/index.ml | 22 - parsing_cocci/index.mli | 22 - parsing_cocci/insert_plus.ml | 26 +- parsing_cocci/insert_plus.mli | 26 +- parsing_cocci/iso_compile.ml | 22 - parsing_cocci/iso_compile.mli | 26 +- parsing_cocci/iso_pattern.ml | 33 +- parsing_cocci/iso_pattern.mli | 38 +- parsing_cocci/lexer_cocci.mll | 43 +- parsing_cocci/lexer_script.mll | 22 - parsing_cocci/main.ml | 22 - parsing_cocci/merge.ml | 22 - parsing_cocci/merge.mli | 30 +- parsing_cocci/parse_aux.ml | 25 +- parsing_cocci/parse_cocci.ml | 137 +- parsing_cocci/parse_cocci.mli | 25 +- parsing_cocci/parser_cocci.mly | 22 - parsing_cocci/parser_cocci_menhir.ml | 6662 +++++++++++---------- parsing_cocci/parser_cocci_menhir.mly | 34 +- parsing_cocci/plus.ml | 22 - parsing_cocci/plus.mli | 28 +- parsing_cocci/pretty_print_cocci.ml | 25 +- parsing_cocci/pretty_print_cocci.mli | 22 - parsing_cocci/semantic_cocci.ml | 24 +- parsing_cocci/simple_assignments.ml | 22 - parsing_cocci/simple_assignments.mli | 24 +- parsing_cocci/single_statement.ml | 22 - parsing_cocci/single_statement.mli | 24 +- parsing_cocci/test.cocci | 20 - parsing_cocci/test2.cocci | 20 - parsing_cocci/test_exps.ml | 22 - parsing_cocci/test_exps.mli | 28 +- parsing_cocci/top_level.ml | 22 - parsing_cocci/top_level.mli | 24 +- parsing_cocci/type_cocci.ml | 22 - parsing_cocci/type_cocci.mli | 22 - parsing_cocci/type_infer.ml | 22 - parsing_cocci/type_infer.mli | 24 +- parsing_cocci/unify_ast.ml | 22 - parsing_cocci/unify_ast.mli | 32 +- parsing_cocci/unitary_ast0.ml | 22 - parsing_cocci/unitary_ast0.mli | 46 +- parsing_cocci/unparse_ast0.ml | 22 - parsing_cocci/unparse_ast0.mli | 48 +- parsing_cocci/visitor_ast.ml | 22 - parsing_cocci/visitor_ast.mli | 22 - parsing_cocci/visitor_ast0.ml | 22 - parsing_cocci/visitor_ast0.mli | 22 - parsing_cocci/visitor_ast0_types.ml | 22 - popl/Makefile | 20 - popl/ast_popl.ml | 54 +- popl/asttopopl.ml | 22 - popl/asttopopl.mli | 24 +- popl/insert_befaft.ml | 22 - popl/insert_befaft.mli | 24 +- popl/insert_quantifiers.ml | 22 - popl/insert_quantifiers.mli | 24 +- popl/popl.ml | 56 +- popl/popl.mli | 32 +- popl/popltoctl.ml | 22 - popl/popltoctl.mli | 32 +- popl/pretty_print_popl.ml | 22 - popl/pretty_print_popl.mli | 26 +- popl09/.depend | 2 + popl09/Makefile | 20 - popl09/ast_popl.ml | 74 +- popl09/asttopopl.ml | 22 - popl09/asttopopl.mli | 24 +- popl09/flag_popl.ml | 26 +- popl09/insert_quantifiers.ml | 22 - popl09/insert_quantifiers.mli | 24 +- popl09/popl.ml | 54 +- popl09/popl.mli | 32 +- popl09/popltoctl.ml | 22 - popl09/popltoctl.mli | 32 +- popl09/pretty_print_popl.ml | 22 - popl09/pretty_print_popl.mli | 26 +- python/Makefile | 20 - python/coccilib/Makefile | 2 + python/coccilib/org.py | 33 +- python/no_pycocci.ml | 24 +- python/no_pycocci_aux.ml | 22 - python/yes_pycocci.ml | 24 +- python/yes_pycocci_aux.ml | 22 - scripts/coccicheck/Makefile | 18 +- scripts/coccicheck/README | 9 +- scripts/coccicheck/bin/update_result_tree | 19 +- scripts/coccicheck/cocci/kc.cocci | 35 + scripts/coccicheck/cocci/kzmem.cocci | 47 + scripts/coccicheck/cocci/noderef.cocci | 39 + scripts/coccicheck/cocci/noderef2.cocci | 40 + scripts/coccicheck/configure | 30 +- scripts/extract_c_and_res.pl | 20 - scripts/extract_examples.pl | 64 +- scripts/extractor_README.pl | 20 - scripts/gather_failed.pl | 44 +- scripts/readme.pl | 20 - scripts/stat_directories.pl | 20 - scripts/stat_directories_complete.pl | 80 +- scripts/stat_directory_complete.pl | 20 - standard.iso | 69 +- test.ml | 178 +- testing.ml | 24 +- testing.mli | 25 +- tests/array.cocci | 125 +- tools/Makefile | 20 - tools/alloc_free.ml | 22 - tools/bridge.ml | 22 - tools/dir_stats.ml | 22 - tools/extract_c_and_res.ml | 22 - tools/generate_dependencies.ml | 22 - tools/gitgrep.ml | 22 - tools/gitsort.ml | 22 - tools/licensify.ml | 22 - tools/process_isoprofile.ml | 22 - tools/split_patch.ml | 22 - tools/spp.ml | 22 - 221 files changed, 4712 insertions(+), 8388 deletions(-) create mode 100644 Makefile.dev rewrite commitmsg (99%) rewrite ctl/flag_ctl.ml (70%) rewrite ctl/pretty_print_ctl.mli (87%) create mode 100644 demos/first.c create mode 100644 demos/first.cocci rewrite engine/asttoctl.mli (74%) rewrite engine/asttoctl2.mli (62%) rewrite engine/asttomember.mli (86%) rewrite engine/c_vs_c.mli (88%) rewrite engine/check_reachability.mli (67%) rewrite engine/ctltotex.mli (82%) rewrite engine/flag_engine.ml (72%) rewrite engine/flag_matcher.ml (63%) rewrite engine/lib_matcher_c.ml (100%) rewrite engine/lib_matcher_c.mli (100%) rewrite engine/pattern_c.mli (82%) rewrite engine/postprocess_transinfo.mli (63%) rewrite engine/transformation_c.mli (74%) rewrite globals/flag.ml (60%) rewrite parsing_cocci/adjacency.mli (94%) rewrite parsing_cocci/adjust_pragmas.mli (95%) rewrite parsing_cocci/arity.mli (94%) rewrite parsing_cocci/check_meta.mli (79%) rewrite parsing_cocci/comm_assoc.mli (88%) rewrite parsing_cocci/compute_lines.mli (76%) rewrite parsing_cocci/context_neg.mli (76%) rewrite parsing_cocci/disjdistr.mli (91%) rewrite parsing_cocci/flag_parsing_cocci.ml (79%) rewrite parsing_cocci/function_prototypes.mli (78%) rewrite parsing_cocci/get_constants.mli (93%) rewrite parsing_cocci/get_constants2.mli (87%) rewrite parsing_cocci/insert_plus.mli (90%) rewrite parsing_cocci/iso_compile.mli (95%) rewrite parsing_cocci/iso_pattern.mli (75%) rewrite parsing_cocci/merge.mli (85%) rewrite parsing_cocci/plus.mli (90%) rewrite parsing_cocci/semantic_cocci.ml (97%) rewrite parsing_cocci/simple_assignments.mli (93%) rewrite parsing_cocci/single_statement.mli (94%) rewrite parsing_cocci/test_exps.mli (89%) rewrite parsing_cocci/top_level.mli (94%) rewrite parsing_cocci/type_infer.mli (95%) rewrite parsing_cocci/unify_ast.mli (87%) rewrite parsing_cocci/unitary_ast0.mli (69%) rewrite parsing_cocci/unparse_ast0.mli (60%) rewrite popl/ast_popl.ml (69%) rewrite popl/asttopopl.mli (94%) rewrite popl/insert_befaft.mli (94%) rewrite popl/insert_quantifiers.mli (93%) rewrite popl/popl.ml (63%) rewrite popl/popl.mli (81%) rewrite popl/popltoctl.mli (81%) rewrite popl/pretty_print_popl.mli (91%) rewrite popl09/ast_popl.ml (61%) rewrite popl09/asttopopl.mli (94%) rewrite popl09/flag_popl.ml (94%) rewrite popl09/insert_quantifiers.mli (93%) rewrite popl09/popl.ml (65%) rewrite popl09/popl.mli (81%) rewrite popl09/popltoctl.mli (81%) rewrite popl09/pretty_print_popl.mli (91%) rewrite python/coccilib/org.py (72%) create mode 100644 scripts/coccicheck/cocci/kc.cocci create mode 100644 scripts/coccicheck/cocci/kzmem.cocci create mode 100644 scripts/coccicheck/cocci/noderef.cocci create mode 100644 scripts/coccicheck/cocci/noderef2.cocci rewrite scripts/extract_examples.pl (66%) rewrite scripts/gather_failed.pl (82%) rewrite scripts/stat_directories_complete.pl (63%) rewrite test.ml (99%) rewrite tests/array.cocci (76%) diff --git a/Makefile b/Makefile index 712ac56..899561e 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - ############################################################################# # Configuration section @@ -82,7 +62,7 @@ EXEC=$(TARGET) # Generic ocaml variables ############################################################################## -OCAMLCFLAGS= -g -dtypes # -w A +OCAMLCFLAGS=# -g -dtypes # -w A # for profiling add -p -inline 0 # but 'make forprofiling' below does that for you. @@ -184,17 +164,14 @@ $(EXEC).top: $(LIBS) $(OBJS) clean:: rm -f $(TARGET) $(TARGET).opt $(TARGET).top - -clean:: rm -f dllpycaml_stubs.so - .PHONY:: tools configure configure: ./configure -Makefile.config: +Makefile.config: @echo "Makefile.config is missing. Have you run ./configure?" @exit 1 @@ -358,24 +335,28 @@ OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;') # Procedure to do first time: # cd ~/release -# cvs checkout coccinelle +# cvs checkout coccinelle -dP # cd coccinelle -# cvs update -d -P -# touch **/* -# make licensify -# remember to comment the -g -dtypes in this Makefile +# +# Procedure to do each time: +# +# 1) make prepackage # WARN: These will clean your local rep. of pending modifications +# +# UPDATE VERSION number in globals/config.ml.in +# and commit it with +# +# 2) make release +# +# The project is then automatically licensified. +# +# Remember to comment the -g -dtypes in this Makefile # You can also remove a few things, for instance I removed in this # Makefile things related to popl/ and popl09/ - -# Procedure to do each time: -# cvs update # make sure that ocaml is the distribution ocaml of /usr/bin, not ~pad/... -# modify globals/config.ml.in -# cd globals/; cvs commit -m"new version" (do not commit from the root!) -# ./configure --without-python -# can make; ./spatch -testall to check and update the SCORE_expected.sexp -# make package -# make website +# +# 3) make package +# +# if WEBSITE is set properly, you can also run 'make website' # Check that run an ocaml in /usr/bin # To test you can try compile and run spatch from different instances @@ -387,14 +368,27 @@ OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;') # the scripts/licensify has been run at least once. # For the 'make bintar' I can do it from my original repo. +prepackage: + cvs up -CdP + $(MAKE) distclean + +release: + cvs ci -m "Release $(VERSION)" globals/config.ml-in + $(MAKE) licensify package: + $(MAKE) distclean # Clean project $(MAKE) srctar ./configure --without-python $(MAKE) docs $(MAKE) bintar $(MAKE) bytecodetar $(MAKE) staticbintar + $(MAKE) distclean # Clean project + ./configure # Reconfigure project with Python support + $(MAKE) docs + $(MAKE) bintar-python + $(MAKE) bytecodetar-python $(MAKE) coccicheck @@ -436,16 +430,32 @@ bytecodetar: all cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz --exclude-vcs $(BINSRC2) rm -f $(TMP)/$(PACKAGE) +bintar-python: all + rm -f $(TMP)/$(PACKAGE) + ln -s `pwd` $(TMP)/$(PACKAGE) + cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-python.tgz --exclude-vcs $(BINSRC2) + rm -f $(TMP)/$(PACKAGE) + +# add ocaml version in name ? +bytecodetar-python: all + rm -f $(TMP)/$(PACKAGE) + ln -s `pwd` $(TMP)/$(PACKAGE) + make purebytecode + cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz --exclude-vcs $(BINSRC2) + rm -f $(TMP)/$(PACKAGE) + coccicheck: cp -a `pwd`/scripts/coccicheck $(TMP)/$(CCPACKAGE) tar cvfz $(TMP)/$(CCPACKAGE).tgz -C $(TMP) --exclude-vcs $(CCPACKAGE) rm -rf $(TMP)/$(CCPACKAGE) -clean:: +clean-packages:: rm -f $(TMP)/$(PACKAGE).tgz rm -f $(TMP)/$(PACKAGE)-bin-x86.tgz rm -f $(TMP)/$(PACKAGE)-bin-x86-static.tgz rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz + rm -f $(TMP)/$(PACKAGE)-bin-x86-python.tgz + rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz rm -f $(TMP)/$(CCPACKAGE).tgz # @@ -469,54 +479,12 @@ fixdates: ocamlversion: @echo $(OCAMLVERSION) - -############################################################################## -# Pad specific rules -############################################################################## - -#TOP=/home/pad/mobile/project-coccinelle -WEBSITE=/home/pad/mobile/homepage/software/project-coccinelle - -website: - cp $(TMP)/$(PACKAGE).tgz $(WEBSITE) - cp $(TMP)/$(PACKAGE)-bin-x86.tgz $(WEBSITE) - cp $(TMP)/$(PACKAGE)-bin-x86-static.tgz $(WEBSITE) - cp $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz $(WEBSITE) - rm -f $(WEBSITE)/LATEST* $(WEBSITE)/coccinelle-latest.tgz - cp changes.txt $(WEBSITE)/changes-$(VERSION).txt - cd $(WEBSITE); touch LATEST_IS_$(VERSION); ln -s $(PACKAGE).tgz coccinelle-latest.tgz - cp readme.txt $(WEBSITE) - - -#TXT=$(wildcard *.txt) -syncwiki: -# unison ~/public_html/wiki/wiki-LFS/data/pages/ docs/wiki/ -# set -e; for i in $(TXT); do unison $$i docs/wiki/$$i; done - -darcsweb: -# @echo pull from ~/public_html/darcs/c-coccinelle and c-commons and lib-xxx - -DARCSFORESTS=commons ocamlsexp \ - parsing_c parsing_cocci engine - -update_darcs: - darcs pull - set -e; for i in $(DARCSFORESTS); do cd $$i; darcs pull; cd ..; done - -#darcs diff -u -diff_darcs: - set -e; for i in $(DARCSFORESTS); do cd $$i; darcs diff -u; cd ..; done - -############################################################################## -# Git Developer rules -############################################################################## -gitupdate: - git cvsimport -d :ext:topps:/var/cvs/cocci coccinelle - ############################################################################## # Developer rules ############################################################################## +-include Makefile.dev + test: $(TARGET) ./$(TARGET) -testall diff --git a/Makefile.dev b/Makefile.dev new file mode 100644 index 0000000..bed6049 --- /dev/null +++ b/Makefile.dev @@ -0,0 +1,44 @@ + +############################################################################## +# Pad specific rules +############################################################################## + +#TOP=/home/pad/mobile/project-coccinelle +WEBSITE=/home/pad/mobile/homepage/software/project-coccinelle + +website: + cp $(TMP)/$(PACKAGE).tgz $(WEBSITE) + cp $(TMP)/$(PACKAGE)-bin-x86.tgz $(WEBSITE) + cp $(TMP)/$(PACKAGE)-bin-x86-static.tgz $(WEBSITE) + cp $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz $(WEBSITE) + rm -f $(WEBSITE)/LATEST* $(WEBSITE)/coccinelle-latest.tgz + cp changes.txt $(WEBSITE)/changes-$(VERSION).txt + cd $(WEBSITE); touch LATEST_IS_$(VERSION); ln -s $(PACKAGE).tgz coccinelle-latest.tgz + cp readme.txt $(WEBSITE) + + +#TXT=$(wildcard *.txt) +syncwiki: +# unison ~/public_html/wiki/wiki-LFS/data/pages/ docs/wiki/ +# set -e; for i in $(TXT); do unison $$i docs/wiki/$$i; done + +darcsweb: +# @echo pull from ~/public_html/darcs/c-coccinelle and c-commons and lib-xxx + +DARCSFORESTS=commons ocamlsexp \ + parsing_c parsing_cocci engine + +update_darcs: + darcs pull + set -e; for i in $(DARCSFORESTS); do cd $$i; darcs pull; cd ..; done + +#darcs diff -u +diff_darcs: + set -e; for i in $(DARCSFORESTS); do cd $$i; darcs diff -u; cd ..; done + +############################################################################## +# Git Developer rules +############################################################################## +gitupdate: + git cvsimport -d :ext:topps:/var/cvs/cocci coccinelle + diff --git a/changes.txt b/changes.txt index 263e735..8946f0b 100644 --- a/changes.txt +++ b/changes.txt @@ -1,15 +1,36 @@ -*- org -*- +* 0.2.0 +** Language: + +** Features: +- Remove duplicated code in disjunctions +- Better error message when grep finds nothing relevant. Thanks to Joe + Perches for the suggestion. +- added -keep_comments option for the unparsing of the transformed code +- Option "-version" now also gives information about built-in + Python binding support. + +** Bugfix: +- proper consideration of #define macro arguments in checking for the use + of metavariables and in computing the line numbers of complex terms +- better parsing of included .cocci files +- put included .cocci files in the right order +- bind position variables only once for #include +- fix bug in include_match that caused everything to halt when all matches + were discarded + * 0.1.11 ** Language: - Meta-identifier/function and constant could be filtered from SmPL by regular expressions using the "~=" and "!~=" operators followed by an OCaml regular expression (see man Str) in double quote. +- Virtual rules, which can be referenced in depends, and set and unset + using the command-line options -D +- ++ for multiple additions ** Features: -- virtual rules, which can be referenced in depends, and set and unset - using the command-line options -D and -U - coccicheck: a framework to check a series of SmPL files on a project see scripts/coccicheck for more information @@ -25,7 +46,6 @@ - eliminate unnecessary consideration of CVS strings. Thanks to David Young for pointing out the problem. - completely new treatment of statement metavariables -- ++ for multiple additions - better type checking for macro definitions - drop regression testing in -parse_c diff --git a/cocci.ml b/cocci.ml index b832b24..65dadd9 100644 --- a/cocci.ml +++ b/cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common module CCI = Ctlcocci_integration @@ -510,28 +488,27 @@ let (includes_to_parse: +> List.concat +> Common.uniq -let rec interpret_dependencies local global virt = function - Ast_cocci.Dep s -> - (try List.assoc s virt with Not_found -> List.mem s local) +let rec interpret_dependencies local global = function + Ast_cocci.Dep s -> List.mem s local | Ast_cocci.AntiDep s -> (if !Flag_ctl.steps != None then failwith "steps and ! dependency incompatible"); - (try not(List.assoc s virt) with Not_found -> not (List.mem s local)) - | Ast_cocci.EverDep s -> - (try List.assoc s virt with Not_found -> List.mem s global) + not (List.mem s local) + | Ast_cocci.EverDep s -> List.mem s global | Ast_cocci.NeverDep s -> (if !Flag_ctl.steps != None then failwith "steps and ! dependency incompatible"); - (try not(List.assoc s virt) with Not_found -> not (List.mem s global)) + not (List.mem s global) | Ast_cocci.AndDep(s1,s2) -> - (interpret_dependencies local global virt s1) && - (interpret_dependencies local global virt s2) + (interpret_dependencies local global s1) && + (interpret_dependencies local global s2) | Ast_cocci.OrDep(s1,s2) -> - (interpret_dependencies local global virt s1) or - (interpret_dependencies local global virt s2) + (interpret_dependencies local global s1) or + (interpret_dependencies local global s2) | Ast_cocci.NoDep -> true + | Ast_cocci.FailDep -> false -let rec print_dependencies str local global virt dep = +let rec print_dependencies str local global dep = if !Flag_cocci.show_dependencies then begin @@ -542,7 +519,7 @@ let rec print_dependencies str local global virt dep = if not (List.mem s !seen) then begin - if try List.assoc s virt with Not_found -> List.mem s local + if List.mem s local then pr2 (s^" satisfied") else pr2 (s^" not satisfied"); seen := s :: !seen @@ -551,7 +528,7 @@ let rec print_dependencies str local global virt dep = if not (List.mem s !seen) then begin - if try List.assoc s virt with Not_found -> List.mem s global + if List.mem s global then pr2 (s^" satisfied") else pr2 (s^" not satisfied"); seen := s :: !seen @@ -562,7 +539,8 @@ let rec print_dependencies str local global virt dep = | Ast_cocci.OrDep(s1,s2) -> loop s1; loop s2 - | Ast_cocci.NoDep -> () in + | Ast_cocci.NoDep -> () + | Ast_cocci.FailDep -> pr2 "False not satisfied" in loop dep end @@ -701,8 +679,7 @@ type toplevel_cocci_info = | FinalScriptRuleCocciInfo of toplevel_cocci_info_script_rule | CocciRuleCocciInfo of toplevel_cocci_info_cocci_rule -type cocci_info = toplevel_cocci_info list * string list list (* tokens *) * - (string * bool) list (* matched and unmatched virtual rules *) +type cocci_info = toplevel_cocci_info list * string list list (* tokens *) type kind_file = Header | Source type file_info = { @@ -1052,16 +1029,16 @@ let merge_env new_e old_e = old_e @ (List.rev ext) let apply_python_rule r cache newes e rules_that_have_matched - rules_that_have_ever_matched virtual_methods = + rules_that_have_ever_matched = Common.profile_code "python" (fun () -> show_or_not_scr_rule_name r.scr_ruleid; if not(interpret_dependencies rules_that_have_matched - !rules_that_have_ever_matched virtual_methods r.scr_dependencies) + !rules_that_have_ever_matched r.scr_dependencies) then begin print_dependencies "dependencies for script not satisfied:" rules_that_have_matched - !rules_that_have_ever_matched virtual_methods r.scr_dependencies; + !rules_that_have_ever_matched r.scr_dependencies; show_or_not_binding "in environment" e; (cache, (e, rules_that_have_matched)::newes) end @@ -1083,7 +1060,7 @@ let apply_python_rule r cache newes e rules_that_have_matched print_dependencies "dependencies for script satisfied, but cached:" rules_that_have_matched - !rules_that_have_ever_matched virtual_methods + !rules_that_have_ever_matched r.scr_dependencies; show_or_not_binding "in" e; cache @@ -1092,7 +1069,7 @@ let apply_python_rule r cache newes e rules_that_have_matched begin print_dependencies "dependencies for script satisfied:" rules_that_have_matched - !rules_that_have_ever_matched virtual_methods + !rules_that_have_ever_matched r.scr_dependencies; show_or_not_binding "in" e; Pycocci.build_classes (List.map (function (x,y) -> x) e); @@ -1115,7 +1092,7 @@ let apply_python_rule r cache newes e rules_that_have_matched (cache, merge_env [(e, rules_that_have_matched)] newes)) end) -let rec apply_cocci_rule r rules_that_have_ever_matched virtual_methods es +let rec apply_cocci_rule r rules_that_have_ever_matched es (ccs:file_info list ref) = Common.profile_code r.rulename (fun () -> show_or_not_rule_name r.ast_rule r.ruleid; @@ -1130,14 +1107,14 @@ let rec apply_cocci_rule r rules_that_have_ever_matched virtual_methods es (function (cache,newes) -> function ((e,rules_that_have_matched),relevant_bindings) -> if not(interpret_dependencies rules_that_have_matched - !rules_that_have_ever_matched virtual_methods + !rules_that_have_ever_matched r.dependencies) then begin print_dependencies ("dependencies for rule "^r.rulename^" not satisfied:") rules_that_have_matched - !rules_that_have_ever_matched virtual_methods r.dependencies; + !rules_that_have_ever_matched r.dependencies; show_or_not_binding "in environment" e; (cache, merge_env @@ -1153,7 +1130,7 @@ let rec apply_cocci_rule r rules_that_have_ever_matched virtual_methods es print_dependencies ("dependencies for rule "^r.rulename^" satisfied:") rules_that_have_matched - !rules_that_have_ever_matched virtual_methods + !rules_that_have_ever_matched r.dependencies; show_or_not_binding "in" e; show_or_not_binding "relevant in" relevant_bindings; @@ -1200,7 +1177,7 @@ let rec apply_cocci_rule r rules_that_have_ever_matched virtual_methods es if !Flag_ctl.partial_match then printf - "Empty list of bindings, I will restart from old env"; + "Empty list of bindings, I will restart from old env\n"; [(old_bindings_to_keep,rules_that_have_matched)] end else @@ -1391,8 +1368,9 @@ and process_a_ctl_a_env_a_toplevel a b c f= (fun () -> process_a_ctl_a_env_a_toplevel2 a b c f) -let rec bigloop2 rs virtual_methods (ccs: file_info list) = - let es = ref [(Ast_c.emptyMetavarsBinding,[])] in +let rec bigloop2 rs (ccs: file_info list) = + let init_es = [(Ast_c.emptyMetavarsBinding,[])] in + let es = ref init_es in let ccs = ref ccs in let rules_that_have_ever_matched = ref [] in @@ -1423,7 +1401,7 @@ let rec bigloop2 rs virtual_methods (ccs: file_info list) = match r.language with "python" -> apply_python_rule r cache newes e rules_that_have_matched - rules_that_have_ever_matched virtual_methods + rules_that_have_ever_matched | "test" -> concat_headers_and_c !ccs +> List.iter (fun (c,_) -> if c.flow <> None @@ -1436,9 +1414,9 @@ let rec bigloop2 rs virtual_methods (ccs: file_info list) = ) ([],[]) !es in - es := newes; + es := (if newes = [] then init_es else newes); | CocciRuleCocciInfo r -> - apply_cocci_rule r rules_that_have_ever_matched virtual_methods + apply_cocci_rule r rules_that_have_ever_matched es ccs); if !Flag.sgrep_mode2 @@ -1475,7 +1453,7 @@ let initial_final_bigloop2 ty rebuild r = "python" -> (* include_match makes no sense in an initial or final rule, although er have no way to prevent it *) - let _ = apply_python_rule r [] [] [] [] (ref []) [] in + let _ = apply_python_rule r [] [] [] [] (ref []) in () | _ -> Printf.printf "Unknown language for initial/final script: %s\n" @@ -1503,7 +1481,7 @@ let pre_engine2 (coccifile, isofile) = (* useful opti when use -dir *) let (metavars,astcocci,free_var_lists,negated_pos_lists,used_after_lists, - positions_lists,toks,_,virt) = + positions_lists,toks,_) = sp_of_file coccifile isofile in let ctls = ctls_of_ast astcocci used_after_lists positions_lists in @@ -1531,12 +1509,12 @@ let pre_engine2 (coccifile, isofile) = | _ -> languages) [] cocci_infos in - (cocci_infos,toks,virt) + (cocci_infos,toks) let pre_engine a = Common.profile_code "pre_engine" (fun () -> pre_engine2 a) -let full_engine2 (cocci_infos,toks,virt) cfiles = +let full_engine2 (cocci_infos,toks) cfiles = show_or_not_cfiles cfiles; @@ -1544,7 +1522,8 @@ let full_engine2 (cocci_infos,toks,virt) cfiles = if !Flag_cocci.worth_trying_opt && not (worth_trying cfiles toks) then begin - pr2 ("not worth trying:" ^ Common.join " " cfiles); + pr2 ("No matches found for " ^ (Common.join " " (Common.union_all toks)) + ^ "\nSkipping:" ^ (Common.join " " cfiles)); cfiles +> List.map (fun s -> s, None) end else @@ -1564,7 +1543,7 @@ let full_engine2 (cocci_infos,toks,virt) cfiles = let c_infos = prepare_c cfiles choose_includes in (* ! the big loop ! *) - let c_infos' = bigloop cocci_infos virt c_infos in + let c_infos' = bigloop cocci_infos c_infos in if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx (); if !Flag.show_misc then pr "Finished"; @@ -1597,7 +1576,7 @@ let full_engine a b = Common.profile_code "full_engine" (fun () -> let res = full_engine2 a b in (*Gc.print_stat stderr; *)res) -let post_engine2 (cocci_infos,_,_) = +let post_engine2 (cocci_infos,_) = let _ = List.fold_left (function languages -> diff --git a/cocci.mli b/cocci.mli index 50fce27..aab92c3 100644 --- a/cocci.mli +++ b/cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (* full_engine takes (coccifile, isofile) and cfiles in parameters and @@ -61,6 +39,5 @@ val sp_of_file : Ast_cocci.meta_name list list list) * Ast_cocci.meta_name list list list * string list list * - string list option * - (string * bool) list + string list option diff --git a/commitmsg b/commitmsg dissimilarity index 99% index 8ce230f..82b2a79 100644 --- a/commitmsg +++ b/commitmsg @@ -1,28 +1,3 @@ -Release coccinelle-0.1.11 - -** Language: - - Meta-identifier/function and constant could be filtered from SmPL by - regular expressions using the "~=" and "!~=" operators followed by - an OCaml regular expression (see man Str) in double quote. - - Virtual rules, which can be referenced in depends, and set and unset - using the command-line options -D - - ++ for multiple additions - -** Features: - - coccicheck: a framework to check a series of SmPL files on a project - see scripts/coccicheck for more information - -** Bugfix: - - bind position variables to the correct starting position in the case of a - complex statement such as an if or while. Thanks to Derek Jones for - pointing out the problem. - - checking for non mentioned case lines in switch should be unchecked. - - space should be printed after sizeof when there are no parentheses around - the argument. Thanks to Daniel Walker for pointing out the problem. - - avoid introducing sharing in propagating ! over () in treatment of isos - - save_excursion has to handle and rethrow exceptions - - eliminate unnecessary consideration of CVS strings. Thanks to David - Young for pointing out the problem. - - completely new treatment of statement metavariables - - better type checking for macro definitions - - drop regression testing in -parse_c +Release coccinelle-0.2.0rc1 + +Release Candidate 1 for coccinelle-0.2.0 diff --git a/ctl/.depend b/ctl/.depend index 8733390..9e82586 100644 --- a/ctl/.depend +++ b/ctl/.depend @@ -1,12 +1,16 @@ ctl_engine.cmi: ../commons/ograph_extended.cmi ast_ctl.cmo pretty_print_ctl.cmi: ast_ctl.cmo wrapper_ctl.cmi: ctl_engine.cmi ast_ctl.cmo +ast_ctl.cmo: +ast_ctl.cmx: ctl_engine.cmo: pretty_print_ctl.cmi ../commons/ograph_extended.cmi \ flag_ctl.cmo ../globals/flag.cmo ../commons/common.cmi ast_ctl.cmo \ ctl_engine.cmi ctl_engine.cmx: pretty_print_ctl.cmx ../commons/ograph_extended.cmx \ flag_ctl.cmx ../globals/flag.cmx ../commons/common.cmx ast_ctl.cmx \ ctl_engine.cmi +flag_ctl.cmo: +flag_ctl.cmx: pretty_print_ctl.cmo: flag_ctl.cmo ../commons/common.cmi ast_ctl.cmo \ pretty_print_ctl.cmi pretty_print_ctl.cmx: flag_ctl.cmx ../commons/common.cmx ast_ctl.cmx \ diff --git a/ctl/Makefile b/ctl/Makefile index 77e1919..582ac7f 100644 --- a/ctl/Makefile +++ b/ctl/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #note: if you add a file (a .mli or .ml), dont forget to do a make depend -include ../Makefile.config diff --git a/ctl/ast_ctl.ml b/ctl/ast_ctl.ml index e2417c8..e067f10 100644 --- a/ctl/ast_ctl.ml +++ b/ctl/ast_ctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ---------------------------------------------------------------------- *) (* Types *) diff --git a/ctl/ctl_engine.ml b/ctl/ctl_engine.ml index b202ad8..428a0e3 100644 --- a/ctl/ctl_engine.ml +++ b/ctl/ctl_engine.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (*external c_counter : unit -> int = "c_counter"*) let timeout = 800 (* Optimize triples_conj by first extracting the intersection of the two sets, diff --git a/ctl/ctl_engine.mli b/ctl/ctl_engine.mli index eae3732..ba21a17 100644 --- a/ctl/ctl_engine.mli +++ b/ctl/ctl_engine.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ast_ctl module type SUBST = diff --git a/ctl/flag_ctl.ml b/ctl/flag_ctl.ml dissimilarity index 70% index 87b584e..c54aea6 100644 --- a/ctl/flag_ctl.ml +++ b/ctl/flag_ctl.ml @@ -1,42 +1,20 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* option -verbose_ctl_engine *) -let verbose_ctl_engine = ref false - -(* cheap partial matches using assttomember *) -let verbose_match = ref false - -let partial_match = ref false - -let poswits_only = ref false - -let loop_in_src_code = ref false - -let bench = ref 0 - -let steps = ref (None : int option) - -let graphical_trace = ref false -let gt_without_label = ref false - -let checking_reachability = ref false +(* option -verbose_ctl_engine *) +let verbose_ctl_engine = ref false + +(* cheap partial matches using assttomember *) +let verbose_match = ref false + +let partial_match = ref false + +let poswits_only = ref false + +let loop_in_src_code = ref false + +let bench = ref 0 + +let steps = ref (None : int option) + +let graphical_trace = ref false +let gt_without_label = ref false + +let checking_reachability = ref false diff --git a/ctl/pretty_print_ctl.ml b/ctl/pretty_print_ctl.ml index 75dfa88..d01a5cb 100644 --- a/ctl/pretty_print_ctl.ml +++ b/ctl/pretty_print_ctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common open Format diff --git a/ctl/pretty_print_ctl.mli b/ctl/pretty_print_ctl.mli dissimilarity index 87% index ed74fd0..a7c57fc 100644 --- a/ctl/pretty_print_ctl.mli +++ b/ctl/pretty_print_ctl.mli @@ -1,26 +1,4 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - - -val pp_ctl: - ('pred -> unit) * ('mvar -> unit) -> bool (* inline_let_def *) -> - ('pred, 'mvar, 'info) Ast_ctl.generic_ctl -> unit + +val pp_ctl: + ('pred -> unit) * ('mvar -> unit) -> bool (* inline_let_def *) -> + ('pred, 'mvar, 'info) Ast_ctl.generic_ctl -> unit diff --git a/ctl/test_ctl.ml b/ctl/test_ctl.ml index 56630c1..8331863 100644 --- a/ctl/test_ctl.ml +++ b/ctl/test_ctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ********************************************************************** *) (* Module: EXAMPLE_ENGINE (instance of CTL_ENGINE) *) diff --git a/ctl/wrapper_ctl.ml b/ctl/wrapper_ctl.ml index 45bdd58..d417735 100644 --- a/ctl/wrapper_ctl.ml +++ b/ctl/wrapper_ctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ********************************************************************** * * Wrapping for FUNCTORS and MODULES diff --git a/ctl/wrapper_ctl.mli b/ctl/wrapper_ctl.mli index 0d078d3..62319da 100644 --- a/ctl/wrapper_ctl.mli +++ b/ctl/wrapper_ctl.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - type info = int type ('pred, 'mvar) wrapped_ctl = diff --git a/demos/first.c b/demos/first.c new file mode 100644 index 0000000..8f6f8be --- /dev/null +++ b/demos/first.c @@ -0,0 +1,4 @@ + +void one() {} +void two() {} +void three() {} diff --git a/demos/first.cocci b/demos/first.cocci new file mode 100644 index 0000000..1fca6fb --- /dev/null +++ b/demos/first.cocci @@ -0,0 +1,30 @@ +@initialize:python@ + +first = 0 + +@first_fct@ +type T; +identifier f; +position p; +@@ + +T f@p (...) {...} + +@script:python@ +p << first_fct.p; +@@ + +if p[0].line > first && first == 0: + first = p[0].line +else: + cocci.include_match(false) + +@@ +type T; +identifier f; +position first_fct.p; +@@ + ++#include + +T f@p (...) {...} diff --git a/demos/orgmode.cocci b/demos/orgmode.cocci index fa42997..39395d7 100644 --- a/demos/orgmode.cocci +++ b/demos/orgmode.cocci @@ -1,3 +1,7 @@ +@initialize:python@ + +from coccilib.org import print_todo, print_link + @r@ position p1, p2; identifier f; @@ -12,15 +16,17 @@ p2 << r.p2; f << r.f; @@ -cocci.print_main (p1) -cocci.print_sec (p2) +print_todo (p1[0]) +print_link (p2[0]) print "" -cocci.print_main (p1, "foo") -cocci.print_sec (p2, "foo") +cocci.print_main ("foo", p1) +cocci.print_sec ("foo", p2) +cocci.print_secs ("foo", p2) print "" -cocci.print_main (p1, "foo", "ovl-face3") -cocci.print_sec (p2, "foo", "ovl-face4") +cocci.print_main ("foo", p1, "ovl-face3") +cocci.print_sec ("foo", p2, "ovl-face4") +cocci.print_secs ("foo", p2, "ovl-face4") diff --git a/docs/manual/cocci_syntax.tex b/docs/manual/cocci_syntax.tex index 773006a..e589e48 100644 --- a/docs/manual/cocci_syntax.tex +++ b/docs/manual/cocci_syntax.tex @@ -5,7 +5,7 @@ % our implementation using the Menhir parser generator \cite{menhir}. This document presents the grammar of the SmPL language used by the -\href{http://www.emn.fr/x-info/coccinelle}{Coccinelle tool}. For the most +\href{http://coccinelle.lip6.fr/}{Coccinelle tool}. For the most part, the grammar is written using standard notation. In some rules, however, the left-hand side is in all uppercase letters. These are macros, which take one or more grammar rule right-hand-sides as diff --git a/docs/manual/main_grammar.pdf b/docs/manual/main_grammar.pdf index 60ddeb4a8e7ef4828ad56ce416305f88fa46ac1f..50a705c6f451e3be5213c8e5fdd5362babf3726e 100644 GIT binary patch delta 40621 zcmV()K;OUR#u38D5wH>mlVBMslRF0te`L)isrxAkqz$@hf&@57_AMz6xDsuvkwll2 zv)RAT42P6uubc$vi^a=u?pO28VZ%3Hf8ck%|9t-N_>^WFQ8Fp=Z1cQ_WyyFdHbqe} zQNvNY`6+om>g`VEJo$0>^c}6fwrUuZrOnSg=f7@6o@nbjGtwbvf(ZdvV*8)xe{YG7 zV0E5Lq>}@gs^08m#j08mnIE*%$~H%Of3W6!qGd$+m1&x8)P1iJJCSeWQRgHJgpMtBKfVTl7n|C;MH4Ybq#_(^!} zHM}C_rMSZL%FFS7zzq}h=CfS zh!fhbT?rU~D2oX3u!1CK0`>u*F(WwUdn{70EWKdy%;~8?jb!C)FW}Say+)0I{h{h= zme(>uc)?td$lUM?l2PPlykJ?C2Xhzn6f=y>^5kTk>t4w5isY-^CB5J+INvytPgwHv z0{xuw=B?q2bjjOYt3k3Y({~a8F)slSAPL|ACGZPkwzy(8f5)t+s6tFY!utmu|NHs- z?`U;hS^yv5rQBAPe=IBV>wuVi{>HQ)^S4h}bQG`DR&u}#c}aD>BG!DN>ANwkRn$Vg zbcI5)O3W^PoTk&q$H!()*{ttQ1>4(4pzR(9)s3G+WV7Qm^lN&pAgV6j75p#b8%W$~ zR`_DM%d(o4nSer-vOg(*|B@!^dzzqv z`ks24L+3F=f4RxdVB)G(0SCy+Ye)a@8ch)P!q;CTdQ#Kzd0WfGeB;a$`awt(NDjKd z^g09G(fj}BD1)BVugZ29iV&g&xb;MSIJ&*D1BLL4UV^}@imC1@#x=G(O`or+zE6!c z^srnk9zn!`cHm`W+Mps?m(VC<7b;kKAMi#&U`}3Me`=3!Dg_9OBEQkbzw|5L{s=Q}l6lPJ`!!8WE=-!Z1iC$B^6=6mW;7r2}rAoq3+?Z6kXOTcAobYKg5zDQR$ zztD1iPf4`z+HQIab&F)XGKnY4MM%ymm>0$S8}_QjLTrH0)*9<*?He`(#!6;=mkXz@ zo^<2ue?4Bk9=#@bWQot3uY^g4Yhr6?zEG4(uVe z5&jd>HnkA;>Z&mVwjirzonO~;8S44>kd=a%fM(8#h;5JOk-}s#InoIwNVg&<_k~^- zf8}MAU&)RYOQA-_<_`3YUGrMr;w;POh&UM=TB|ChX0OUZ8wdx3mm{`WBnN@Cy6Kfw zm$%^5wD7ac{*Ay+*1(uIbzb_JLh4lu*J19$S2WtdnF^rY6c*I|Lza#mHUQz-1*JE7 zUa_($ZyQN{8SugsM*fYfE__>k(qrr5f5;ddV}9Gg+-B?vVtt4x!f5xR=Mk?Bup@mz z?nXPx*+g`~NSIoE0MhuXF^3V^|D9Fn`94&T!Zn3z2NM{OR=scH(=gZ~*a;b-N62>k17R&{Q)nCVxhK%S;a@K9e*$~c zVepG1c4OOt#NJ9kGgwJR)xi-+3^Vaar(J|Iw0{XeF`4N$*7l6m{3aEs5Q_sQn;yH`YLG4dD-vwSRo> zhkc$edoYa56>X;#t1hGRBJ9f$f0R{>uJUf!SGQqb!U4MKNWoanFN{|b;(R;ByGUjY zdjJVm2cXvu|0u$R^u{fvAKI_fbZyg^@Td6qCuQ8Z9VL@MFXI0XTN}ON z7hGGgoMTf|;v^&E1h;(jujdcH1Lusf^9p5dWOH0h2xv z6N97>holezhole!x1wO>Ek~~cGjv~N0XqDnq60Vpoop?g zo&Wv=ES&-7PDXYve|z9!53sZ|v2iv1CxO3mGy8uf3jWgdulyNBBxGeYRB8V= z3-(`zN`D8zMa|RUZ*Kpi8hLxu|9SWaMnuHk1K>^1%)teqXW?T0d;k6>#LdFy`@aeK zFCgasJj)xoI9YlCbpF=O#Qd-7|Ht=#pC`Tl0wZo`VsHA-=%~6F*_r;Gw*M*kM{VNj z4N{RyN z?ECyPB6hf|4d3fS8Cqs}K07^^&Ky1tWM~e@`>|{&`_h0{g#^B&)B{DRzbU$ZIcX1r z81>5$Gta-rcwaBdZ9`~tFlij_PAjYEm%T#~&UUjp!CXI62aviI1z?apIUxC&q&LN5 z{y=E~L2D>JJEurKd48fCo){Y)>AQs-IKZdPi-#rWb%Q{phz@Yf!xz+6ulA0^q!Bty z5KfZ5I~X$3`g16&N@lTd2`mnOlkmW6Xn!g`QT{-gEXmp)IFw*qxG+-Mw8K?lQhLG& zmMS%>jb)%Dx&Bk?FvThX=c1Ej6OjzjpRPK%65lYHx@mjZF+%1_7i>u6m+!o72IX?2 zy~=}STiF|V$9UEwO94znwr~Bxk`#x=G>CS%oO1=widyI#h3ew9XM$pXiM4uaK;EPy zJ6hks>sj5Yx2_y5T#}-RN=Spj+AnJC_acGFqWJkO*+9{@B04&;F11+!MktEyBCbXd z*j6VXKu#9sce;>Z@rOv%=|K|ys%5$NO8!NocN(GHKO_Ow`&-kS>jc*&oIW5n;s;k# zb#%_#?GjT++XMeShZNC&BwW!Fv-h}Q|L)=j=v=#l-!+L}O8HAD3jHPJ>PZ9a^R;a! ze&TWT>v4}o97^+M)|k)MiDZ@h_=N`X&z|L)RyJ<{G_Xk zZ?fj!uQpA~)zrJq^d4xCSD?~j-5^`iUYLw5H1k4N*IG+7@yK^T#NY zK1z?5R^wjcbGyuWpbH*J7_4PouIp!CPO;I%OnQM2#I@)RfB-^auwgGD*PwOv62xFw$=;2jRF zc!cDPm%KxAsRHDBku^g^wUN*^C%S}Xx}9m?>PQ_xAHQ#vo;r2Ga21bDoV!-ZKq3~D zQuloIC7=!&YADWofel0$)?0^NFYXPHTi9gjqbj715szno>79;5_8rzh1pIu)Vp9Pw zi0ZE&`MgVk>h#BXNi7H0Y$Wa&NaP?y;;!)MK^IOpI`1R7S-?%ff|bAtpe7n+^jO{& z*+sA-D_PPbYGI$|d4V=l3JZ``oyL`f9B8H=)yZ3?x1Dr95u`w!Vl7#QPSGx;pVYkD z{iOdESQ}!0Y3*av8qyOw4d}wC{q;kDd?OJ}4({i-Q!u`_8@XY`edbJ}1lI+c)+?lt zY&H<3qhah()AFD>b?FU;N2lB5#sOLh_Q7UN7YB(gP5tDV%LJm6RY1~rc|r&M zFiiZo8#Oi}XD;F}Grba`PEF|9g8UXYAXMMFvZp|c^NOhLUDZL)l0GrJ33xFisQj#2 z^$c8IcS^$!zEe5KQFrmM7vG9_yIby5L_0Wt&ry=FaOElR zJZ(}$;MGk=Ak+1c#rXy2AW`I10KKG0gHN9J_DZB{W?@PshbcmA8~9CqEtVnjinqNQ zV-Yxoq-abcc7S=NwiERjnZLRZs`6X=1%Mni-to#U%%yo!wGxc4IWxmy_L`>V*;M*} zNBdPR`-&mjX=@~x+GkL{BX7)-Y0k0C^K#aU=_7+4has$a%4EVq6eiULKVzC%i32|p z^w>IJzatCuX9M_(6Ke@{T~iC6iiBw$Tu1Irm_9}kr|iTCtZzl-*$BD4nksQB=BrnV zW*O58p+-AvK^V6jw0+P8IiZ%m!s$zYFGXb-z}od`7n9J-Hjuz<=n5jHX#;ZZ5Kcvx zd3NCsSH2QNnEpxJ;#P*eA$3XrkIL_f3kWRC$?b>|3_!}GK@x?dL~MVDek8t0B922; zLYIqOxuZzC7327y!@@(zDDj|LO8THO?1RKpY958N2Mibzpa*_@V%M}e`m?xynCKid zbBRx1RgIy)pS3nAsG=zEX}eosd}&i+FKxtv;`{nCLIjubYQ$8oh%$4A67c*xZCu?V zOOti3DiNlTfsv_TxiHZg2>72KFLOSgY`RsJ4;#$#gI6^n3ao%D`?yGLhsQlW^pBTv zCmDldVtOB|M5ws~1{_iBZ855UlKsWv!Th{x|A-0u1R0|N$=)dUpQBv6A>d`FU*YDY zOxTGSKtTZvpz{>;sal2QZMXfUl9UneeNM$xBKq3<+zj8+E@0mOU|yXCxMA?4-V%QwI9gX|mQ z0=HNoyj4xHvl7UGd)?2Mi8Kc#S{P2A3m%;pgkkUUBRN%u`iOjtNT1xxu~(}s@i34z zY3GyE!OP6-KkMPFDj^}p-lI}KU5%HPbGpg!4Gu->R$L<7la1%YZY)Q-o^BT-ss{3{ zKDvAvvk^QGOx7n~)tC@|}L5y`2Idx=#~+?74qy3OrR%3)J4_)|7~6IyT1A(x%d6NB2h!t0)-+Yg|dFMalK<4Xebuid_(8e<6{88S^( zGwNN03Oz?ELcE_ohI-@+5oWZINaKN6tJGStQ$d&oPyE2r+}zuL$2-Bbk2mA!pbO$V z`J~xe9lxHq*yVO@7ZmobZT*HpNa6^eOWejTGF~J6-4s#fq=e>uY!`w3-Xa>k2Q8~C zb51Piv<*HX22@(cj=zUdpG<;Nq#=ULtAM%DUTM8B>^A~zUZ7FbU12i%Y4{%O?n=^X zsW>+3k6Z9(!{*I@MzrfvuhHW)x#i|?k$dunfZCgh3r_23o9zxOv*c;IHbfza^~2YO zx;P|=y-GNygNWz838t9jcB$rKB{qT8=?eoHB|t*jgKf@YFy74uX|t#yftxtI(#~Ta z&xrv{OkBA;E*5Nh)+;Vc-kKn214E5}@I@j}oyw0i#sMyWw-%coL@j)kc*gJ2wxB+= zit+q+2G`c6O4k8M(Mi@+ZL;vUGUZsa;Ng{rD7ch`HolRN6tWLEYvh;$AAykbg_gEY zh2)Nh*)9e%bb`#pGEf-U^`N9X9E>yHuQ6o9Y_21#28S5V)5f>X8thS(<5~PSWJu`&96`Umq1tm%8K~Ihv zHwMq4pGqfA3M#pE+!6&tg_~fkfC4Q0U1>AlhRF?o{!ZP!F?lAqcgzqu+e1s~dqO4m zxdonl^Hk>shAkD+=2%*1`2gBxpqm~cEE#lBIPwx5+58pVmkG@Usk+9;y{)qt*To<% zbHRIBAit#-L{sy9L!j@vb;x~8E--TXeE1WO20oJXDN^e@ms{AYBrSqOZfyEs0!Dt< zd?~qq)LyRqZGPt_{7=(1_-QBq1k3`%{#3BtptFYKxjDQaM9j#(Gz=E^x0?QvR?Eks zh)7e}#oZrS`uJ(D(d3>?aS`$vj&Y6!)F4B6+*Nf>^ z(|gQQQRZURAPrQVpEo&%7k*{r%Ez|$P4hH=W)O$=6mC|XQDPMMLh!ghE22{~RV~qt zyBojwPF-UV_(y2@{WC;FLT0k4kcOENRaUvp+D`l^6`j3g<~{4?`P3hqxb^n~Lx>^+ zjF$~836eQ~j-UxmCB8M@nGZielU^7~W0*V)=LxB8c`%R$uawzT_+h1j&gzu~@UMn{ za;^U6+M|g4mC;kHi=jjCdVBPI{tSm`6;1<}o#ArJ;swq+ccC4ugRa8uJtB+B`?4KR zc>TaqeQzQcrLdTC{|-R?2Z!!%-LX(E$zggjx8!jle%O;*CPJYHvdLpkeQw&&9wH65&ZSr z2{uK9UKO-+qL|P+A9VPeZpfgh`EMI$jh0p?1|mfrqa^y_0*iZ{JikW2NbL;cNrDI? ztUQZJmxFGyNt1B|?a8UG^m!2GKtpYUlSf!hUAW2BL+A9D_FkAQo7}4<6*bR)_^-ab zan&zFedf1G6TLa_jIuHN^Xo9>-<7z5I2x0-Xlavp-Y1It-QAtc`eiF&X{?W@?Mck_ zCF**u2(A{1#MagK2N@5U*2FY8D<N_6Epd}M6grKzM8{8y zU1B+Zt~Q$PbCnOQ4}CsO=^OHY;)1-qg*irnlmPM@j`En)dW(@bzsHko9HBVgFn&p` zdk_tg&gMgur66bXq3yLdu`gjX^4{zm~!eDW+BZL{w{o|G=QJ>GAViRB{R4YT(3jX&N{5deya~WGRMoK9)R{{GjtBHC35bP!C(~Z0$kV|wCc#l3Zh6wq*`%@9&qp2 z0{?p}DbG%tACS>kPP$+N0ioVk< zbNkK$3aPx2U}kNkB}fchvJ$o#{|4#GJhdPe?DbL<2?ff_1AC2s@Wh`b-$*~v6wsbl zKEj2h%QXnxAvw3oZdOf-l_&$XTn7S?n zS2$Hhle;Z{Gi4}?f_k?4(u|+}9wk7^zVcf7E##L&);b2|v}D8^Oq5@47lxGgcO)96Dk*c{m>lWk8oLbk%!k8jt{}~K+x^unw};`7zx{kO2#@;F@Tfv9u1oe) zt!?UKdR5g&8UCs*SBRg&SNnHwV@Wh-`n3QXxYhg~;!LxD30V-`?fA)XlUrO-2oJgS zvEF2I(%RFJqU3nwSRbxf7HWW}Ne|fQVc1ue%VkO~NBpGCoF&wB$kS2#1k1-e;0za!47d;iAS@$9~!?(U@;g8ZUJ>(mbw`OF4B7 zE*7R`&(5-ct!G2R0(Uo6gQ8NK_=nv034?eh1(ceL#3O^4qy&&Zqi@G{ahE2KR77jD zhQahB=6_c1Mql?_-en}-8oxltF~Z{!u>I9(H?tddN~XU8Pg>&{sdw{z9krLtA2s?E z(Q#f;_ns5H(&Fiui5)Dx*b= zUmgc=%$*LpDVCBm%18^Ku^3sAO`}9&Tm=CDgMckC(UWwUFQirNFL-TvK6=8GR@Th- z4H$?r4>WX^%z&Ri8)KfQj>ca3C|Q#6iA0y9%#F^o@G^dMH(Fn@eq~)HY2b%1q5X)m zqxx)rZs>Ym=3>~p%O(F2hOs<|sWkSBXRc1^gP)r^T7<0@ViHr&?fSN!efYc9=?amG z)34te=l1?1e|p^k7&hit6jiJ(Gs7)+Pq_Yz4RccdO+g*Uc$7O~#Qg@Nv!p1POUD-O z?t2wGoYY7))do$Dj`GkY8gpkTn#tyL`8n@@C{#kHz3VIhfckFAGLKq_Dj6@%W9TXBlPwNqlaOdz)p@M!!Zeg_@rc%^gn(6R{V_9}M zgNKivfZ4~tgU!a|m_=u6C|r8=Bvar}73zNAZ>g`HSkll>t(pT3WnoA@V!d=)Si+C`fA`c}rN;xnfc*e{euw z69IJ>FPwP17?bkk{Q-q^gc_!-@}ck~+MCz!`%@|FfwSo1u1pE4%QN4pKZGNH+>i}g zsuU|{AcBRY24l|V&9a&Z{k!$1n1$1XPcQhed_tXm#zZcIE_AeVW<{0us0S>8Tr{a^ z5)N-<=@S*P=5OyGE6wQ|)pCE<#W0hZ;aY$4G0<>YjBQTp=35U(N$1P3hodui-=-$0 zL8R#U%}4zSO8KU^X}&UiWP=ZghmP*dcO&Y0^av$W?lY) zI!FJRT?_VD)=05RZh(i3KL@`-2^(h%jwWrjCEV6SjJ5oIvf&34^0tt)WAeknxhugM zXPpH3B|#%b1J~-Z=`00BfZF_CqMd0azxI}|qlDT<)=%FfLL@!V8xS~u0Cr`f3Ix%H z$r}3HDR-8b+h zzMSc7ziCKUw)tdc_rtS)P3zfVfV~3EWX*}dW~&gpcG-Otoy1VXyn9_FMsYaJ- z+AH^PpVODlrrgtLVU1jy*gLYI*5pYs(NmIj|SF%t$j2ts^RV!-0!bC=^ zlX?Ub@{Yq*4SE((sxJk?*|-dRn0XaVEokGQ6Q|?Zokr28N88cmT1uHv7`c^TByv2r zFn@;&Kxmja)k2qlqzsw;!Bgi*o)-L!ULDcWjsJu8NzH!w!}Hbd+ad>eGu;ahm^r@; zA|kJM{GnNRakc=!pt;pg?6YXC*B;oD{@IYDF$tW%jQI@K96*B z2#7_{azl6J(kskwDP3Md-~j8;ECx_fBZXe4F%}btBE!^w$Iyu#SUbp*x0q=U)gLmx zRZMjnyJil0VRyTo&GDJ6J*GzJuSKrmzAGqk!3~>!{!^!vCKaT$x6~`0DuBh5!4)KXhFF=JR1_YHMhTNGhUn*}w=_`JNlzCi_rMMIR> zS9++04+j!|1M0~rI+8y|PCLMU0#%AMJ-DdAG#zzw`*zJ?agAae=pA4hQMooW*<^6G@#BY5_TIH1(WgvvW{$LQ!j+++Gq@8ao!t4rZeIH8>&bWD zRw|&z`;2i=`1$ik2|e&J|z^DS8?k#Fj+q>6eG04Ew4>O%e>?yjaH}C*j)s z@y~RBP`Y9`QP)N`vu43>bU79m1(Ly+z zHJY!mMn1B4Y-Gz$&gaZ(4Y5q+jZi9w?NpF|9Scp5*(A@r%#sC@%Z>fs^cTD3_;=MncNBm#K6kd20Y!=IzPmMd*(?TLj`_hVRj#;7Y+$JmK~ z7SHt6*(QwB6TW&ooZyu$A1yeHltY_99xId*b2o^d4j328;asD}R>Su$||-m_qRzbRcrTR9pyc*E?>vqr~{IMZ6KJuok= zdP*Aa>~AbcZlP0_pRSI^B@O63~&-A{SXtVv%HwaUEj49YKK zy;yjc8vZ_)Q+WfiN_=dsRI{gvKUhQU7P7Nim@&i!J>miP5}|{RncWc$IKPTNcdb&Q8d~;oIWkg0L+oU#$7D3oo1r=X~FAoH_poXs@ zjdfN>i~JxBVCxnjD(-^MaiQxh0EwK9%M-TVM0;2ZQ0x`jo#dKdt_xthq}hp+;y6X3 zM=V!g&W48nOuPY%lzdj){S!;HpoM-y2C<7oqTjbz+`OX z`p|@}k@ML~pa9>W@qKaYelwqmaT8CL@VRbxd@0v{3_*kHOuaciE87rUtD>zB)DTGq z^`ooEA}{mgH8$joAT=)YbJI*%Y1zgNqiXF8tlk+lE-cATqUrX3es+i}mC$KS8zg163Y?m#MnX2ZVH-U3k7F` z>8@+;mjb7v?$b{F(WZKYidTByZUoCSixFx1IpoAS8HuR^kPqdVXEp!DIi&(^!fgK! zL<-@9tcTRfn6IPMu=)gymKJCQ1f6Uawf##v22uA4HrQi--Lr3Up=5<88vk(?Vr`cz zv_pa&1~)#J^loZiANY^4kIrpv*P1{BM5jcnhvx9pH>c%If5>vx#WLZH&)L{qW#5LV zi38+ef&CXna;{cPUGv2yUFEVg=hKi(9UT=YQZ#5wB!oO*Sc~>c7GJlS^3myTSa=lc zT}V%#1h30~zD5gjKlZHI?8}S5yC|kMdx@_sciR~pQ>inb$t{9a5{UTxqlN4DV}_w7 z&_7jizE@ui-xO?FThYj*D(YoODWQdnkB-ickqm1n2rf7}gX~Pc4KI`C#hAIbwY^$e z5LzD#@&7@%iaZ5v>)HLyG}~0s!4nK1XDIDlsdt8dM-gUmDT!A31N~{h)*OKEZRHtx z!Hkj{Q(6u}mY_#%4;=H48zL!J9S~84Nt6CbaXg5rl?x`mmNKsPxr(}4 zmpB}6`l%h2!uZ46>=K-9HKur3Eub2#)#yw5XpKYuR>3!>*0j;n(!m^nEMuHg)+Z|PA?xsuIB4OBXhL>U#`npig=UuVAb|7Te zBJSPE0C|U~>uK(Y8YQ>GMWn~Z{qAxa*qYmo*;Z#Q=6k14IMYMsfM|fj%&F zT8^KSr>%b82?z37(w{NIeQk)?Y8%@}l4N{;CtDCcFFwOS?jiUZxz=+RfR@vBA@4+g z3tAo+5>Q#tQoSTOBJp0Z)|in9xL93K>Y*C3&vL~ihG&X?GD^yUtxxClT-}aEm~2rj z$hY2{c_e!|?BR;_or!~wdyc1MmLTh92h*&t6cR4WlY+dMRk8<(Kj51~*2ttouTHgp zGN0^&nY)TJcW5r_kOkpC&W5{UR)1$1x~hCpnhL!os#2#4%A21Da0J#bL-!$JfTSdgeAK>_Gju$R+)%=v2ab;_ zCwb*?K1w^D45LIrpf)cErQyBYwz{&uaE&4QutXLrx9zHDci)=svJm<+zylLaio<4$ zKwb$Yi*rVmPMruKMGEkoiOk*;hMF~1edWWDTY0#v&>DZfPZ{EC95Q7JyS<2i1QF6Q zOC{fRGW-9O(ZVR!c3_ec;y$>sxv_fJp*mq*N;K1sn7qlt7)S8jbgb!Qm1VIQeCtns zd?)LGQfyCAXTN(H3}18X1y%;dUACOxS!!mfEZZ!C{_6F%jA=6E&P^aDya|gBW@Io* z{B_5`YH%kav4Lh|lAcT}bFcP)uuO(FAuWgRr9*~|;Jg3vUCLkQvRO8!$J>@V(k>PU z8WZ7L&@C=BkqLDFv)*GoI;AAS?v6Y=4NgeMBF|l-M9jpBME#sc zrZIQd`W0-0Uh|)=T{pd)RHus)gwD2hze31genbv2a4)iw%7{Nswe9_Xe!+}o;Y9k= z&rm)K<-Il)dX)ddz18ZVjx40q`ey~Y^dZVAKk0#fDB_*@RD;Y3A$E&k*) zN*f*?G|!ljHXH=pM&cKA;V6AbQ|ekI!cLfv8bg-U0SII?#oZTybNc%dMeovJv>~s(B3Z89qJ@A7cF2#3N7G>M>=L`+;D8 zIQDy_V}^!c8A>=;be>*wss}t7{*74ye+F9%x=fZ6S0xA5K{zNbIm8TBsSxj;4l&sF z=G1zfvQU(nXgq1Y+wu%%_uftfd`%I<&_i0wd_R=%fV`sKx`3^Jn(ryYCZC+tqzHO7 zs?Ev=v7`{I-IhmMS-TPO?dAusst+&G_hf}3<%-w0Ns)>00*XvZr%f7osHKBy)UZ_) z(DFYh^VaA*s4oZIkRx4(3IU?=Zv-~-TQ)X;c{H=k=f0JPDm8ecEgPY8~ zC2ThI=1gth&Xy5>o1pj@TZVdk!I3p*p?I_#x{k|jn-hm)K)+!Lp)g+1=N{J-?xq?v zIFF{x9&Nk8;h1!cZ1|C<66np}x;rjw<+p`~LUH`>X}I@VHGUI0C@3Bi9P2Ql)0@e-BW4RbE*rF~Y%7e}60 zyhkU}$-c>BX!4Di4SxCD*a=Ot4lxjY06`7 z0>dSlG7S#GPEuNYs00R)A|eCy8HYMgIw-3gaU4zM$EKL~AP?vs9)MNfjvWr5j*it z8{wg7h%&{X9Rau-VQwv^$^6lGy<7#0fJ@0YK-_J{4D69#G-AK-ybtd7cOfb=XY99c zVzjnZOV~e1Yj|yy3)#R~@U2;5QHLQZ1_fucf3+sgPRDb%iFz^%VlZ}GkcJEudU)FY z%B*UC@y<|15E4U!;=#gNgzN~I^`8l020j87`V?z0}caji0t6xuF zX`y{KX2|adYf3p-DgT4eOkPW02^VJ!0b^fBjJ93 zLt%g7Xh+-Iql1Zje*HEqt<`4n7=hLb1|f}n2o@xV>2^pXncNB4^1(3d3C9B3D^aT6a8~$zbYKF1$@&@|ma@Kwzr)XiJNnQkqI-17<1Tw8)tMns zQ>dn1GW~NJAM2>2-%Nqm(fWQ{wQaiYr)Jm!a0($J4A0`Z0~ltG8<;-qblZg}K9UqQ zXng55w&9}Bv14;#oO=EvHNc^m*x_rG9|4tl<*i z>-_%KjMC%>n>n|i2jG{N*r-r)76Z;j8x>3a(_|GjqJ0TW?48`By{&TibyCDu14>GV85s6 z0AqM}?3-$~NSC6(jvE*8hjM^h4moj+7-kT0WugLkj6r6Bd9 zdZozNijIonAR^7Ew$8J?O>1SRxnaIA4SxSoeyF>!I-By%=8eLj$FM!Yoigqnv@8t_HK~A-Z%r?l ze{c4Unc$;>313d}c*^&G>4TnI#0llmk?UG(Q*W4Qn%Sg+@(059;9LhC(c)(<`X!>R zIrhvZpN@Lv^H_hJX0W8oIB~(Wkf~a5WnLU#BwD9mIL|QP*JtMRVp{I12F|R>(k!#F zqtzC+$2n$weCbnVvRn*KkR-4*poc~C-PxNtHx^z{@73^PQ(l~Z8&K<+LR_kV#PR&9 zJ$pHPlK)Hz#e?&&#_y#1B=x)XbTv>S0a&_7Rz45j;H?`yNV#+H%c&-TRp!DZb{_fs zA$#heqtlHE3*RaXXH#g`E;II2FT*>bSG`uB$rxeGo;60HYDLLSO@Nj~NJ)EUL0=`M@w!yRd( z3*=+kba8fn`5P+yM*#%s*Ylf&e6w^r?edwK{P||3k)?ng$+wU+<~X~8n)y=Y>BD_Q zlt!+i+xggUa+T^&@>j&>jU!vP`nl^0^*3Ce=Fi_VS&_Z=4EA0?cTfo{p)lUJ>*BW% z_?d@FTlX6`u1&g(yPVI982*H%d#3dCTa<;jovW08#(CiO`SF}3pu7aQq3%6XLypp( zEWo}f2s9~v^CqwB#NQ~$lRhsB+#kY!3j9u6*s5>Lr!$Wt|H+k;%Mi!FE6wg@sK0)I ztF1}2C&dcg!m;k3KkLmgWiS8sYe$8#Y0D;L>CcmfTtK&xE~5HxM)JIvx#$@X;hu#Vcz?Hu`Vl*qO0RBR6fMsw;Jau zbW*~9bcit_XA(c-i!UzR@uCx+F(^?#m1t(o!IHDt6Xhi`N|UF4_C~lSG@c-?5gfk> zVx36;fsmji4w&ZZXdB$xJKil*;;7Ea*I4;8jF0bnNXa5{XOAE%WD^^!>-$ZKR1(R5 zOkGJj^_yrRsEs)v_7ajI*qPa*6Zp;v#A?}^rzB-?6iyd(f1`; z7m~7h+kzN@>DmAgdRsc=2-){>u{qegW~2=~OW zin(und1?t7MwB8FoMNJXD1{23D_NL-9bRvsKXivQ*vx3(Qa)$!vFV?&Mq^|ZV?G5X z!^KmhA#9IqrnmdSQ-5WhzgFap+)X5IJafP_|hg@|w!DOG^vHNq4h--7hN z$=}0pC!|5ql)=SkS&G#|ua&!h2J*{XJ->R-)M)-RWBJagBT57GeKmUe=;Kn>Xo3)$ z?}CrY6{M3Fzq`F~f99sAT$PdUW6w|TIUBZ(7&dIW5;(>(kDM%PnmA*;x_#+>ytuZu zY{=-dV17N$J?+l)GLya>K}s0t=GPo3OejQ%WI&NiyMZS)c23c!2MlZmD?;NE8QsbT3O@ zA>2@C)Ct1{6(LXe>WAikKunQxJ^2wk&I z0OFO*I(uVRr_VA{Ydt2Cn^}nQLkxSRew0k?#cahn`hhq)575>aamOV-IZ zrJ6@>S-I2Y%B^6h{>(PR5@UH;zTQl9!E2|Abs51x;!)6$iLpba@=`>9#!G^fX-aaccK2HVOrzV z+N%l((T08|S^z)68Yc19=_&=!2GY`NI&cQ`acuy_5)};R%`p@cj>)6Sd)Jknm*;vt zejKs{o7NNeIg6&=%p5?QZKhzC77IZj5GZv?s~C)ya*8^C-1jx1nAJ2{g=|xlNBZ&~ z1~eDAdpgRgp#KgT;XThfy5FilZFH>cqH8qg$7eX~EcIIjmmJEIvh_s?1H{BNN0FOB zULBTtlon|>d#<>}bj{blfTzzPhT6lYcsXpXi9o>&S!VI5%{fp(F#~X*JFUyUzhQ#3 z5}2DPABm!W%5L?tBRb&4{7|Rn)68%|uKzJGK~a4q5Xq3yCbTcyk^AgiGG>~BGYZ8& zePf&V`f$+vF6n$|5o^1`GL=-9qY$kn41H|?ibuQd$lcf6;qi-CTL3mz049}uc1B5W zXk^GrRPUp$x)tE-SP%ae-`ZlRkN*ynle$bF5P48{MQfUU=Hy7C&U1Bx*A5dd0Q?yR zmz~(_r>9K=?Dtiqn+3T}Mpq>4wWedQtw-kf)g^wF9(@nizw8QGW*Hn{32H0_TQ7<_ z00Yf`owsG#aByg|1}_UAz#eylbU`4S8-wsLCd1tZ2bGusAu(r$q9gE?2s@r%fOlspM?oItnw9Cf)CXw*mIK1>jyp2=EGS> z#BS7krq3dlRtLs=p({UDeORFm@X(HCxtz3rZZsT-rfn>1Z9efi6IecpwRxV;WZ9h7I(&(TAHbz z_+^9QH~UjIKaV~u$x)t%=H>O>rO6lvtSN`bDZ9jpTLYU8z81+YasVZ;BDc}Z^C=_vtCHz z46Cq?uvj*2JBZLtjMDkbYUdCcoUG$dPL#!0BqScmkPIR++~A+!Wj33}N9~c=?%h^O z4{IvkVN7tXQJf^o6jGeb1`sQ7HMd89C$IM;-#WV6c{iDDTzxqMy_nPM@{ToyLCuYE zabRh89EtNHU!SIIOfBfKm$_d+3KNwfSzWBIaI(BrOFu>Sy?z8|@Uuvy(OHp2O47MZ z6(DOnk^e|dHX8ha8viKfibJSGG-vtbDza?us^kb;EnRa zw_xWtC|AC&OdU67+vDwqU5jRUT^iih>z{Ge6oX&2{R0kfqXtX}R`>EAq{T2rSEjGC z*e2S>r{gvXVD)zS=j`E}7S>i+e0(tqU|)n}18+F9YoZItBOH@5?!ShGTnA88R~NQ` z1uMadVr<0N@bzNB0Ag=w?6DwN6MJm2Y%JJItZNj+-mpg{wxH2iLZV{t#uzISMa8c9 zzX$BHdk!;y#+l5Vz3;tyPyJ50v@yqiQ{Z;hEobU3uKcKHjupSZZ8y7k=^8U829@t( zE3<#b`VQ|8ran`l%Go!o)N7LVw03gzlRwu5U0b>SMgiYt$!F!i z+vk56nzAc#Xky*3^y1LdKY`tdhg{u-(3DHC2e879LkU))6TWhjx2pv z@0L8gO^Wa2Vt;O{6@7Q=^Rn~HBpp5VGUwMr{T?q*su9t^Ry$$iSOEhaX&ezSpQDa|?8Pvgpd@*kOUEZa(v` zwSRCmefs|Q{VVku-R0z1{*J3eLv@B%9TpO z0cGM(dlqb+S*F2a>GI8hyiZbX-ft!!-6URpf2eq!1OEi}?)G-rkCT4Z8y9OBcOloL z)hAB*HvjYAAI>CtG`qO>L7nFb9^cMx8Bx7;zY<#`LSI(C^rFy`z4!YbzFq53Xv4D6 z6Q?ve^y!^#PfPvKq2q?(Wo(nL&U%nk`@)i2bIja+|N44*RR8f}!-6gI^$#A>bJ)_D zu)vqYZSPkPtz2v8^in6%O31d?#l}?Yey{wd8SBb^SmNO`C3*Uh;j0h%6g@PcMf7)z zV~+hU?dg&Kx9F{%cihXH3oQ(h+WgPOapad*L>3#zTI3Ve~0jD zFP|rUlh9_?Mz3NaL-I!UKT$U-@7iVkgHVMYmX25bz;q#52L46TKS>LSR?}JC=uhnp3{i5YpL{waED-(D|?R-5ld3eaHb5Seqyy`x6Qux$}ZI6;l zR%tZ$Xv*N0ep@HMu3YSG$H#AWuZh;a99v*#pHdg&c8}SeuS44*-M#v(p1JYzn7e1U z*9cv>KW29K$b|LtY=4EV-SQ+{-EsF!)VFhHPkW-@j61kns-E1{BY6Gq@Bgm%a$|g* z9=i(VymH5uYuHb9d_Uj#$3g9Fh1<99cWiR5S-)=z*ZDUweDTK~wLj@Gv(l)-Wdw8t)nGyMNubrd_${bGFL1xa2vnU#%Qe zuF>Mr<&XY%eSF0~w{{LLS+m3vWnu0oxBn~N@zc9EPj#&N*!`YU@sWe)_DMU5zOjy&y5vvwx$6!vTluU!8uh z{#KWWz=PusVt zxU}{%@VORWDd9&SWlQB^ zZvy=4rj#9DBuXkacjAZY<>r2`4_%wDO1t?-D+VR3i|FgUDzb%I$va_vjd$J`dIlZw z+qwDOynrPWy4Wt{J^sdX^X3bkOGGybelcdj=moF-Z9e19uE)#rwpT~5JX1X`pyS;u z4a?XseX*&+==-Pc^nmgNU_1(*VL!V8G zPk4}YC}N0rtImrzmtGL4_}0x=x=oYN7h!6FTV5r<7Pn05vAFARzU?oB%nr!A{n`SL zFJ~5-AOB0)oQGPD4@}Mzn>ao(p>VTpuX=aeJHBH1%ifOz+qL~Uc9mbfGdWfqT4r1H zQo8%dzmuPDz~1=ots|RBSASXa(CcuiuvPQQHEWx2!x-J@(Tjw|I~rFkf28>S`bB+? zG`O%m<-g!_f9$GVbxzC}&$;JUo$5GZy3*ye&!=AfK87Cc?)htMmAV7Uo;Z~M?~bJ- zRvj$6$oTbuKJ8%puK&I4nKmrP(JjN;)r>xzBfe6>N49b8Mk?dZ#>ULQIlah|@d1kq zbuS_Ll^AenZm&t*;*Ni@V#)WuDYe(d?Yk5c-1ONEukKZQPxqPs__-?sU2jSZFkeyTL)ixc|(tpSk{kq@GC8oOJ(xOYaWQm%5InGL^s8`@&~ zoBR!bZQtv3)Xo_n|9PtxU+ur_Bo9|sCzDbH)v{9XzxY+(awAS`NyN9y96d2+uU?&9;IO1?!K*# zPhNC>nKt+Mf*<$4?9;xUIdfF((7AxEA``wjZb~uqxYVRz4T=T_wYWWse z?cXaPEzCn&)brAbw83llhHu-mG&!ovx?{T@E!q^macH1z#H^$=+p!mq4sY1$H*>5y z%_hztKXLGw`d*FO4lEnH?Qz1}R&S&Fj}O~k<;2LJb9hFLDIJ*R*K^|0+Qof@McRND zwvywUeEn1Kpj~GRbqg6jVnUM5=yUw1GV0h0A2*3pN*2C!rQ5jX+ehZlm%Mzz;OZZ> zn6+sG8+5)}G-&?Tyc1_9+6t~c5cg!{=_FMTytlK~>1q`pyz`v7J8XQw_2?HPF4x}M zdur<$-M9Nhwm(1RhvzdNSD(|{`@*88n+Bhb|E_{kedgSH%~s90@tr>BNzqbePDaLF zFR;sVOnqU|J08Tm?K{yt{Ju!^q3E zY|SRB+LLLt8;uP@$+ZuBU+;-;Zn@IUkFi-A(32J^OjcJ6TVe=qo@e7CWN=c;2H=AAhg zvaZRd-;*DniKurVzL9Y9+TDjIKU?$n&D(_zwVIYNd6_w6u`MRHL&4W2KHoImH+<2v zO6r~9mFFLC{i419XU!{ZNGj-a<(FOlHTxVd^~s?>TW=cB=FE3R4Xtadc5{l2YgOyj zUk^ux=ABzJ^~CdKNBbUG=KnseVwoI|E;L(xaMki|52qcqe^^qhyq0I~^QkchW_Fh+ z|97upwPJf(bshQrj8o<2Ham7z)NOueBkRrLPG{-;!s&(KNL*QXxa zQ>EQMAIDq@zcN2LadwLhi>ejswYN>`_ru2asTB5Wzpn?q8U>;%}qIj>_9FpY=SkaM~AM`Fkd%-YB2%kNURP1@heds^{|x z%coZ8>lKpnsC<*4H6xl9t2Axkq{neHUoIZpJ*spGhl|dzM`F$5+DokZIv%>wer9KI-bH zPvUJkx;@+)8PY_QQ=k5Pz2u=I(=X@h;(hA<-u^Gj)k%)%|H31$Sg>fh=1T`Y>$PuN zZQr)zFYb(eb9RDFdNRtt(8VG-Cy(s5vr+uQUTfRg@2%Tjr|7UNbBos0Z$$*q@Ve%>uixLo?beo?7w*EVeyIWhl^?mDXqTQ>H{1SM_NRSA zKJVZ9H-1&R?~{Hx#$NgBhnVpXPTi6J=&^3YvxF*pc6>DZ`t=JQ*6zVZGrp9EXX44< zqpEh^*6QBjPge~6?VxmJ^_}S7KYMzp*@`})aUG+23d0**=-==8@0acjNURsV^FaUn zOFgDX<|9Y5hdGDVv(8U}h9=6!}h6{4Jh-)^7^srfe#TVBc%~rt{xq zRkr8%&h~Q>4&KQdk4co#vMFkseWUf8&JPFWvA@A9{S|kf2!bM*jAqa2>*3=mD2gW9 zhkWAUVjIkt}EsJAGDFDF3id6EnY2*rC24>Z)P)_Q`Hf zrlPSuK|Y+OXS2=}h#V|?Qt7iejgTp4n{!X1AglC{BDg^hDGC}j4}3(Yst=ke6A22U zC>ZWyvccR%NoG3~Wu2%7)`8`OT!@9-rB$je%#T zYPzqN;Iy~}=!VJHDI%lkx_X&E2B|4bN(nCJTl^&JCf7 z%)~5R!MUL}E;cJdF#KUnp$8WwgKLm1STA&cpQcg?3UEsa#5rVJ(8fnvOTPHHt|4`Oo2*9l0_PCVZgFP z;yP#w6O1HloM*D>Kpk~GDT?6>g>h7Bam^!T8;T15I8MOk6sMU+*+v?rCx=8U4O$&_`V zvArW0JND_=reNxzx`_^cRF@5c9|cKQ99wsu5kyU-4@ZU=Xf};acA{72QTp0{lrWQ3hOOCl;a4 z>{&z%M&qzsh8;P+QNaPEKs4w_5Niz8o>~qbgT^6MlT2!1CO|Ev$qHhaJ?PVHtVvc3 zhFM{I41NJ-Gf#~e!(@SkjaedcKP6KmvouWsi|J7n3(*nYDbN-NpB!vbU`#Z;A-QI5 zP7#0x+}>9bI*LTXod}ve%m8zMSXp>gM3pA2cm>Sf?Y-7(O%@>)L{fG}iAN(v!lo!b zMATx!Rp6MYa=}wE46MjVAn697Z)`KN>;iN%@gWKdoI$e2v|o`;mWaxl!GH(cyGXeu ziyZLCrBs;#PFV%uw0l?NP7*Q4;OeL9POEZgiwyTb4=$_OJ6P2mxlqHDW5bHjVaBZieuT3J-Ni!jI>$N&`F@nHI;JO zQ#C~iltmjfHw4)}qGSEFdX|nTpW8Z>QhXgP|#pBRb)9joFnV}Xo%(bhPyY@ zRGon=;9Z7wpe1}WumY+&z{Ly&qIm9tD?ZKeW*StCi3_>|4_7NYV}ujFkRP*tUEonvSJ74_BGKWWI1LrQ z%ymv<)zO)vaz_Et;Z(Cc2hamwr!wpcRbXxmT?nejxdh$rT^D+Y^o=9$3bFziyzKQC_gOl{~yzi5qn~hI7!2o-t{Qtd%9_T&(@!!cVuQL1Eyz*7SQbw#!gc_H1q z0c=9~Zvbp%uFEP(8|Y!N&7h^j9!9cAmCQi0Nd1E)PuVUi*(B+3=~UMQ48%C9BTjvW zhruAr1iXTY4*r9)AK00CQv+ondMZ#j0EFhyQz0ri+m9gHIk`)pmghQTL6221>E381b6l@EYp5i&4y{HXF1Xkm%X!A4YGXT4f0w8X5qdk ztKGqYDnhfv-!yc7#G1U}k}(;~F)+nK&tuqgTIr7gz`#@yfPw83Zi%f!%xCM+;pXco z-=XTNYBiAE0Ru_|3V#?SCB`&fsWGsOt%EON?=ykNobR)5(mlMmvoK93v~xHRG*c+* z0#kYFjs%W5D@cS38K#-Jw=63#A$w}@CcaC9x)r{&4v_(RtZE!p1~kx}Vb6IG^xxe* z9IU{UP}g^ICG&+6o@O+3ckH*VN<1}x)Jhm2G0|w_ujMck_QOAqX%6;zv`I4gH{+9CV^61EmAHL%2$g{lHbK zvlysiCkD+SVBF$G)bjM^T$$A!5Q6(Acnn zp$n{*3>tTNy2z@I76M|@Kn)I_+1(AIKgZpc0Z&agh>$=xZ6beQ%Bz`t9nf@^8f4~8 z=)JQ(m8ql2Wly#6D%-q{;6e5TmQinoW}e8j!9=#f_KtLjeFK)4`Hd`0Wnzeq85G!? zb)ZZSh66EX!23{jMfC~urnl>P_;|DL+lPE3j#x zq~KVz21W^UEgDxAjBPT`*sR%0dOEBl!o>?Q1Hjg?mL=A)DKd*jl?t?s@ij~SS?q#o z6Ai*b9?E0~>`9yis;jK-0UF>2-5@$1=}L|BXR%*FN1QE` zX>S5AWXKjY^yJvHDi<9PuqziV{^MadfA%mNF2XuC4QkQ20;6=n4ub9{*mwYV!^ zU=_AOL#2%(JnK66o5?{7OwkP*y3^_%pbHP9n#mTL-0U%U!eorJg>eCy2NNB#2l9xaicLY2nZQA_8hPnH-?>i&CkpT3Lf6-PBTcn4>_ds*+Cg92_n-V3`ICVS=I(owx$BN=1{3Rqb|do1ZcRpGp|uL zih&9c-#b)`Dhm=~E-Y(=$a$X3<6vAT>x>SX?r;lP4$itL!uO7H8hfF^g@81PSdNHZ zAssZcXe8Le!HIAm)PI0RE09>nI+CEVsUC|)YYLz#%msjE(ncB{ z_l2ObF*b{aA- zts5jvF;Jml(E~ImT*xf>;aSsBL~=Gua0v=v$}YCxNv|l`C)CGQtxG19m(dcfyTv& zJ44ifu)TC~ws3U?AaZ$1Xag}WpyR`6sMpwcw8|#DV@oU^py0_RgUM(nRX8GQ(~`ps?(Y#V3A5OgJ;t1R6t45I)y;-lf9(oZZH(2n1}$P!nhj zHCY#MXmF6=qp5=hji4sn=!B1U=LI4Vh+N?@e8zklc*}%q0KHJ=;!-9PI6ApZ;Bemz zNl9q_F~dOVj9EAey_^diJfNJzzyt0TIsKR8!V2sGnI=7n3D9L9(l$FaLC?mWlVGHY zwlI4IyT6EaxW&TO@sf*#3!9nWa8VOjJ^zRknP>S_>$VO12zuI_#$5)Wf%`Y0Cb$&E zDo>y>9DuGllMF6TG5-Y`^Iu4qTaPf*cebAWG$3Pk}0_!7~ z>mi(xQQLKJ!Ko$~8PA3bs6E(Mw#!CMP-o=_M*wuZ*8x2+p3V;rJVYgk1|Tzj>;6@y znmB9!An~dddXmiRg2n<7U<$2hSYsSIZhN+e)1{6EBbO`_!)QH2p}0he3!}I33fexv zn8ivftA+W{fi!%WXR)|R%A5pfEX>Hbh(e7NH0DxKDYXE+JCec`7KVmE%Z@V?A7f^m zHKVNzodG1wsJLiTCX$j7FPSc4`kLtiay4qr=m~Oh;))r2pN2~XRNrf$lSd;uIKzCE zjC4Y_AMOZ=Fx=8*-#uS#A-@HtRMZiDp3u2?opQ zFrUF{?_dvepYYHmLK+A@YsD3ft!Y~*gExVwb zM)|{qmM%47F!3yFIUxUKO%~7qT3x>Z{)31= zAmK{1X!w&GoW>B3glmD!A8MHKqt9x%d{4QBFs<1*QK1PQ2H*_}JS2EhwrN~|ph*|j zu@(|&&ilts)Bqwbff6p@Vhe>KSjVQlK?4e+&mxZ?ff`pM=_oGr4;Q3qbqh3F9=6u8 z+hU+$D2RTTj}IWbVz;nC!_B9<>|qArv5*IEgbmzsJlxZxK@ZIcF|Cm0XCOW;Q=UHW#*%Sg+B@+)1}?V!3&A_ zgY0G^8uV06U}NAYOJwwohqt;{v@(}YS!ALpqqE)vE3XQFy?^Wz9{F1m0G@Pz>Np+F zK*i%~8?|Pw9f)|%qmC|= z!Sa))Bj+=?unHp)uk7V?Qg#Z$V?4PR0dlB%6?iR{Z19o^c@>x`^iZ~c!Eh`X7s(&V zUHq=d4_&YdGprrnOyRA*J_d#xqK%95OWd$0g?a?Py)9gX0sKu={sf}#mdJ7B)q@T z@jsux|BhDc(gOGZFXgs>B4qQ#R|`F=I#b2(;~EU$w($AKC0Y_1%_U3y7+#cX|Iy z_zn`cOfpw24@pw8Jb_v#CCh}b%JKdXbIzkrF0W{$gOA@;`5V7~k43@?Q9#`kEG-Jc zH9}$rd+l98Lv<6b+xQ3J`ONCak6&(tRa}Be=1>^w?$W5wPC*15OP5CA4aQB%q!c?4 zD)!a`pOsr!IZIREc>!4?n~-ZyE@k_ud3?$j=p|?^Ut<5u25RR;Xn{kVvNXTT_@B~5 zc~28mP~TIRDRdrxGnAdo3>L3i6>xwgUpxALw`hW}SHAun(XpD&&-+qD`WvgC&<}i~ zKyuIp%5?_1qxb*MQF=91zf`8hP=pZ8z^y0p!@(Z4=_!Oa^x_5HR7`PKF}61CIDKAI zeV-aj=wW%hcmxp#+JTp~ZoG;_nM0!tI)bt$?*rZ_2+YZU^K0#KO=S$iqR4NwaWCD< zwLh^49UokswRN2utVtB=)?gb_tLqqL^vUVa*!iA1)CDf9ddR(PO*`-f>=JO)C072bTD(IZo-`Aw>eex-wE<;3;YcYVOm;z$1fw-NQyONr;n7 z%$4!48+I%(*US!b)|aj!ilj4O;l(p`v3}vKiT-^K+#$czyFv$)Krz0lXg@BjVrz(q zTN64Lxb>PN4GIgmfz+^F*PxOL`Fo`rfh>P9*1K;4sxOPR30_+;m+v7I zJF$n*Mz}wpwyA|MtE*b~*n(`9b-u3W!q@ZfAuD+?0nMBf5!(^Z1BJ<8a-;D@ys-dxeVPy1_Gn@cdabtY$Cc~#80g*0BL+xn8S$d|1Op9`|F@x8_m{!Zn3z3lkWSt~%GmOF!5m*ochKBV;>#K-h{}32j3<_XO%!{N!SP zudp{A2ERIDJ2Wjw?5qSdy_G~z9UOtgFcS}S+6FjH`xg%sl9_5kZBJOqZ&E?!W3k7i zJcoT1l7rJmU_7J=XDsIy7yr5r4_^GZ;oSg%^m;~toYML$`pkl>F%)&TF&bj4_a8vE zzWCe^`!rqlU>KPj+Li??uA}lI>~kM~ltqZH{BGD6w_%^d0lMly!I;l4v{Mq|d>g}E zAhU(tgLtb0&})kyity~kGv&1lcUTskadY8@_LZ8}HVp}X3ZFkIvZn5SHWo~41baG{3Z3<;>WN%_>3OF*eI1f<) z9CvqjE@f?QE@pBscr9seW^XTJZ)0O=Ze?t2WrLg$hnx@rhnx@sx110I0SyB;GC7yA z$^sMxF*h|gHkW~a0VkK>9Rmb^)N>XZx`hkWi%U_89>p(Ri5a417 z1ek+tfB-QiWo;QnDFBU>q6R<;Xa{sMwgD)+n%IC$0rDVIpq(?27GQ4g1hDzH05G+; zGXwq8nls~HED>jbF~He>0cZ;P8wPYY1v>m=`U-FWI@yApo&SCVK+XUQCu2L8zcX;L z2Y~EMZCuU%Dd4Z(-2Pt$IXKz>^|1YG`wOOQ@9g4i>I8Cd0sPIXEH3%)I$bP{UH-}K z4Ek#Z*qi_LG_yB#{imgW+5W=(wYnIC?3@8EKzEmaa+v@DW*}#O2ODFLzq$W{IXHp- zRfelG$j;(FEBFd<0$Lb5nb`oHo&Uo8#r|hH|Jf(tf9c-X!NJDkU(xpe^7@}OfLxq` zHs*{7EUbTXn!5bWZ2_`FVESiQWbDlC0W8e_)|1pl|t`~ODnf92?ZdBp#(@Aq=TU4Vbz7{K2nV{8ZbduIUhfPW5+jj_}JFUHswWaIIFiu$kK-+=!v_x}JU<6``G zEFyLmf2m<+Wd64jhMgII(8&g52mH(Jzs3q+U}0wd zFE({ckg2uZKO}Jc+XS>T`>!4RrR!hyGigYRX(+4E|8EZLzZ{kSE`p1?hr{36{zo?o z_GbT6_yON%=1zmj9F$j9r{S?f~7teKWKC ztNZ`)`%g)K|G&UU*qPd!{j)l1F2;6df4A*_D*iE>x;i=iCHY?m;BVLeA^&Udfk1bl zDZ=WKy(wR?ReDy2OD%5R(1f^dUk?l9P>4fGgL=^q|7!bgzx41Oo(iM4nh?guDc+AZ zkHs^G_XAnF!;u~w8|v;<;8g*U4>@h`5A;o{4leqC!$2m366B2YZ_!@Y3-a4gI-Ja! zhr1Ihss_bxFvL?GY))|3PqhBzZa@67C>|Y9d`;8p1b4V#bVP5AI6I$%G@3F8*BeLlvAUy+y?;* zLnYmR32Iv&3r|$u(Z-50w|fsIndUBxl{f70Rhg9^v4W(38dt?IQh&Mr^V4CRO%lOH zH_;|M392Vet#3K5b}VJX_ONx3!u4yA5s7b}^R_vR%Z<(oFOF?lSHvCDS*IKoFcsCl z=@)BaECzEQ#^F--6(SpYfpa9fi|3vx8VF~9<Qj1@3Jh~TI{j2LJ_a%Y>ASV15cYQ@v_Ur8;b8z!-fqPDAk}-sT zAB!wrBSJm93+v!BEe^idUwo5Go+K~F1s&pm^$(O=kel7>~maBdn!_@nmkXo zdZdyI1GhkhRL}xWH z?V&nobr?;|{M)et)d|nHVTp(!F)m0QS8#tGsmE|cheIn~VR@59uizXSfB7y{tza=7 z6pW40b`jYQXZqJ_atH8-Z(Bc4o!a5J3x`L~UCU*mk@J7jc7ArpqxTzWD$ROA^oASN zSchIO?DbMw+GHA_E2a#Sj%4b8pAJTJA67#7Pe0+Xs{-f54Azdk-=x8HdtyDMmx3zS z6Lt(Gvyme3mwEMJ3nuEE_fgy|5ys&miVy_R6O7Y4LAO8b!r4%jK@7;+xTm?E;0@Fw zf)wSau|>fLT4_hs3ZS&+la5ECWSCQ&MNr5%{ao5f<(u6!16e>-Fv!|}+ombFGh_nL zj#V}POOSFs0Ye^Pn(P#U|MfnnrK)TlPb7&)eB8M<2AwuuPLBhW7R$pq+%!l8VB&R$@2Hf36^eLSA2 zjft{IKAtz|Ot%Hw8`URuEjskwT))YGg&%d!*wZ~?g1;Ljyx$F(7*n$R;50Y85~fXw z@7#hWi|rMzXq{n+f*6}KDWnfJko!S6A8xfU#l&^RMEUh`E;s)KR9%O5{xZ6u? zg}>e{wJBj7obhIVt<&gU2GI-HO!*X3-U?(ZOIo_}=6jshDP(BM)mIctJ_5 zZJ>Di+(lJ?77DO-ecZ(+_OuNkGVi~FimqRWo;gHN)nl2O`@@~53>9i{61%XKZf`_e z)bp$CTf!U?D@#%fvLqvr`l#=V;!y&wpF79Av&?k#jgBOgx#`9-1LA*KPp-r zxVEwZxGYB>>A1Rk!PEgGmL&LrFTeOTeYU|AJ~k$QC*4fK<7atY$mWyw1{F;t^*wz@ zBb*O?a?GWTcwk(2cY3hU5<#W7>J>>wc7Hs9Uz?4qTg1;K-K#RBaa3SL3PcWER5}vj zhx_x4w+FjkIq3H~i$dR3Ww0U};L1KWLdW4@k00~>xx`7<@R*dr+bRKO=714T40l_c zrf7eEp|CG6x56)c)IMI;xL2wx^854<_iiv`@#$xn1vxWr0v1q65DVx$4tuIz3cBsE zzf_hs=DW`>9Z$eqeVdu&U)%-E`W?(_umaZ&fAx5g%<(<^Sf!*Af)QPQp6PQbA6k@2 zCtCUWLkRH@n=3Iwk+FB4+`>1p`ob@)&4tW=H|!wm#w6b@28d`?S?H_`cJRG=`gt_f zL75(oi}!+8_ZexxtK>*tjj<*?4=chu=W_VPDpMj9Y*ohj>1C0 ze0J2a2&W>8fhUQ)`iQ4^#pqq}qpjP_{+K*2?GnMO$4w3JiAo@O-6y{3<{Wy-2{R$E zg*&YJQKse4sUGi`^ZwF%4?nIbAn)3Z4BZ4r5XFdjyn;#pB1HHpLJ8{a^dZDOPnbBp z@rw)rn6+w^6$cHJdC=%D9IcJLeS#BzeET?a&epGi{3joDTPq{iqZhk8t}Q|$K2=R* zSj1l(5pzhJIYdV)MZTFKtDY3my$$aoaok%*VRm9<7H7p{z0>KJ~Y4_CgTB%{qC5m=Tei1fufJLpSeS@1<>iO-MP@`DQxz)`n{P0oad|%<-xu z5wc>H81tZk<=>GA$#c#8gTcuZ?+DhY(fQtj!RK?0%^!+Mt-q(*8O=kF07PqPdy^plW^HUlpXgM=TOWZGo5h@pC3796lT9!CgpXCOxqo&(BxFL zT%PBfloP`*)-~B|!L=mGk!?CBiG51BijeY)64L@79W`$ZpF%#APn;B0bEjG_mdV9kP%m{DT!Sc3;Aenn&8a& zIQhk6=Nt8;K+a#GfvWO36?IVVZQ*ee$2WMk5If(hK;di;4zM zX40Sxupq0h@R&EB_);r5d&<0vsMEIL58G?wCxTXg&gvS$J>+UQD ze#4Sq7|CFn{vOB`R^M`GBoA6Hwkh?+NdceIFZLH$3E^IU+2r1%ikMIDtkT2MC3?9% zdOCkXK(-2_L&!>Zxn=c)WShCr3DU(>S)B^Q@AyI`F*}D*8=B#$-{gOXmgV#CnD9w}48|nV?bpIF@d*1mR9|+?ZG} zA_nK^bqTJ2m^@v|qT$y@iD}!s8^t~rhA*jRRcB0)FJvdURN?yNu+9nM!fX7nVXu0@ zePR}yHY}QrO-_s?O1j303kY_yKsDW40KnV+39&O8XrhZ7c@G%b}@k52r1OEHyF}0K*GxD!mnoq{1NFVTLol>!|2Qr3P&gDg4K+r^O^9FOIDf3vneB6z^se=PJdPU} z@!^AiJ->!JMuHUq@@kKAnbo@rQMkUveOW(3bG%{tlwNZu=_jAcgDOr&&Em({YpLg0 z#H!=F-{&t<56gu?Gw|_Y5o~dUE;eYBz0n@*7V7QI^n=sSxnP%UnU8g`&t?8(=^h<- z>Jecj&k^}1a;V%(nEE(&nr0LO*K|$QJIvyLV-+L!L=(2)PpbnQVUa^9#b|_=4JwV#VYg@!Kb-reKgwB`&BS-* zH?M4iXY&r-YgGHEN%lv;OnUbrv~;4)=kFdQ5`3Qp+ZUVK1o2f>JdnvivT_%KxjUeL zrNJDN6Jn8)r>HLo4L2Vj{syBWqOO!ALJ6fx!l4t=D<MO@l_nrUI*mQN*}I~c^GgR%&Xg-=n$ zKIvC0QSY149wxaao=olsnNIh?)bH*oESx#)6o4;fz9KpevK*yd3#Vw~~Q>i=MQJ z6Jimp37tIrEU=wuH(HN`XsIwohT^I)Q9ZKu8WhCi;xaZ9n2sbvG)2YV*T)9ixQ8!; zJn|558cNCY+;-<1V5bA$z`d~`Ou z>WZSU)2;>CA+2WjkS7~VDFVNL-j19M)Vsz02 z6MQ5}B?T9Q8!c#lw(h6CkPQ0-rt;Btpv>YcyOhvY;^Sb0I(L?AJ!<2B=Xg43YL%3m zCEn$~jT*)=E233iBpew=C&q*Q8G1doi@h{`pdneEG74fCwD_}pH}taS@+K?!TK5S) zf)y5rgzKk4zmZkDQ#A1zaMBdVM7x{kYxNs#`lqt5z@?KAT#QIjxi5#v{+9nD8WZTr)I5;x=CT@K~1P^_gs zY~|s3-kECUcL5&SC{gw*s4;APx9i&)j)8C5r^_U&PV<|Z=k|Vsf4aT{uxu=@sLI(I zCkGnu9`XGaYGH}Mk38;5MNqY>3rpVE-7mqE!f8Q(J;i5&UtT3#1bX0&X(wsR% z(@L`VnwR~CMk9QGTC!gAKqI4mT0XqzZ;}^IVJfnmKS|5_6%r}up z?CN%zTnZ9@US!1dB5wY~ZEvTy?oYN6&X{FKrXG;W#*%&S_m!iqymk;w5rczp@ex+N}eTQ)6}^&rG#I5=Ra42QXk6G=E;h)#a=dWS(dLJw6@ zeOG)G>&or%nO4sH&GqBru2>nS-6PMbCzvzLh#gjc`X^3yZ#e6hN~{^1S5O5B<~QpN zaZ9IB?=Hvzh4^ZN^wAtfJ=iFfjM8$QA$NEp`6zO;L_EHTpN}-8TAN!?;J4GB;QXAsw^ z;bUzfF=VW^M4CHEahAS~)&62e-4>Q{O!|Fr?n<=ERV_(*NmPeb%e}H>Hbq6{uRgn% zU}sh)ptI%UD5<`lIqh>qjG_;I1BL*=ElW^;g(6uueMN!BV!Oet5GRr&-DVkjHt9*R znrE$gKcZsvBYx%-aF25qb2}muC0X}mtxxaFLi3?R+VHf&o4Kzxby&*YbCzzCgr@>B zZ|%>wyelQ=s9VH)D01e0!E~+LXbyOji35J#kwGrA*XLr0vAHz4ePX!Y)jGE*cMN^M&kxmx9d=YaTY;IVkokw-3A8h9A?>HSVGm6FcE= zu5t#5fjg>ZNO&o?x+ER42rPi(m%R6}6~^9E-lzWn;9-fLEp=7|b$oskWnR@da*ET91zy*vr;G zg#}d7OlHuni^0aDN;mU1a^e7gR`v1bE@arl^aPJ=71Er>tXhCy*xhbtaegG}4676S zX;W%`-xZR);DJv&pVs|Jmjc$*_0uzr#-G*1oyIw$0gD0>yOS#{`DqlswZslovJ2D+ zY^%)`swqb5Bh%l=j|Ytf^JpA@6(JBUuj6k& ziY`r_7W5H1RXCNQ(mU7*+R5wH4~6tlsc!{nsz$ zti5X?k`LL2jBFW^_$wnLXGkaNukz=;ySZsAFDKu8nxxT!A)$3W4P1@5Yo8?%mxR%h ziE4XK0_o$_2M+?Wp|P)jt1K0NB)W^$KeR8Kgb5S`0yAd^G&;6R5yg*NtqeouS*GeM zmW<|_)WNryt{A+Bk>9oCi#nBp9%}dTcqnbXshIqy9*Z$dm|NNqI`{0Yo~+2t_y z=RM_iXp;(CS}d>Cnt4MA#G5`pT>VoHmxhcoj9{(?&4w$S!S}2k8@b|>^BMChBOEgY zW3;jXJ5^N20<&X(cBwN@^CY1}g&e$Nop#IE#zgb}Z#3&hohA}^a013L>Wxo$T~^*B z{kn~62ph;vY(o;HGhs_&&7qjt>TZ+^xrHtrcT<|>OvRM1c%40E`UJ@MR?U)8xujk3 z2>@PCRO11ku%}4Rr7~N3ds2~<{b)AcVcOD_VGfdoGXo8O_ED3x_|L9ZCqxy{gC(c2 zN=QA}L#c8?&N|8C0n=Owf@|dPN~oVjrp##Rn_k!IDPSKTfYivegA|wiU|4WRuprMI z!|SMsT?#5OT2RpC(Bcf@n|<*6q8pebkx#j-bAm|K=O{D@Sa8#4C?-XJIRUqrE`H5?#=oXR@l2cqZ-s8q$w- zD4&R1GtBmym2-2}pYnD4-%t6@tjS-HwTr#(3`;I!JX!e`YybXTj_3BqDD$&7(M+8t z{9+5So6E{{Pn%QuqIy+{4xsHyMVJshoD&`H4Kgev{< zczq~;_3FCT#Dt1Yu|aDZC5p7K1}?FJSP}qfNsCxX9^2uxdZ4ivKZW}k zFY{;>GYt7MF5I09#c&w-N@TYtYyo?d!|&LC?XlRWd_~Ke*NZYS9mE=1=vqe}Bx*?G zl^3=fn+k0TW1Zl5)Ixb}&THs)#JjL-hyd;atV9@m$7r(Gsq$&1B1rxDkph`g{8i%iN5Umzdx)qLkQ-j}3DX zcdXGCbM;jX9s-9`x zyWy-)tj6SN=g_0)6kp5~f&6GsyeoOn&dH@1qvrd6ppuDy%ehN05BoSu4`__SX={U* zLVcCXq_uxe!y@Te#)WvOe)36wDv&Dmzz{gjM6POgg>{Ix!{Q<2mf20o?S}j{{NA>$ z<60SDi0qVL^}8YL^wnu;!wK$><#{eURE9v7c6Kw(LYPTh*N=mJylr-FzvKR zBLTyHvHf34)OtnL;8JC#sgC=wwR0dOR+C56KUUCJsuKp{%szA?lbL>bnO{P(uS6Fv zsry$zG#P)&9IbLH+$wry=bFGV$c|>zTpm4|k7{GT2Lv&)_9BmePZVm2#bXpSgo6qN zZX{VSaKEF=&fK)?SjG?dPV!L=!Cn{0d%r2QRP_e$TE@OP8KUlxv_H-q(W2$Fx`=k# ze80QgPmInKF8^q}oVO-GzUakmt%a)PUN0=UJ}>}=Ovnpx@iy1YI^jV-N%=9Qe_!n< zwc5t@mijWXlO=?Im>ZXFDE~X?8nwz}7l4u7excyRa0^}%5bR%;-&nCIH7NO(zgm}` z0JvD0Q|_c0w9jto9K^kjR%Fnajn0%mkKJ4U<@tKT8jD3ou zW|5@m;DFGoDH9ec&XtC~m{PU}i#y<-LDkIoidm6jWkKbCes@+L{n>!3KS91NY+pcj zyTb)xSwV`DE7EH*{;Dr;+Kzc||7!62CU(&*zPl$Qwk=RtKaNX&kaQgT{_ES>DuOUu zFJ@s4#1$mPUcSctPwV7t2TY&=svf7GmouXyVvIoVV4rSF4l!;jG4tF@Ly8G6qhK2P zF4GP&mLsr#W(l?%1q&=WN%XzyxrDLx_uvgR{CU90kV>LwHrIoUIc{hu~cF9kn*V$5wvJNfisEu zTYP_mmYR=3C~6ZgPdP^2^xL=*q2?iThKSp+hT&bPWaeOCe{d&$A)8N8=D-fW#4O0(!(1?D~wW0vIfW9b6?o1V;8V2 zF!r+X{0^j*sk&sd06yR41&XdW(6$cdJu1KWhBeeDXqR=?rT)~=g=c8b$Q z5mH-oi*Et+yf2AEG{Uo-lnU~%QyqKXdAQ+!OuPs`hDqut;oO({0{4=6{9El-dcL6( ztNg`3K?s))QL9XGEg(47XRvaIx~CFoO(z5{%54Nc+AALdy$6m@!}^)tHwY->w>r((<$odB9}aI0wocL!Ey0N7h|Mx+jdwyO zA-=LG5>Dc3!xqbN;j3oDJBS3vCIy?rD;E&le?<@IR)1+vHJ_oBn`ZiEOs=MlLGAX|d&%QPHVGe!cm{ zr{>K^@-0cRU#0Zrbxd?LET1Za+G&Fh5oYnA0zGsE4ZP$J+N?DuFZ%OA2lQb3p`yQ7 z+$)id!j_E3vtDS^jfIOy6|%g;23XF0MB$M7a&ZxNRrvmryrr>$|&CNM64+Lp0~ zP-t+~SvU^k=4c8|VA@NifrS}yF!LmB+$ zZ{Mw#RSMg}{ULaM_Vgd}=XU)Y0I3r`oAcOj!EP_seDj2XF_}5e#L6#+_he^V!pGVg zDs$i`Ho=4s6#Tf#3}D9Io?`NUyP?j-UGz^Hgc7Ku3-_2Lx>+~5jP*X@Q$f!k>pLNd z*1?8C42Fo06|*6|-I&Y}%v!rBV=qCF=*UBFCpJT4yTSFFkw+zhAMxym&X6)5l8nv` zg&358kk>+@RXp&dtn}ooj(LfkAJ6)N@PhVxj9PN&X$^uLX`uzq7lZnL`Vpizs(3IdKfZ(==;5h3`cpEznjcskT(!M>ZABcH?75)q;hf9%)omqRCNr}$(^gjaL^`P3} z)2Gk%m43CqsMINcdr}U6di*9*2kx6XL1fPuY|KHr(@cCQ7OXGV6`M{Y{vL!Ws9KOq|}fd=d8-c_p8%N&!10E1@-O z4Eg{xRiDsQ)_haK)I=OlvzP~q5EfJG1$l6PfxCz8d`5Y_FH(qqU?;hs;d)cx>k;Il zyzCG1Qj4!@HnV01lx)l`Hl;ON5l_w|`U<6o95dg)aUOL$4mX;+_8ND->{f}MR4iIe z=n2h9IJ(ChYbsXW~;+ zMlMs8sPNh?g9z*ZR90Beq1KH+P_H(#z3Zu2Q4wYj{WNm^1nK>9yfbtkIjI;sucbAB za_*?5XI4==3b{W0dQkPl_G?~LdOj}F6p{IZbb9>#y5jzS=+TajmwPKS25UFKerR1UM=N?tTu_2X_o1k0ke)QpfG~%4(DS;ASxOT@(iAbl%pHN1Mz6*HH$( zTUE_^-%rhP1rZd3MH!zYa(c1M9oMnFIlgWepm|GCRbud`+1Q4OJ;e;qgnINx`+Dlz1uTIe1&4U}Q2bY$FSa&1=p~>}-v37TbP*59A^ikVfEfQZkO)@8jtKfgRQc*50uzjDxMlB27=^b^{)`;s?b#x1|@hh1U6K!>2P?qi6+At$(L9A<=hh` z5%d>RQvCaqj@a>Ta0B%9(9<;BuQEigRJPSU8h8PP96w5vyB47|dDk(~U-(42ybhCp z1LRn{$+r0$%20DS;i*}QQ_FGFa1|;DkOUusi@6$-3y>mD7v}~Vuy>OdUN%M4!!98U z4rse?*u`V3Ndqd$u|{(^*B(cVorJ_nzKQehF^1N;HDQzUh~f2hI130#^fwRBIzC{B z1rqxrsT6vtoeGeft2mX?-(<5(<2dSnJLpdqCzSC~7(_7gt+@7*XmZDC*?P;#Z@zp$ z>RUyZVubv@0M9jnC0+6wFbFo?jy&P%!RJ-X-{|u}Ka`(^^2BWM%JBw{?<|1 zcRIQf%vF<#!eaD23b>%{D}!iFzRgy8vGs@zZhnn$B?g>u&la{G$DrOY$_4{pzT(7z z{aII+_0g_cPC2N7;{{=a$V)vjW}tE$Ig3}mGZ|2V;T-wnYv2)khvi1X1W8Z;WwB{l zL)B|LXAnuxrwnRafo$Q37B&cTL&y&rjHZ*tE%o+$HD&zw9%lE}ImduzXLC|G0Hcda z9u&W~qFA4S$i9K>otaof^t^eqf~pUe0d%RP14_a(ecq*U>@sshK1HC-{Ocp%nKeepQo{J>Yb%3PLC017(;C za=7w~g`xhA43kswO;iTA zwCo7vb)7+uz}d*&u!jhL+^m&op+EH`WdeC*;k++#nV0zUoY(cNqzIgKbv>@0lFR6a zxbB>~1NIBM{JirW#Sr?*V&1%7Ql5RQG$e>wyOtpeYhSJth^iH8R-*?+C+6!cnA-o8q+X>#|T)t;pxOb^o@kuBMg?ppT#2tQ5)|aTN6LbE5sd4db2IA;aPI{2( zPlI^*$MAL)6VE0{4i^HVjKlx<<;<2lpZ5E}yltnAmc{z0`Y5EXL&L8vqq1{|mE9dYbRMXHw+e8#?DIPhOH5@g#U=QO&#-+EfKecLvj&3hUO_GE8TXxxw+ zP+9#7yDSGqJl^Ynn(JmY=2?n9fV?K{zu2!Mv2YXia;&Vp0`1D4X4jeIFG^ z5NbzyG;($lgI7sOdhMv;Mc&hJ3sA!Ll{TCx?CbSVAi3?a+Zrz@)d%1~qqEoEgiael z9OAAa?BJR`;~;QAbbxyR90dp$kXErO%VeaXAJJaMx8UM`G$QD}n15Y6;pb4#mMzPi z_Ss_R+rZ(=YZL*eL{IuTV^Z@bb)mRAhJ|y0cfc$$wUGPzWQ~_^arHeLB{!O|@doIO z;$GSbN(cu$^J!Z|fLWTrGFgEp+#M``xeSKwCkNvEmSU9rji%y1;ZEKOuNw6GXU~1> zqfRcIS^K7cx&6jQL)|Qm3Nub{KB-4YbUm%kc;7+ofg;fyhQYIbm-L51K}SEzQKj8z zZBRHyNdsf+eS4QUPOO^_;>L-ZFK0*rmt?iXsvtWLbDX~c(g{wo`sPjr_xioFnMZi< zLuc+PqpG;JfOO}6 z4UA=f)gl08(V9*(WCLkt&+ARJDgkVzf4m+REMCH5@lqEn`WEAl5_O9gbApk3LKMie zL=+cnbtq_GvK6$13em)}TOI`R6v@La#_z3Qsui)G3Vh>xvmvYn74v*M%?cpr^{p~G zQ}#D#W@Y_^7t%++#V0tH4n=-!hc)TJA`Vl3qEfr9S-Y^*P%^bd0|NWpw=K-1%o3tV znP(E;tV=yzvN(vKzu;^lqsTU#{oxa^GEN7yG2XS6eLa60$;T@lmX=R0etwuOJFksb;PV4(_yp(w zb+$KwDabs3u`?4NVAdVn|4y%@AAmn9fPIZjWBC)6F>34tJhA-es%*XNtII8qdTXG6T!2ZiPk4kMBP(e$aixC{D2Wdu99+OI4KvB! zt{tAL)#5$X@xgRW2jhgt^|zPCqrW&Wbldg{CQ7>sEc{JDE1GD6%CqpE^VW_U6;9sX zOa@9@DqW~3FXWeI;8;ta(Ey~Ki-Q*oZ-?P~k-y|RF}$qx&U2o-4kx}Ww8A`p8@fYC zT^qXz{vxCxA)kG<=kYS}?DWGVvQnYKT-I7MYek|CBZ>C7CRv z!x;Po9DvkECX7LqJ4opZnssoCv?hPy2Rgp_5>*TKJ|BVn=m$kE?uT1v@7GKg1ws2%gWF|3DWC%0UBcGxb_MM=$ z{R`d2Z+c3grdy=prmOOPvX}&p7(E#$tdDnx+=MfaZ|i70Qwrd)Dhp^u%jWOt^Bd*t zp5C71ml|L_C4|AL zRo*Uo|Gb*Ad_q<~q~95TB+nk@)f84O1MEAVdj8uRbDtUC$kN#ys6;puN0`a+<-Ac3 zLYbg~eODvbUk*)G^KE;oIYr&9^ZiBvKT1VsjykV@tE&uB z=@HSkgOTw1GZDoPPyI>T@yyVME))%MDv_xsJD`H*406AJV@I2gEU|<~QdP}nL5dU0 zb0icrM3MCn;N1O>A2ooziNB>bQXptu(y!J3D^d!Pt#*Ok#6J?_k|R zcIqpS;qtW427h9oF8AR$DM{sNbFvo5PI)tgYMKqtfl3iuD5Vp%uI)l1a#^imfUkfk zHs;Ecx|v~r2SuCd`%fIVn45!kiC*2v*E7=b88K2>+8*r?i|9X@mjhM@MDp+CMhFB^ z<+TUQ@3}D=G(K=g{$=99BQy3$1_HVIiN)FW5tCL?uQ?hTirChH^B5MIFFAR1zyf6d}=bc@3GankJ)qJ{By083g|3T@f`}z%E72iYR^jLcP^Y zWaLjRtb{x#Rl_<-V*j;|Om1?yV$2WvS+pz~|Ak$5c#h}yZzNW%#t22puwy)X1gRBj zC1z@?gb-Uw%zCL=Ta8y^mBxw@E3v7qAyg$4snXgzp(@7L@AE|7B=0%7u3!J@)sy?V z$GOk=oN>Rs;Q7n5WB=ZNGNRkOQ@#Na^3(9%Z_l2umSp4~kUFP97q$D~ZJa(IoicPJ|Xqv50AT7=HKK6^DBK-v#Q1e+5E?k-j~ zNLaA<PI}oq51S2cyLvyYzF~UG*bbo$n!+QrCM zVXeo^e$(4H=QpA8W52Dw+Z#r$Sn>Ja=@q7rTU=nk^x-d7xHhRMwR})+T7PrH_%AlD z@hrH$+2IjNyC!FDENT8WDys32vhK7vwo3|~pqwV`chi04_5>$GArGcBe z#rbVJRCY>@%6^NLhBtfc%-D6fW4=f3rwdk(_^nFhtat_9qxKiXsS(WHdFUo~AhrOxzEUtaT`Yx}z9or0wU zefq!ty4Kp?OYG|U-O@ky3@bmYOZjpqrgb~ycILo%?@jy0CY|yY(!FNh>eZxg`q)3x zGxBZUFTYtZG$L~4onJQID3yO%-4olAuLPevdHGsY;bzS}8?LL-d3Eb~WjA^Xt9O5L z<)&Y3^}6l{`xblH@Y_mHKZ{L2urSf*N^d!|i|zjS;Hx3=8@_cbF+SqJu=eXlecQHa zy8EiRzm%_(IHuO%*a2a?O}FUYOCy(dUh+2a)ut*l-kMV%e6jq@gPntiRef*#aCGsp zSO4qrN#Kw#{ zRdPV@BXznZ#>j71uj^IY_md;-1A87XzUauyQUlI@ed0lIVD#pCmCgOn+JE=HP^Sk$ zpX@5sKQg{sYmeTOJUx3}Net_8I>DayHhg8tyS)dN?GqWiyAFB+Ds#5v*>-6vHZH(?Q=?DK#H{SO8t^Do_IM#It|=_}Xo<9Cqg3{Oj8ipZ=Hf{fdBl>rS@4)qGztB4>xi{W5!D_dPd8*{%llO}`ZQE@{(}ji-c&sY4tPWV4!&I)ztUUU==M9+kSqJsrH=wPesA<^7sB zi8vP<;oU39|HbYaTV9wU&0klW@A9kkrwGK;oZI4U3{buGO&m|kY zdZ`}Aw*TaJ)4f&wOAYPf=NrGNI;PF5#oLPf_+r_J&_;{P-6^uL%I9t_5&d_r>GkVP z-@t1Db=$Zef7<@Z>HbUl^_=TWo%WqvzMxsxd7+74hP^jz z-%Y>LXm88mPYzrC14|8>vZ~|Cxof|u_0PL!@xv0w z?|j~2|BTKT%muOP-91UuXB7zDe=u2`C%qZEb#s~HE#uGaPXDxM`I^Jee{-&^eOBq< zZUaJ#JSrRG>1XfueW~%aTkTKwnKE%<-)Sv9R*ai6vbbiO@2}Qb6IJ7W#+*Y963tR? zs`d}BRiZ$#r}Dth)GHZt-%mcgsrSw^9S<7YT_c{KSI_yEiki^3dGz>mpLdOYIpDl) z+wqV_1-s0u_aUa&5m#Y(Nado^lzF3GcBz~G_4K<3PDIv^dpj}Fe_eH3n`z-+RDRW{ z-PDkzNq)5p&uQED?TrUrZRw-hSF^Qx9@Di-P4|3Lla(eG9v&W;T4xZk-udLYr zE`R=UEuRb)?(EH%v7yxvZ*^If$Ia(I?cP1D@U>$_5^Prwto>{J`>#{=R(m6+beL88 z*|U3-vSisz37IH1At6fh%m=KRG+3-G;%o z;3ED{{eNtAwPERr4dP>Zyxp?3eVy+df8_K#T~oxi9SxKH~=7aw(Od1iBLK&`M-qr|&DON&H2y7!q{{q^I* zPp(u;>>bwfw^!m{4~{izxi!hJ?oTyZ2H4tpjvwOE@ZTP3&o@6lQ|?`((3`&--yVOP zzxZ_9h&k&AP95_8;PWeA*-E?g2p!h`)V4{f&$eGRJ50Dd`sC{#9XtN;Ps59AZ}u%X zvDp8%9DP{ryDs&729_9F^4gI)=kF|>@XPmeZj~LgtJt2Uwll%s#``Z?*yK%(h}-s; zu|FowTvO?O@+8sY!ViB{zusuQ(aYmq#)1|hQ#T}b&iG+T-00zTmUdfqhZwqRux4?0=RT*V^yw9FGV3yZeWSesf_= zld}VQ-5I_y_C$}TTD$pi>r1bxH?;MJ-5neGexE86K9t?;+UeaYpZxpuj?vYF_Slx5v~`M0FS0P-+M|Vk zJY3 zO65aww@!ch&~w(^Tg|JNOe&Y!GGK08@`)0&BaT+t+`jO|LP51M3Y))dY8!uZ*mU>R zQDsW>ihsUfU5S}ng_t_myjRb$756=Rf92k(`wvcvyVl@v{eOhhH9Na?xG-nK!>G#x z>+c?!p|uLWAK}qytN#e?b@xK4Q8TVLXqoV3a;3+|{8Q&&n{MuY+xx-O zv2$$sqg_79r^I;p-927rQ;Gln?j5$kr^3BYPZTM$JFbWSRo|4+hgMEm)wE@h`Q_uu z?q<>OHXehNZX3TZHe&vHmwM5QkI$++b^Br0pnxJD{;gYc$KXEkA!|A=`oq6>pAqSA zzxIjr3wW2-IebgapmM&qM-NUodf?SS->R!`9aR$_UTIZIu+`t~HEDTTw*$X5_~*Y< z>-SFGesJ*Fp8l!s50AWWRJHQYZIV2H{mp&GnBiCJl|FGMws@yafd!XM8vbbO*q4bZ zzr1_?;mW>)|F&$@Z)W{R&qu_iE-CM%j`<&ckETj-~_L ztf{!c=UuwZ-zer5ec{C6Vv7U*z1yk7^^mX6Z7N?@OYYjP*wzwfy(QnDN4I!i@$9Ri zW$P!0&)Czo%DeTW<11X7+UNFpA@=V&1LqA7jmch&mNx zf?l}RXfZ1!w6$L6NuTS(hPfA;obYqx>ptVQmTtI3o9puL`x|4reLbq~SFLS@R((0S zf6{5~q58me^zsQxq(|V`)}N+?yslNd>o6Zzk0WQU+7E>9>d<}F!8X$-PMX%jeN5_} zjQ;M6|2!YPed=fBijD7o@8;T5_R3@Pm9c*ab*){X^OsFKw`*?~!(2D+xgO?vLU;Aj z)jeyLyBY;^{ms+9Y>lhOo&rC+wiqA@rYK0FsEdXu_z6;VL8xBSy0`y-&57t-&9Gk7bxcD?;_h57IQ1@ zBHBanU!J=2pLq!Tuy_ioJPpH?ypcJy{#dy)!{q?MsVe zPK~Z7o2H@J?^=J8`QHpvw`(QvH&G>X%BCS0_UYE&OnO?`)C|dfxkMiO#Gmk4wNLRU z%0JmuCD9)BDQ1-TP83PfgD z3bH2H7*Q4IiA6!9Y9xq)K~)4aoP^E?qQq#D?AV|!OY;R$lnr{vqNvL3bRzVEO=wUX z0QnLKtHEhardMn)TE?xMjcO)1XllCiD%i8Al9eS{Hw1EIjFTls(>1Ojx~YF;gDu<4 zV2jWiy09)wL^823ZqIofz7_LWMAXSatZ}B(9an(ml?_#({D;8F_Q{%CDVy#z9-I_q zNulO|AuoD6tb8+;WPB zLd6NHqB3J88oHWwbvag2G~nup+=(X6!f1*@ltqBl8Ek{5&g2tdftYOYAL?vUE=Vx= zR0t(VH(glD!&phMYHU7896bocTu`W$gkUm*Bf%BYJC-ETS&(otNs^cxNf2P-t}zZm zlf~6+D=A5)NZAjCpgtSwEKAfoN^tS)bh5@dD8oxRU#HDNX8fKMi3yFQsMH4GTa9l} zF?4oKDtPU@upp@tWX96J94rQ+qBAb2Iukev^2WFT1Iz9m#+lj=m=801Gq#WLRKR(& zOm>dNmNb)ptc!B?$64RPze#iv!L*L$d^kZ<7-!r>S;Q|J`oI#KRNzHfW}W~vrY!Ic z4$za0c|=*|#!pt+8AVx>KQc16C58{8n-^uB39_k+3Y9xkmrWvL0xT6fh@@+h)3=r+ zNH7^pc65`ud)Qot-Xud}fC*kfWnuz%=(Mo4uA!L>uR=VtSd&X6OhIECG$nz_ohh^H zlz{x0Y+H`_qnPAaV#zcGx@*}&qC}o#=pQ|aEO7SAg31me3mUQ5;J=LPq<1H(x-+Bz zyF|z!oz; zBUUw;;cw6={u4~yWO5AMBa8$e6+H_E=Ta(JF&GS%Re@=wtilygUYHuY7%Rl2N{VpR z8OT~nr63NW6DpSJCW|N#9V*8P0uE}H;4hd7R0M;e76oC5jf#naTmst+j1XH`1Wu>CzSf@DSv7uXvZgZI4=~2fH;^XZJHk%3Pr&+2S}tp%C~(MRprXhOhbUI)#>Q!k zX$q_pn-7T8>Dx?eVggyv2~CBIII>)PLW7C3ilCK_Q;~9{>Y*YkW-c0@oaHZIQkhp& zk)EN}1WBQ6F?C3(3N*$xBVxvn2hOo309TCt$YE0bfH~mGuOcF+s(@^iGpk{@fsYBN z!GG0qcZB^&r7&QjLb=!?vd-Bro16J^cw zQkcwQ979ryYRdMbHE>3jFH|(-Tq!#>k>8I7*U!drVS(%k?0Nw1KGJfTbYvGKd!L%v z6ZgYNi8A>B@2F5Kn#PZ+;V0|aKJ}b%Gb>_5*qo)>xlOuea#OA40dJ5XWK4rxGGWn0 z=5r8$Ivco5lMa7PxeM#fOuB)*8y%-x>0)wXt5`(21vJMtqnd`oO}c3^d=8Cep@1ex zOq?{74(Mhe^vuAa$l^$G=9qLK36?N{D6%U7fO3Rv*+Gql{ZYBoM3p7$A;yA}M-{+- z)B_YMG|1yJ3;~s9tkxviIf{ng&?KHiQFT;H$TcBPqewLWg+vnfFB(#GFGbatPxScHXEWNff2Q8kls1~lrgYyz~zAq?5~Y2`JX@5y2- zct}nR1j&U}=4mJmbptjZB1e(tzhJ8vtKm<%d?1rY?^9EdEvFkq=)!5a?6xESrNJUH zAykk)VH29nVj?zW=>XtjF8wNS7@5zesXBvZsP!@M0t?JH15{5Do$ngCFveJUlOg}{<@J%ciibM+Ew5c-ht(nkmx@ptMG;kLGbJPx; zrfLF%$simQk=?P5`WpY1yIxd2a*xZrf7Jg`7a}{v|8j7Yr02{4*zvaT~1{zH*3w`5v|2{;A0L~`%IF3ios zEbz^sY{kBXCwJn4#eYLWxs5I&@i5;&e+{*Ss6sMfH6+v*>3m35(<_GEg8g9wk!NBw zgrAJYp*FxRvxEqPnW?rS#jFkH;6ET}wrgk|mwsFm<(3XiNH-1l!UY(ab7%Dg{{cX_ z0TDIEY8|y$zKFqm1bh<dZl8A%H0Tor#cD*hfNx8)66v#a;WS4c$uHSj>&0 z2^)>l0LwTbsl|-Ffz}@;vS|IG3T^ofse_+_zKqO_@gs6tlBN{4#UUFsV8;CR++YHiVd>kTCx(FCf%@?GY6*o<^LfGi8O;mB{gveAgGlxPJzi7e1 z)*PpRQdD;S#bJj{t0C~?rgQWM?MloLn}~s^;v%WY{3`4}LzSqiu^f+y=+&8n;J=9& zh@BXz7Ro|+Rfc~|R1&FKG9?aiQ8(wCkx{Os@so-CF}o5ZAgI8ZG8ZnWEx#u8D6oSl zNake8Om_T)QZ@6Trj>Fc!i7dImc=%eJQQ3(FCzUGIa9(d8}bekQxnt546=`r2Vyi- ziy4gvZrBRnG_03K<0pjhjD=`NV3}wgnG7m3I_hqehPaZR7$y=00mr5t@e^_*+z%qo z39VA>3rm%%kCZ{xA;N}4?&FOFj;o(r0*6a%_f*CCA zGEo(v41&XV*f9qPw%RF~WFQ>k+K-+=#xxTpn9RNBVg}#`!waCXfE0XW5(F9(U34UK z-J%@>mRmw1jVcWqNSRT!Xf&q{8taGz4e-kOW-J;F{Xvsi-Pa;g?FS9{Y&M}v109TG z00}f!X0T`u&ywwyKxBO@ps|J>i$-M(G?Sul0C!O7rlC{LoUvgTiYP=0ESgjF1J;8k zQCJ5W?IyOyu`(@atQQY7w0jb_WDzMq1&w7!EgFR$pt1ZDXa<)Bv=urITr|s$VIY$K z7aLj0f1>HoG}g^*X&>!iL^q#AVG}wF^c)-f(Tw6-){2R7Mi#ct(MS+Y>MBKaNl+XH z8ivxVR#*ZCp;^*o3nsg zn_<0Hps_Yui^gRZZT9RSDhVyE!=W^mh1YUvB&w|JBr23XxIkPOw3Mf!56w2Lw5w&4##T4BFNRSfh^&Q zae)489P5h4^8=K7=r}xAVrwAcppB;1+Xb4tv}m0Dh~xMoFam60g$Cl7Pt7S`WC2AG zS)S6Oacjom0LC#m02+e>ps@x*B)al|1Mp=`2rd6c)d^;tf+xrkdnaJgD7pnrwq(IV zB-v4=MWppgh%`$(qxyydC}FiF{!|FjAJ4opXt@H?kBN3nh>NEaBH&{umSL>vIP@t} zS+Lr7soKHsGy5UhkPTudk$7D29r(-@LNgD<~2bi49{pcI4oEdD!m5y%7;F1Coy z3?J)!})XAkJ2kOt&n~S7m=Z3;jxJK95l8< zzl6*;g9J$KH7x#PAlj{R?!;0_(BNS>jdKCL4U7w@TQM#msLOTlS!3m54GU>;jKhkpHKlEE^MG?z-Z_vU^KLQa~jPe zV2$i9fgJp2wL8$egEMAvhxOivFQPFUfDA8_8N3T300j6CLo&#Y`{?gv>60W+9|Z{%3nYaGK`qu?V71wiyI+ zjK&=nQYg$}AuXNDVP)Yz5ShoqV>0Hk0PDC>(ScOxW;7&@D2?|}p-=;dzy!%E^|O!J zTLV;=SbpB3F}No2_bC_$+>bRZ{^zhC#cQ@}s5^B;68r&^8FU128f!%W`gZhPX0Drg z{~+dZ?+9QR7YtVMwctF1-=H!04V=y3w`6qSp%Wf>G5C#!E(TOUWAGaqE87=#wDMX^ zBvAEY+KkE-W4Kj(qPLIw5#xo4+!Py!_R~ySPE#vF8&$H4ovc0ad07z^!+8(@8iO*3 zj#$3NdZNbHFtg&VTzf*-xMaU*?TG;khzw)D)g?gZ1&vuVJaeNxuy~h=pU)tCLKK(f z4|3r@ywYKp0UGlMcmT#E9nF2rAApuC(9CSG!DgT)xi?b}_z%Q9xPas)OJNZi64A`gqE&@%20ved_x_YM zD15Vs9hqKcztGpk*l!^J<$TA8b6Cy%KcsFqO4_po7>Mgm*T)@}P^rT+l0l z9Inyv6acFbT9G8RtGUH|@AP6G~)&uHfZ+Ah%3nIEO+VMC|cg|sf|HyBU-!uRX zB{XKgAzBpcN$9(yJ|8qRzLL#YE&TL4(a$d7{8s)tM+k8aid2x>L-Lr7Lr}nI>~$Kx zMUsMz%SK!|_|JN)&Nsu-JgAVco(0hG13`2V06=zPRE3;5gI@14z>vFRu o%>uj{{J%qbdIbcye>1XAMWUo-j$|kZ)Mt$ua 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 HXleOBjs!_* diff --git a/docs/manual/options.pdf b/docs/manual/options.pdf index a534fa2af0fc5df7f0298271b8be554e871a52e0..84a2ea20b91e2fca2168c873f0d5e87bfbd31d9d 100644 GIT binary patch delta 12890 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 delta 12724 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 SG7kt0=0v8Ukx-IE{(k^n3b6hF diff --git a/docs/manual/spatch_options.tex b/docs/manual/spatch_options.tex index ca6a40d..0edcb8b 100644 --- a/docs/manual/spatch_options.tex +++ b/docs/manual/spatch_options.tex @@ -295,7 +295,8 @@ one of these options can be specified.} which to find non-local include files. This option should be used only once, as each use will overwrite the preceding one.} -\rare{-relax\_include\_path}{This option causes the search for local +\rare{-relax\_include\_path}{This option when combined with -all\_includes + causes the search for local include files to consider the directory specified using {\bf -I} if the included file is not found in the current directory.} @@ -413,6 +414,8 @@ These options use a simplified version of the SmPL language. {\bf Normally, the only output is a diff printed to standard output. +\normal{-keep\_comments}{Don't remove comments adjacent to removed code.} + \normal{-linux\_spacing, -smpl\_spacing}{Control the spacing within the code added by the semantic patch. The option {\bf -linux\_spacing} causes spatch to follow the conventions of Linux, regardless of the spacing in diff --git a/editors/emacs/cocci.el b/editors/emacs/cocci.el index fbf1a71..a655cc2 100644 --- a/editors/emacs/cocci.el +++ b/editors/emacs/cocci.el @@ -2,15 +2,15 @@ ;; Copyright (C) 2006-2007 Yoann Padioleau -;; Please imagine a long and boring gnu-style copyright notice +;; Please imagine a long and boring gnu-style copyright notice ;; appearing just here. ;; Emacs Lisp Archive Entry -;; Author: Padioleau Yoann , +;; Author: Padioleau Yoann , ;; Version: 0.2 ;; Keywords: coccinelle patch refactoring program transformation -;; URL: http://www.emn.fr/x-info/coccinelle/ +;; URL: http://coccinelle.lip6.fr/ ;;; Usage @@ -19,28 +19,29 @@ ;; ;; Add the following lines to your ~/.emacs or equivalent: ;; (load "~/.emacs.d/cocci.el") -;; (setq auto-mode-alist +;; (setq auto-mode-alist ;; (cons '("\\.cocci$" . cocci-mode) auto-mode-alist)) -;; (autoload 'cocci-mode "cocci" +;; (autoload 'cocci-mode "cocci" ;; "Major mode for editing cocci code." t) ;; -;; You can also use cocci-mode to edit the files containing the -;; isomorphisms with: -;; (setq auto-mode-alist +;; You can also use cocci-mode to edit the files containing the +;; isomorphisms with: +;; (setq auto-mode-alist ;; (cons '("\\.iso$" . cocci-mode) auto-mode-alist)) ;; -;;; History +;;; History +;; 2009-11-05 Nico: Cleanups, Change shortcut % to C-M-% (% is used in Python rule) ;; Some cleanups done by Rene Rydhof Hansen -;;; Utilities +;;; Utilities -(defun join-sep (sep xs) +(defun join-sep (sep xs) (mapconcat 'identity xs sep)) -;;; Variables +;;; Variables (defvar cocci-menu) @@ -90,8 +91,8 @@ ;; can look in lexer_cocci.mll for new identifiers -(defconst cocci-c-keywords-list - '("if" "else" "while" "do" "for" "return" +(defconst cocci-c-keywords-list + '("if" "else" "while" "do" "for" "return" "sizeof" "struct" "union" "static" "extern" "const" "volatile" @@ -99,27 +100,27 @@ "switch" "case" )) -(defconst cocci-declaration-keywords-list +(defconst cocci-declaration-keywords-list '("identifier" "type" "parameter" "constant" "expression" "statement" - "function" "local" "list" - "fresh" + "function" "local" "list" + "fresh" "position" "idexpression" "context" - "typedef" + "typedef" "declarer" "iterator" "pure" ;"error" "words" - - "char" "short" "int" "float" "double" "long" + + "char" "short" "int" "float" "double" "long" "void" - "signed" "unsigned" + "signed" "unsigned" )) (defconst cocci-iso-keywords-list - '("Expression" "Statement" "Type" + '("Expression" "Statement" "Type" "Declaration" "TopLevel" "ArgExpression" )) @@ -129,12 +130,11 @@ '("define" "undef" "if" "ifdef" "elif" "else" "endif" "ifndef" "include" - "error" "pragma" - "file" "line" + "error" "pragma" + "file" "line" )) - -(setq cocci-font-lock-keywords +(setq cocci-font-lock-keywords `( ; blink possible errors, when - or + is not in first column @@ -151,7 +151,7 @@ ; --- +++ ; #cpp - ("#\\(include\\) *\\(.*\\)" + ("#\\(include\\) *\\(.*\\)" (1 'font-lock-builtin-face) (2 'font-lock-string-face) ) @@ -163,14 +163,14 @@ ("\"[^\"]*\"" . 'font-lock-string-face) ; rule header - ("@[ \t]*@" . 'cocci-special-face) - ; this rule may seems redundant with the following one, but + ("@[ \t]*@" . 'cocci-special-face) + ; this rule may seems redundant with the following one, but ; without it, @@ int x; @@ would color the int x with rulename-face. - ; by using this rule, we color the @@ and so prevent the + ; by using this rule, we color the @@ and so prevent the ; next rule to be applied (cf font-lock semantic when have not the ; OVERRIDE flag). - ("\\(@\\)\\(.*\\)\\(@\\)" + ("\\(@\\)\\(.*\\)\\(@\\)" (1 'cocci-special-face) (2 'cocci-rulename-face) (3 'cocci-special-face) @@ -181,9 +181,9 @@ ;old: does not work, not easy to handle the rule1, rule2, rule3 list. ; ("@[ \t]*\\(\\(\\w+\\)[ \t,]*\\)*[ \t]*@" - ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]*\\(@\\)" - ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]+\\(extends\\)[ \t]+\\(\\w+\\)[ \t]*\\(@\\)" - ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]+\\(depends\\)[ \t]+\\(on\\)[ \t]+\\(\\(\\w+\\)[ ,\t]*\\)+\\(@\\)" + ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]*\\(@\\)" + ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]+\\(extends\\)[ \t]+\\(\\w+\\)[ \t]*\\(@\\)" + ; ("\\(@\\)[ \t]*\\(\\w+\\)[ \t]+\\(depends\\)[ \t]+\\(on\\)[ \t]+\\(\\(\\w+\\)[ ,\t]*\\)+\\(@\\)" ; inherited variable, fontifying rulename @@ -192,10 +192,9 @@ ".*?\\(\\w+\\)\\.") (2 'cocci-rulename-face)) - ;rule1.T *a; + ;rule1.T *a; ("^\\(\\w+\\)\\." (1 'cocci-rulename-face)) - ; just for pad, metavariables in maj ("\\b[A-Z][0-9]?\\b" . font-lock-variable-name-face) @@ -214,26 +213,26 @@ ("\\bWHEN[ \t]+!=" . 'font-lock-keyword-face) ("\\bwhen[ \t]+=" . 'font-lock-keyword-face) ("\\bWHEN[ \t]+=" . 'font-lock-keyword-face) - + ; used in iso files ("<=>" . 'font-lock-keyword-face) ("=>" . 'font-lock-keyword-face) - (,(concat "\\b\\(" (regexp-opt cocci-iso-keywords-list) "\\)\\b") . + (,(concat "\\b\\(" (regexp-opt cocci-iso-keywords-list) "\\)\\b") . 'cocci-special-face) ("\\<[0-9]+\\>" . 'cocci-number-face) - (,(join-sep "\\|" + (,(join-sep "\\|" (list "(" ")" ";" "," "{" "}" "\\[" "\\]")) . 'cocci-punctuation-face) ; . -> * + etc ; c keywords - (,(concat "\\b\\(" (regexp-opt cocci-c-keywords-list) "\\)\\b") . + (,(concat "\\b\\(" (regexp-opt cocci-c-keywords-list) "\\)\\b") . 'font-lock-keyword-face) ; cocci declaration keywords - (,(concat "\\b\\(" (regexp-opt cocci-declaration-keywords-list) "\\)\\b") . + (,(concat "\\b\\(" (regexp-opt cocci-declaration-keywords-list) "\\)\\b") . 'font-lock-type-face) ; cpp directives @@ -245,7 +244,6 @@ ; "Expressions to highlight in cocci-mode.") - ;; define a mode-specific abbrev table for those who use such things (defvar cocci-mode-abbrev-table nil "Abbrev table used while in cocci mode.") @@ -258,32 +256,32 @@ (setq cocci-mode-map (make-sparse-keymap)) (define-key cocci-mode-map [(meta control *)] 'switch-between-cocci-c) (define-key cocci-mode-map "%" 'cocci-replace-modifiers) - + ;(define-key cocci-mode-map "\C-c" 'compile) ) -(defvar cocci-mode-syntax-table nil +(defvar cocci-mode-syntax-table nil "Syntax table used while in cocci mode.") (unless cocci-mode-syntax-table (setq cocci-mode-syntax-table (make-syntax-table)) ; _ is part of a word. - (modify-syntax-entry ?\_ "w" cocci-mode-syntax-table) + (modify-syntax-entry ?\_ "w" cocci-mode-syntax-table) ; change mode for ", bad interaction with font-lock - (modify-syntax-entry ?\" "w" cocci-mode-syntax-table) + (modify-syntax-entry ?\" "w" cocci-mode-syntax-table) ) ;;; Code -;; helper functions for the cocci programmer +;; helper functions for the cocci programmer (defun cocci-replace-modifiers (beg end str) "TODO" (interactive - (let ((str (read-string "New modifier string (+, -, space): " + (let ((str (read-string "New modifier string (+, -, space): " nil 'my-history))) (list (region-beginning) (region-end) str))) @@ -297,15 +295,15 @@ (defun switch-between-cocci-c () (interactive) (let ((target - (cond ((string-match ".c$" (buffer-name)) + (cond ((string-match ".c$" (buffer-name)) (replace-match ".cocci" t t (buffer-name))) - ((string-match ".cocci$" (buffer-name)) + ((string-match ".cocci$" (buffer-name)) (replace-match ".c" t t (buffer-name))) (t "none")))) (if (get-buffer target) (switch-to-buffer target) - (find-file + (find-file (read-file-name "file: " nil nil t target))))) (eval-after-load "cc-mode" @@ -315,7 +313,6 @@ - (defvar cocci-mode-hook nil "Hook called by `cocci-mode'") @@ -346,7 +343,7 @@ Turning on cocci-mode runs the hook `cocci-mode-hook'." ) -;; Menu +;; Menu (easy-menu-define cocci-menu cocci-mode-map "Cocci menu" '("Cocci" diff --git a/engine/Makefile b/engine/Makefile index 4223798..2533ca8 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - ############################################################################## # Variables ############################################################################## diff --git a/engine/asttoctl.ml b/engine/asttoctl.ml index 8191bfc..f014995 100644 --- a/engine/asttoctl.ml +++ b/engine/asttoctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* true = don't see all matched nodes, only modified ones *) let onlyModif = ref true(*false*) (* set to true for line numbers in the output of ctl_engine *) diff --git a/engine/asttoctl.mli b/engine/asttoctl.mli dissimilarity index 74% index 7f60147..e1dcefa 100644 --- a/engine/asttoctl.mli +++ b/engine/asttoctl.mli @@ -1,31 +1,9 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * string Ast_ctl.modif -type formula = - (cocci_predicate,string, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val asttoctl : Ast_cocci.rule -> string list list -> formula list - -val pp_cocci_predicate : cocci_predicate -> unit - -val cocci_predicate_to_string : cocci_predicate -> string +type cocci_predicate = Lib_engine.predicate * string Ast_ctl.modif +type formula = + (cocci_predicate,string, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val asttoctl : Ast_cocci.rule -> string list list -> formula list + +val pp_cocci_predicate : cocci_predicate -> unit + +val cocci_predicate_to_string : cocci_predicate -> string diff --git a/engine/asttoctl2.ml b/engine/asttoctl2.ml index 0db65d1..7a34083 100644 --- a/engine/asttoctl2.ml +++ b/engine/asttoctl2.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* for MINUS and CONTEXT, pos is always None in this file *) (*search for require*) (* true = don't see all matched nodes, only modified ones *) diff --git a/engine/asttoctl2.mli b/engine/asttoctl2.mli dissimilarity index 62% index 98828e3..7e9c2e7 100644 --- a/engine/asttoctl2.mli +++ b/engine/asttoctl2.mli @@ -1,37 +1,15 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val asttoctl : - Ast_cocci.rule -> - (Ast_cocci.meta_name list list (* used after *) * - Ast_cocci.meta_name list list (* fresh used after *) * - Ast_cocci.meta_name list list (* fresh used after seeds *)) -> - Ast_cocci.meta_name list list (* positions *) -> - formula list - -val pp_cocci_predicate : cocci_predicate -> unit - -val cocci_predicate_to_string : cocci_predicate -> string +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val asttoctl : + Ast_cocci.rule -> + (Ast_cocci.meta_name list list (* used after *) * + Ast_cocci.meta_name list list (* fresh used after *) * + Ast_cocci.meta_name list list (* fresh used after seeds *)) -> + Ast_cocci.meta_name list list (* positions *) -> + formula list + +val pp_cocci_predicate : cocci_predicate -> unit + +val cocci_predicate_to_string : cocci_predicate -> string diff --git a/engine/asttomember.ml b/engine/asttomember.ml index d4c32f3..9813f85 100644 --- a/engine/asttomember.ml +++ b/engine/asttomember.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* on the first pass, onlyModif is true, so we don't see all matched nodes, only modified ones *) diff --git a/engine/asttomember.mli b/engine/asttomember.mli dissimilarity index 86% index d5a93aa..5d3a39a 100644 --- a/engine/asttomember.mli +++ b/engine/asttomember.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val asttomember : Ast_cocci.rule -> Ast_cocci.meta_name list list -> - (Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif) list list list +val asttomember : Ast_cocci.rule -> Ast_cocci.meta_name list list -> + (Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif) list list list diff --git a/engine/c_vs_c.ml b/engine/c_vs_c.ml index 5799d96..99470bb 100644 --- a/engine/c_vs_c.ml +++ b/engine/c_vs_c.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common open Ast_c diff --git a/engine/c_vs_c.mli b/engine/c_vs_c.mli dissimilarity index 88% index 55abe18..63548fb 100644 --- a/engine/c_vs_c.mli +++ b/engine/c_vs_c.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - - -val eq_type : Ast_c.fullType -> Ast_c.fullType -> bool -val merge_type : Ast_c.fullType -> Ast_c.fullType -> Ast_c.fullType + +val eq_type : Ast_c.fullType -> Ast_c.fullType -> bool +val merge_type : Ast_c.fullType -> Ast_c.fullType -> Ast_c.fullType diff --git a/engine/check_exhaustive_pattern.ml b/engine/check_exhaustive_pattern.ml index 6b193af..fd89329 100644 --- a/engine/check_exhaustive_pattern.ml +++ b/engine/check_exhaustive_pattern.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Just to warn me when there is some news in the types in * ast_cocci.ml or even ast_c.ml, so that I can then adjust my code in diff --git a/engine/check_reachability.ml b/engine/check_reachability.ml index 82b62fa..fb8530f 100644 --- a/engine/check_reachability.ml +++ b/engine/check_reachability.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ---------------------------------------------------------------- *) (* code to check for ambiguities *) diff --git a/engine/check_reachability.mli b/engine/check_reachability.mli dissimilarity index 67% index 0632ae1..21ef7be 100644 --- a/engine/check_reachability.mli +++ b/engine/check_reachability.mli @@ -1,35 +1,13 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type witness = - (Ograph_extended.nodei, unit, - (Ograph_extended.nodei, unit, unit) Ast_ctl.generic_ctl list) - Ast_ctl.generic_witnesstree - -type ('a,'b,'c,'d,'e) triples = - (Ograph_extended.nodei * 'a * - (Ograph_extended.nodei, - ('b, ('c,'d) Wrapper_ctl.wrapped_binding) Ast_ctl.generic_subst list, 'e) - Ast_ctl.generic_witnesstree list) list - -val check_reachability : - ('a,'b,'c,'d,'e) triples -> Control_flow_c.cflow -> unit +type witness = + (Ograph_extended.nodei, unit, + (Ograph_extended.nodei, unit, unit) Ast_ctl.generic_ctl list) + Ast_ctl.generic_witnesstree + +type ('a,'b,'c,'d,'e) triples = + (Ograph_extended.nodei * 'a * + (Ograph_extended.nodei, + ('b, ('c,'d) Wrapper_ctl.wrapped_binding) Ast_ctl.generic_subst list, 'e) + Ast_ctl.generic_witnesstree list) list + +val check_reachability : + ('a,'b,'c,'d,'e) triples -> Control_flow_c.cflow -> unit diff --git a/engine/cocci_vs_c.ml b/engine/cocci_vs_c.ml index 5955efe..c224481 100644 --- a/engine/cocci_vs_c.ml +++ b/engine/cocci_vs_c.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Yoann Padioleau, Julia Lawall * * Copyright (C) 2006, 2007, 2008 Ecole des Mines de Nantes diff --git a/engine/cocci_vs_c.mli b/engine/cocci_vs_c.mli index e41c4ea..efe2be5 100644 --- a/engine/cocci_vs_c.mli +++ b/engine/cocci_vs_c.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (*****************************************************************************) (* Cocci vs C *) (*****************************************************************************) diff --git a/engine/ctlcocci_integration.ml b/engine/ctlcocci_integration.ml index 5c6c12d..7b1af47 100644 --- a/engine/ctlcocci_integration.ml +++ b/engine/ctlcocci_integration.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common open Ograph_extended @@ -101,18 +79,19 @@ let (labels_for_ctl: string list (* dropped isos *) -> | Lib_engine.Paren _, _ -> [] | Lib_engine.Label s, _ -> let labels = F.extract_labels node in - [(nodei, (p,[(s --> (Lib_engine.LabelVal labels))]))] + [(nodei, + (p,[(s --> (Lib_engine.LabelVal (Lib_engine.Absolute labels)))]))] | Lib_engine.BCLabel s, _ -> (match F.extract_bclabels node with [] -> [] (* null for all nodes that are not break or continue *) | labels -> - [(nodei, (p,[(s --> (Lib_engine.LabelVal labels))]))]) + [(nodei, + (p,[(s --> + (Lib_engine.LabelVal (Lib_engine.Absolute labels)))]))]) | Lib_engine.PrefixLabel s, _ -> let labels = F.extract_labels node in - let prefixes = Common.inits labels +> Common.tail in - prefixes +> List.map (fun prefixlabels -> - (nodei, (p,[(s --> (Lib_engine.LabelVal prefixlabels))])) - ) + [(nodei, + (p,[(s --> (Lib_engine.LabelVal (Lib_engine.Prefix labels)))]))] | Lib_engine.Match (re), _unwrapnode -> let substs = @@ -291,6 +270,36 @@ module PRED = Pretty_print_engine.pp_predicate x end +(* prefix has to be nonempty *) +let prefix l1 l2 = + let rec loop = function + ([],_) -> true + | (_,[]) -> false + | (x::xs,y::ys) when x = y -> loop (xs,ys) + | _ -> false in + loop(l1,l2) + +let compatible_labels l1 l2 = + match (l1,l2) with + (Lib_engine.Absolute(l1),Lib_engine.Absolute(l2)) -> l1 =*= l2 + | (Lib_engine.Absolute(l1),Lib_engine.Prefix(l2)) -> prefix l1 l2 + | (Lib_engine.Prefix(l1),Lib_engine.Absolute(l2)) -> prefix l2 l1 + | (Lib_engine.Prefix(l1),Lib_engine.Prefix(l2)) -> + not (l1 = []) && not (l2 = []) && + List.hd l1 =*= List.hd l2 (* labels are never empty *) + +let merge_labels l1 l2 = + match (l1,l2) with + (* known to be compatible *) + (Lib_engine.Absolute(_),Lib_engine.Absolute(_)) -> l1 + | (Lib_engine.Absolute(_),Lib_engine.Prefix(_)) -> l1 + | (Lib_engine.Prefix(_),Lib_engine.Absolute(_)) -> l2 + | (Lib_engine.Prefix(l1),Lib_engine.Prefix(l2)) -> + let rec max_prefix = function + (x::xs,y::ys) when x = y -> x::(max_prefix(xs,ys)) + | (l1,l2) -> [] in + Lib_engine.Prefix(max_prefix(l1,l2)) + module ENV = struct type value = Lib_engine.metavar_binding_kind2 @@ -306,6 +315,8 @@ module ENV = | (Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal a), Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal b)) -> C_vs_c.eq_type a b + | (Lib_engine.LabelVal(l1),Lib_engine.LabelVal(l2)) -> + compatible_labels l1 l2 | _ -> v =*= v' let merge_val v v' = (* values guaranteed to be compatible *) (* v *) @@ -321,6 +332,8 @@ module ENV = | (Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal a), Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal b)) -> Lib_engine.NormalMetaVal (Ast_c.MetaTypeVal (C_vs_c.merge_type a b)) + | (Lib_engine.LabelVal(l1),Lib_engine.LabelVal(l2)) -> + Lib_engine.LabelVal(merge_labels l1 l2) | _ -> v let print_mvar (_,s) = Format.print_string s diff --git a/engine/ctlcocci_integration.mli b/engine/ctlcocci_integration.mli index e87f6ab..f515e06 100644 --- a/engine/ctlcocci_integration.mli +++ b/engine/ctlcocci_integration.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ograph_extended val labels_for_ctl : diff --git a/engine/ctltotex.ml b/engine/ctltotex.ml index 2c658c5..7cfee46 100644 --- a/engine/ctltotex.ml +++ b/engine/ctltotex.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module CTL = Ast_ctl let prelude = diff --git a/engine/ctltotex.mli b/engine/ctltotex.mli dissimilarity index 82% index 88c70e5..68354f5 100644 --- a/engine/ctltotex.mli +++ b/engine/ctltotex.mli @@ -1,29 +1,7 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val totex : - string -> - Ast_cocci.rule list -> - ((Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif, - Ast_cocci.meta_name,Wrapper_ctl.info) - Ast_ctl.generic_ctl * 'a) list list -> - unit +val totex : + string -> + Ast_cocci.rule list -> + ((Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif, + Ast_cocci.meta_name,Wrapper_ctl.info) + Ast_ctl.generic_ctl * 'a) list list -> + unit diff --git a/engine/flag_engine.ml b/engine/flag_engine.ml dissimilarity index 72% index d6df818..950835c 100644 --- a/engine/flag_engine.ml +++ b/engine/flag_engine.ml @@ -1,34 +1,12 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -let debug_engine = ref false - -(* false = simpler formulas, only for debugging *) -let useEU = ref true - -let disallow_nested_exps = ref false - -(* if this flag is not set, then break and continue are also error exits *) -let only_return_is_error_exit = ref false - -(* a hack to allow adding code in some more sgrep-like uses *) -let allow_inconsistent_paths = ref false +let debug_engine = ref false + +(* false = simpler formulas, only for debugging *) +let useEU = ref true + +let disallow_nested_exps = ref false + +(* if this flag is not set, then break and continue are also error exits *) +let only_return_is_error_exit = ref false + +(* a hack to allow adding code in some more sgrep-like uses *) +let allow_inconsistent_paths = ref false diff --git a/engine/flag_matcher.ml b/engine/flag_matcher.ml dissimilarity index 63% index 8c2f4e0..0b6035e 100644 --- a/engine/flag_matcher.ml +++ b/engine/flag_matcher.ml @@ -1,45 +1,23 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -let debug_engine = ref false -let verbose_matcher = ref true - - -(* false = simpler formulas, only for debugging *) -let useEU = ref true - -let disallow_nested_exps = ref false - -(* if this flag is not set, then break and continue are also error exits *) -let only_return_is_error_exit = ref false - -(* a hack to allow adding code in some more sgrep-like uses *) -let allow_inconsistent_paths = ref false - -(* see the use of this variable in asttoctl2.ml *) -let no_safe_expressions = ref false - -let show_misc = ref true - - -let show_transinfo = ref false - +let debug_engine = ref false +let verbose_matcher = ref true + + +(* false = simpler formulas, only for debugging *) +let useEU = ref true + +let disallow_nested_exps = ref false + +(* if this flag is not set, then break and continue are also error exits *) +let only_return_is_error_exit = ref false + +(* a hack to allow adding code in some more sgrep-like uses *) +let allow_inconsistent_paths = ref false + +(* see the use of this variable in asttoctl2.ml *) +let no_safe_expressions = ref false + +let show_misc = ref true + + +let show_transinfo = ref false + diff --git a/engine/isomorphisms_c_c.ml b/engine/isomorphisms_c_c.ml index 5138578..bd06586 100644 --- a/engine/isomorphisms_c_c.ml +++ b/engine/isomorphisms_c_c.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (* When in a semantic patch there is f(X) ... f(X) we want to force diff --git a/engine/lib_engine.ml b/engine/lib_engine.ml index e2ff06d..2ee7e4e 100644 --- a/engine/lib_engine.ml +++ b/engine/lib_engine.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ograph_extended (*****************************************************************************) @@ -55,9 +33,11 @@ type metavars_binding = Ast_c.metavars_binding type metavar_binding_kind2 = | NormalMetaVal of Ast_c.metavar_binding_kind | ParenVal of Ast_cocci.meta_name - | LabelVal of int list + | LabelVal of labelval | GoodVal | BadVal (* used to implement \+ *) +and labelval = Absolute of int list | Prefix of int list + and metavars_binding2 = (mvar, metavar_binding_kind2) Common.assoc diff --git a/engine/lib_matcher_c.ml b/engine/lib_matcher_c.ml dissimilarity index 100% index 57e52bf..e69de29 100644 --- a/engine/lib_matcher_c.ml +++ b/engine/lib_matcher_c.ml @@ -1,22 +0,0 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - diff --git a/engine/lib_matcher_c.mli b/engine/lib_matcher_c.mli dissimilarity index 100% index 57e52bf..e69de29 100644 --- a/engine/lib_matcher_c.mli +++ b/engine/lib_matcher_c.mli @@ -1,22 +0,0 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - diff --git a/engine/main.ml b/engine/main.ml index 0d2d384..b480855 100644 --- a/engine/main.ml +++ b/engine/main.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ----------------------------------------------------------------------- *) (* Entry point *) diff --git a/engine/pattern_c.ml b/engine/pattern_c.ml index 67f7414..99eba15 100644 --- a/engine/pattern_c.ml +++ b/engine/pattern_c.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Yoann Padioleau * * Copyright (C) 2006, 2007 Ecole des Mines de Nantes diff --git a/engine/pattern_c.mli b/engine/pattern_c.mli dissimilarity index 82% index b29c66e..76525ff 100644 --- a/engine/pattern_c.mli +++ b/engine/pattern_c.mli @@ -1,28 +1,6 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - - -val match_re_node : - string list (* dropped isos *) -> - Ast_cocci.rule_elem -> Control_flow_c.node -> - Lib_engine.metavars_binding -> - (Ast_cocci.rule_elem * Lib_engine.metavars_binding) list + +val match_re_node : + string list (* dropped isos *) -> + Ast_cocci.rule_elem -> Control_flow_c.node -> + Lib_engine.metavars_binding -> + (Ast_cocci.rule_elem * Lib_engine.metavars_binding) list diff --git a/engine/postprocess_transinfo.ml b/engine/postprocess_transinfo.ml index fa41cd3..9442e25 100644 --- a/engine/postprocess_transinfo.ml +++ b/engine/postprocess_transinfo.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* two goals: first drop from the environments things that are not used, and second prompt for the names of fresh variables that are used *) diff --git a/engine/postprocess_transinfo.mli b/engine/postprocess_transinfo.mli dissimilarity index 63% index 6a2033a..e45a8d6 100644 --- a/engine/postprocess_transinfo.mli +++ b/engine/postprocess_transinfo.mli @@ -1,35 +1,13 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val process : - Ast_cocci.meta_name list (* used after *) -> - (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list - (*inherited env*)-> - (Ograph_extended.nodei * - (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list * - Lib_engine.predicate) list list -> - (int list * - (Ograph_extended.nodei * - (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) - list * - Lib_engine.predicate)) list * - (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list list +val process : + Ast_cocci.meta_name list (* used after *) -> + (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list + (*inherited env*)-> + (Ograph_extended.nodei * + (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list * + Lib_engine.predicate) list list -> + (int list * + (Ograph_extended.nodei * + (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) + list * + Lib_engine.predicate)) list * + (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list list diff --git a/engine/pretty_print_engine.ml b/engine/pretty_print_engine.ml index 546e6f5..68303e3 100644 --- a/engine/pretty_print_engine.ml +++ b/engine/pretty_print_engine.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common.Infix open Lib_engine @@ -71,13 +49,20 @@ and pp_binding subst = let pp_binding_kind2 = function | ParenVal s -> pp "pv("; pp_meta s; pp ")" | NormalMetaVal x -> pp_binding_kind x - | LabelVal xs -> + | LabelVal (Absolute xs) -> begin pp "labelval"; pp "("; Common.print_between (fun () -> pp ",") Format.print_int xs; pp ")"; end + | LabelVal (Prefix xs) -> + begin + pp "prefixlabelval"; + pp "("; + Common.print_between (fun () -> pp ",") Format.print_int xs; + pp ")"; + end | GoodVal -> pp "goodval" | BadVal -> pp "badval" diff --git a/engine/pretty_print_engine.mli b/engine/pretty_print_engine.mli index 034207e..81c9536 100644 --- a/engine/pretty_print_engine.mli +++ b/engine/pretty_print_engine.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* could be in pretty_print_c because dependent of ast_c but metavars * are in ast_c for "bad" reason, so better put the pretty_print * of metavars here diff --git a/engine/sgrep.ml b/engine/sgrep.ml index 9f31764..bb75096 100644 --- a/engine/sgrep.ml +++ b/engine/sgrep.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - type marker = NoMark | BefMark of string | AftMark of string | BefAftMark of string * string diff --git a/engine/transformation_c.ml b/engine/transformation_c.ml index 53a065a..8eb1b65 100644 --- a/engine/transformation_c.ml +++ b/engine/transformation_c.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Yoann Padioleau * * Copyright (C) 2006, 2007 Ecole des Mines de Nantes diff --git a/engine/transformation_c.mli b/engine/transformation_c.mli dissimilarity index 74% index 3a7b557..0e943a9 100644 --- a/engine/transformation_c.mli +++ b/engine/transformation_c.mli @@ -1,28 +1,6 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* note that now we do the transformation via side effect on ast *) -val transform : - string (* rule name *) -> string list (* dropped isos *) -> - Lib_engine.metavars_binding -> (* inherited bindings *) - Lib_engine.numbered_transformation_info -> - Control_flow_c.cflow -> Control_flow_c.cflow (* could be unit *) +(* note that now we do the transformation via side effect on ast *) +val transform : + string (* rule name *) -> string list (* dropped isos *) -> + Lib_engine.metavars_binding -> (* inherited bindings *) + Lib_engine.numbered_transformation_info -> + Control_flow_c.cflow -> Control_flow_c.cflow (* could be unit *) diff --git a/env.csh b/env.csh index 6c76161..1f2f1bb 100644 --- a/env.csh +++ b/env.csh @@ -6,3 +6,5 @@ setenv LD_LIBRARY_PATH $COCCINELLE_HOME:$LD_LIBRARY_PATH echo setting PYTHONPATH setenv PYTHONPATH $COCCINELLE_HOME/python:$PYTHONPATH + +setenv PATH $COCCINELLE_HOME:$PATH diff --git a/env.sh b/env.sh index 3413607..02e1822 100644 --- a/env.sh +++ b/env.sh @@ -1,5 +1,5 @@ # I put both stuff useful for the user and developer in this file. Could -# separate and have a env-user.sh, env-compile.sh, env-developer.sh, +# separate and have a env-user.sh, env-compile.sh, env-developer.sh, # but it's not worth it. #!!!!You need to source me with "source env.sh" from the good directory!!!! @@ -19,7 +19,7 @@ then fi if [ ! -r $DIR/standard.iso ] - then echo "standard.iso not found in '$DIR'. + then echo "standard.iso not found in '$DIR'. Give the coccinelle directory as the first argument. "; else @@ -48,3 +48,5 @@ PYTHONPATH=$COCCINELLE_HOME/python:PYTHONPATH ; export PYTHONPATH fi +export PATH=$COCCINELLE_HOME:$PATH + diff --git a/flag_cocci.ml b/flag_cocci.ml index 55510d6..8e1677e 100644 --- a/flag_cocci.ml +++ b/flag_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* the inputs *) let show_c = ref false let show_cocci = ref false diff --git a/globals/Makefile b/globals/Makefile index 226bd5d..c71daa0 100644 --- a/globals/Makefile +++ b/globals/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -include ../Makefile.config diff --git a/globals/config.ml.in b/globals/config.ml.in index 18f2699..82e7798 100644 --- a/globals/config.ml.in +++ b/globals/config.ml.in @@ -1,7 +1,7 @@ -let version = "0.1.11" +let version = "0.2.0rc1" -let path = - try (Sys.getenv "COCCINELLE_HOME") +let path = + try (Sys.getenv "COCCINELLE_HOME") with Not_found->"/usr/local/share/coccinelle" let std_iso = ref (Filename.concat path "standard.iso") diff --git a/globals/flag.ml b/globals/flag.ml dissimilarity index 60% index f6c51df..24ca023 100644 --- a/globals/flag.ml +++ b/globals/flag.ml @@ -1,47 +1,25 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -let sgrep_mode2 = ref false - -let show_misc = ref true - -let show_transinfo = ref false - -let show_trying = ref false - -let track_iso_usage = ref false - -type scanner = Glimpse | Google of string | NoScanner -let scanner = ref NoScanner - -let pyoutput = ref "coccilib.output.Console" - -(*"Some" value is the path with respect to which the patch should be created*) -let patch = ref (None : string option) - -let make_hrule = ref (None : string (*dir*) option) -let hrule_per_file = ref true (* if false, then a rule per function *) - -let currentfile = ref (None : string option) - -let current_element = ref "" -let dir = ref "" +let sgrep_mode2 = ref false + +let show_misc = ref true + +let show_transinfo = ref false + +let show_trying = ref false + +let track_iso_usage = ref false + +type scanner = Glimpse | Google of string | NoScanner +let scanner = ref NoScanner + +let pyoutput = ref "coccilib.output.Console" + +(*"Some" value is the path with respect to which the patch should be created*) +let patch = ref (None : string option) + +let make_hrule = ref (None : string (*dir*) option) +let hrule_per_file = ref true (* if false, then a rule per function *) + +let currentfile = ref (None : string option) + +let current_element = ref "" +let dir = ref "" diff --git a/main.ml b/main.ml index 08d247c..2698617 100644 --- a/main.ml +++ b/main.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common module FC = Flag_cocci @@ -273,13 +251,14 @@ let short_options = [ "-version", Arg.Unit (fun () -> - pr2 (spf "spatch version: %s" Config.version); + let withpython = if Pycocci.python_support then "with" else "without" in + pr2 (spf "spatch version %s %s Python support" Config.version withpython); exit 0; ), " guess what"; "-date", Arg.Unit (fun () -> - pr2 "version: $Date: 2009/09/26 14:17:24 $"; + pr2 "version: $Date: 2010/01/04 11:16:30 $"; raise (Common.UnixExit 0) ), " guess what"; @@ -458,6 +437,9 @@ let other_options = [ Flag.make_hrule := Some s; FC.include_options := FC.I_NO_INCLUDES), " semantic patch generation"; + "-keep_comments", Arg.Set Flag_parsing_c.keep_comments, + " keep comments around removed code"; + "-loop", Arg.Set Flag_ctl.loop_in_src_code, " "; "-no_loops", Arg.Set Flag_parsing_c.no_loops, " drop all back edges derived from looping constructs - unsafe"; @@ -479,7 +461,7 @@ let other_options = [ "-disallow_nested_exps", Arg.Set Flag_matcher.disallow_nested_exps, - "disallow an expresion pattern from matching a term and its subterm"; + " disallow an expresion pattern from matching a term and its subterm"; "-disable_worth_trying_opt", Arg.Clear FC.worth_trying_opt, " "; "-only_return_is_error_exit", @@ -635,7 +617,7 @@ let adjust_stdin cfile k = let glimpse_filter (coccifile, isofile) dir = let (_metavars,astcocci,_free_var_lists,_negated_positions, - _used_after_lists,_positions_lists,_,query,_virt) = + _used_after_lists,_positions_lists,_,query) = Cocci.sp_of_file coccifile (Some isofile) in match query with None -> pr2 "no glimpse keyword inferred from snippet"; None diff --git a/parsing_c/flag_parsing_c.ml b/parsing_c/flag_parsing_c.ml index 2f920b2..69c2792 100644 --- a/parsing_c/flag_parsing_c.ml +++ b/parsing_c/flag_parsing_c.ml @@ -255,3 +255,5 @@ let set_smpl_spacing _ = spacing := SMPL (*use spacing from the SP*) unsafe but more efficient *) let no_loops = ref false let no_gotos = ref false + +let keep_comments = ref false (* unparsing *) diff --git a/parsing_c/unparse_c.ml b/parsing_c/unparse_c.ml index 97b03b2..f82f7d1 100644 --- a/parsing_c/unparse_c.ml +++ b/parsing_c/unparse_c.ml @@ -451,6 +451,7 @@ let is_minusable_comment = function | Parser_c.TCommentSpace _ (* only whitespace *) (* patch: coccinelle *) | Parser_c.TCommentNewline _ (* newline plus whitespace *) -> true + | Parser_c.TComment _ when !Flag_parsing_c.keep_comments -> false | Parser_c.TComment _ | Parser_c.TCommentCpp (Token_c.CppAttr, _) | Parser_c.TCommentCpp (Token_c.CppMacro, _) @@ -471,6 +472,7 @@ let is_minusable_comment_nocpp = function | Parser_c.TCommentSpace _ (* only whitespace *) (* patch: coccinelle *) | Parser_c.TCommentNewline _ (* newline plus whitespace *) -> true + | Parser_c.TComment _ when !Flag_parsing_c.keep_comments -> false | Parser_c.TComment _ -> true | Parser_c.TCommentCpp (Token_c.CppAttr, _) | Parser_c.TCommentCpp (Token_c.CppMacro, _) diff --git a/parsing_cocci/.depend b/parsing_cocci/.depend index 71b8ca0..1993a83 100644 --- a/parsing_cocci/.depend +++ b/parsing_cocci/.depend @@ -26,6 +26,7 @@ simple_assignments.cmi: ast0_cocci.cmi single_statement.cmi: ast0_cocci.cmi test_exps.cmi: ast0_cocci.cmi top_level.cmi: ast0_cocci.cmi +type_cocci.cmi: type_infer.cmi: ast0_cocci.cmi unify_ast.cmi: ast_cocci.cmi unitary_ast0.cmi: ast0_cocci.cmi @@ -78,6 +79,8 @@ disjdistr.cmo: visitor_ast.cmi ../globals/flag.cmo ../commons/common.cmi \ ast_cocci.cmi disjdistr.cmi disjdistr.cmx: visitor_ast.cmx ../globals/flag.cmx ../commons/common.cmx \ ast_cocci.cmx disjdistr.cmi +flag_parsing_cocci.cmo: +flag_parsing_cocci.cmx: free_vars.cmo: visitor_ast.cmi type_cocci.cmi ../commons/common.cmi \ ast_cocci.cmi free_vars.cmi free_vars.cmx: visitor_ast.cmx type_cocci.cmx ../commons/common.cmx \ @@ -148,6 +151,8 @@ pretty_print_cocci.cmo: type_cocci.cmi ../globals/flag.cmo \ ../commons/common.cmi ast_cocci.cmi pretty_print_cocci.cmi pretty_print_cocci.cmx: type_cocci.cmx ../globals/flag.cmx \ ../commons/common.cmx ast_cocci.cmx pretty_print_cocci.cmi +semantic_cocci.cmo: +semantic_cocci.cmx: simple_assignments.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \ ../globals/flag.cmo ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi \ simple_assignments.cmi diff --git a/parsing_cocci/Makefile b/parsing_cocci/Makefile index f783425..f032147 100644 --- a/parsing_cocci/Makefile +++ b/parsing_cocci/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -include ../Makefile.config TARGET=cocci_parser diff --git a/parsing_cocci/adjacency.ml b/parsing_cocci/adjacency.ml index 1cf3e4b..211cabb 100644 --- a/parsing_cocci/adjacency.ml +++ b/parsing_cocci/adjacency.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module V0 = Visitor_ast0 module VT0 = Visitor_ast0_types diff --git a/parsing_cocci/adjacency.mli b/parsing_cocci/adjacency.mli dissimilarity index 94% index 1375027..f076530 100644 --- a/parsing_cocci/adjacency.mli +++ b/parsing_cocci/adjacency.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val compute_adjacency : Ast0_cocci.rule -> Ast0_cocci.rule +val compute_adjacency : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/adjust_pragmas.ml b/parsing_cocci/adjust_pragmas.ml index a1a6833..f645a2a 100644 --- a/parsing_cocci/adjust_pragmas.ml +++ b/parsing_cocci/adjust_pragmas.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Find a directive or comment at the end of a statement. Things with aft given None, because they can accomodate their own directives or comments *) diff --git a/parsing_cocci/adjust_pragmas.mli b/parsing_cocci/adjust_pragmas.mli dissimilarity index 95% index 8392a90..b87cd1a 100644 --- a/parsing_cocci/adjust_pragmas.mli +++ b/parsing_cocci/adjust_pragmas.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val process : Ast0_cocci.rule -> Ast0_cocci.rule +val process : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/arity.ml b/parsing_cocci/arity.ml index 47a896a..9d14eee 100644 --- a/parsing_cocci/arity.ml +++ b/parsing_cocci/arity.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Arities matter for the minus slice, but not for the plus slice. *) (* ? only allowed on rule_elems, and on subterms if the context is ? also. *) diff --git a/parsing_cocci/arity.mli b/parsing_cocci/arity.mli dissimilarity index 94% index e274276..cd64e1e 100644 --- a/parsing_cocci/arity.mli +++ b/parsing_cocci/arity.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val minus_arity : Ast0_cocci.rule -> Ast0_cocci.rule +val minus_arity : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/ast0_cocci.ml b/parsing_cocci/ast0_cocci.ml index 850afbb..3ae32e5 100644 --- a/parsing_cocci/ast0_cocci.ml +++ b/parsing_cocci/ast0_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/ast0_cocci.mli b/parsing_cocci/ast0_cocci.mli index a1801cf..d0c63d8 100644 --- a/parsing_cocci/ast0_cocci.mli +++ b/parsing_cocci/ast0_cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* --------------------------------------------------------------------- *) (* Modified code *) diff --git a/parsing_cocci/ast0toast.ml b/parsing_cocci/ast0toast.ml index 34582a4..967c906 100644 --- a/parsing_cocci/ast0toast.ml +++ b/parsing_cocci/ast0toast.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Arities matter for the minus slice, but not for the plus slice. *) (* + only allowed on code in a nest (in_nest = true). ? only allowed on diff --git a/parsing_cocci/ast0toast.mli b/parsing_cocci/ast0toast.mli index bd17da5..e46dec0 100644 --- a/parsing_cocci/ast0toast.mli +++ b/parsing_cocci/ast0toast.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - val ast0toast : string -> Ast_cocci.dependency -> string list (* dropped isos *) -> Ast_cocci.exists -> Ast0_cocci.rule -> bool list -> Ast_cocci.ruletype -> diff --git a/parsing_cocci/ast_cocci.ml b/parsing_cocci/ast_cocci.ml index ea0e1dc..934556f 100644 --- a/parsing_cocci/ast_cocci.ml +++ b/parsing_cocci/ast_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Constraints on Meta-* Identifiers, Functions *) type idconstraint = IdNoConstraint @@ -563,7 +541,7 @@ and dependency = | NeverDep of string (* rule never applies for any binding *) | AndDep of dependency * dependency | OrDep of dependency * dependency - | NoDep + | NoDep | FailDep and rule_with_metavars = metavar list * rule diff --git a/parsing_cocci/ast_cocci.mli b/parsing_cocci/ast_cocci.mli index 16e0b1b..c28c803 100644 --- a/parsing_cocci/ast_cocci.mli +++ b/parsing_cocci/ast_cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Constraints on Meta-* Identifiers, Functions *) type idconstraint = IdNoConstraint @@ -537,7 +515,7 @@ and dependency = | NeverDep of string (* rule never applies for any binding *) | AndDep of dependency * dependency | OrDep of dependency * dependency - | NoDep + | NoDep | FailDep and rule_with_metavars = metavar list * rule diff --git a/parsing_cocci/check_meta.ml b/parsing_cocci/check_meta.ml index 43d7186..936f910 100644 --- a/parsing_cocci/check_meta.ml +++ b/parsing_cocci/check_meta.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* For minus fragment, checks that all of the identifier metavariables that are used are not declared as fresh, and check that all declared variables are used. For plus fragment, just check that the variables declared as @@ -366,13 +344,27 @@ and statement old_metas table minus s = parameter_list old_metas table minus params; dots (statement old_metas table minus) body | Ast0.Include(inc,s) -> () (* no metavariables possible *) - | Ast0.Define(def,id,_,body) -> + | Ast0.Define(def,id,params,body) -> ident GLOBAL old_metas table minus id; + define_parameters old_metas table minus params; dots (statement old_metas table minus) body | Ast0.Label(i,_) -> ident ID old_metas table minus i | Ast0.Goto(_,i,_) -> ident ID old_metas table minus i | _ -> () (* no metavariable subterms *) +and define_param old_metas table minus p = + match Ast0.unwrap p with + Ast0.DParam(id) -> ident GLOBAL old_metas table minus id + | Ast0.DPComma(_) | Ast0.DPdots(_) | Ast0.DPcircles(_) -> + () (* no metavariable subterms *) + | Ast0.OptDParam(dp) -> define_param old_metas table minus dp + | Ast0.UniqueDParam(dp) -> define_param old_metas table minus dp + +and define_parameters old_metas table minus x = + match Ast0.unwrap x with + Ast0.NoParams -> () + | Ast0.DParams(lp,dp,rp) -> dots (define_param old_metas table minus) dp + and fninfo old_metas table minus = function Ast0.FStorage(stg) -> () | Ast0.FType(ty) -> typeC old_metas table minus ty diff --git a/parsing_cocci/check_meta.mli b/parsing_cocci/check_meta.mli dissimilarity index 79% index 0e1e733..d239fc2 100644 --- a/parsing_cocci/check_meta.mli +++ b/parsing_cocci/check_meta.mli @@ -1,28 +1,6 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val check_meta : - string -> - Ast_cocci.metavar list (* old metavariables *) -> - Ast_cocci.metavar list (* explicitly inherited *) -> - Ast_cocci.metavar list (* declared locally *) -> - Ast0_cocci.rule -> Ast0_cocci.rule -> unit +val check_meta : + string -> + Ast_cocci.metavar list (* old metavariables *) -> + Ast_cocci.metavar list (* explicitly inherited *) -> + Ast_cocci.metavar list (* declared locally *) -> + Ast0_cocci.rule -> Ast0_cocci.rule -> unit diff --git a/parsing_cocci/comm_assoc.ml b/parsing_cocci/comm_assoc.ml index 2f15177..c508b82 100644 --- a/parsing_cocci/comm_assoc.ml +++ b/parsing_cocci/comm_assoc.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* searches for E op ..., for any commutative and associative binary operator. When this satisfies the isomorphism conditions (ie all minus, or context for the op and ...), then this is converted to Nested(E,op). diff --git a/parsing_cocci/comm_assoc.mli b/parsing_cocci/comm_assoc.mli dissimilarity index 88% index a1e2237..351633b 100644 --- a/parsing_cocci/comm_assoc.mli +++ b/parsing_cocci/comm_assoc.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val comm_assoc : - Ast0_cocci.rule -> string (* rule name *) -> - string list (* dropped isos *) -> Ast0_cocci.rule +val comm_assoc : + Ast0_cocci.rule -> string (* rule name *) -> + string list (* dropped isos *) -> Ast0_cocci.rule diff --git a/parsing_cocci/compute_lines.ml b/parsing_cocci/compute_lines.ml index 94b523e..81aa6b2 100644 --- a/parsing_cocci/compute_lines.ml +++ b/parsing_cocci/compute_lines.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Computes starting and ending logical lines for statements and expressions. every node gets an index as well. *) @@ -563,6 +541,45 @@ and parameter_list prev = dots is_param_dots prev parameterTypeDef (* for export *) let parameter_dots x = dots is_param_dots None parameterTypeDef x +(* --------------------------------------------------------------------- *) + +let is_define_param_dots s = + match Ast0.unwrap s with + Ast0.DPdots(_) | Ast0.DPcircles(_) -> true + | _ -> false + +let rec define_param p = + match Ast0.unwrap p with + Ast0.DParam(id) -> + let id = ident id in mkres p (Ast0.DParam(id)) id id + | Ast0.DPComma(cm) -> + (*let cm = bad_mcode cm in*) (* why was this bad??? *) + let ln = promote_mcode cm in + mkres p (Ast0.DPComma(cm)) ln ln + | Ast0.DPdots(dots) -> + let dots = bad_mcode dots in + let ln = promote_mcode dots in + mkres p (Ast0.DPdots(dots)) ln ln + | Ast0.DPcircles(dots) -> + let dots = bad_mcode dots in + let ln = promote_mcode dots in + mkres p (Ast0.DPcircles(dots)) ln ln + | Ast0.OptDParam(dp) -> + let res = define_param dp in + mkres p (Ast0.OptDParam(res)) res res + | Ast0.UniqueDParam(dp) -> + let res = define_param dp in + mkres p (Ast0.UniqueDParam(res)) res res + +let define_parameters x = + match Ast0.unwrap x with + Ast0.NoParams -> x (* no info, should be ignored *) + | Ast0.DParams(lp,dp,rp) -> + let dp = dots is_define_param_dots None define_param dp in + let l = promote_mcode lp in + let r = promote_mcode rp in + mkres x (Ast0.DParams(lp,dp,rp)) l r + (* --------------------------------------------------------------------- *) (* Top-level code *) @@ -753,6 +770,7 @@ let rec statement s = mkres s (Ast0.Include(inc,stm)) (promote_mcode inc) (promote_mcode stm) | Ast0.Define(def,id,params,body) -> let id = ident id in + let params = define_parameters params in let body = dots is_stm_dots None statement body in mkres s (Ast0.Define(def,id,params,body)) (promote_mcode def) body | Ast0.OptStm(stm) -> diff --git a/parsing_cocci/compute_lines.mli b/parsing_cocci/compute_lines.mli dissimilarity index 76% index 9a3b3d8..2d2cdf0 100644 --- a/parsing_cocci/compute_lines.mli +++ b/parsing_cocci/compute_lines.mli @@ -1,30 +1,8 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val compute_lines : bool -> Ast0_cocci.rule -> Ast0_cocci.rule - -val compute_statement_dots_lines : bool -> - Ast0_cocci.statement Ast0_cocci.dots -> - Ast0_cocci.statement Ast0_cocci.dots - -val compute_statement_lines : - bool -> Ast0_cocci.statement -> Ast0_cocci.statement +val compute_lines : bool -> Ast0_cocci.rule -> Ast0_cocci.rule + +val compute_statement_dots_lines : bool -> + Ast0_cocci.statement Ast0_cocci.dots -> + Ast0_cocci.statement Ast0_cocci.dots + +val compute_statement_lines : + bool -> Ast0_cocci.statement -> Ast0_cocci.statement diff --git a/parsing_cocci/context_neg.ml b/parsing_cocci/context_neg.ml index 8b0065a..e8f2c84 100644 --- a/parsing_cocci/context_neg.ml +++ b/parsing_cocci/context_neg.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Detects subtrees that are all minus/plus and nodes that are "binding context nodes". The latter is a node whose structure and immediate tokens are the same in the minus and plus trees, and such that for every child, diff --git a/parsing_cocci/context_neg.mli b/parsing_cocci/context_neg.mli dissimilarity index 76% index 39cfe59..acdb4b4 100644 --- a/parsing_cocci/context_neg.mli +++ b/parsing_cocci/context_neg.mli @@ -1,30 +1,8 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val context_neg : - Ast0_cocci.rule -> Ast0_cocci.rule -> - (Ast0_cocci.top_level * Ast0_cocci.top_level) list - -val minus_table : - (int list, Ast0_cocci.anything * int Common.set list) Hashtbl.t -val plus_table : - (int list, Ast0_cocci.anything * int Common.set list) Hashtbl.t +val context_neg : + Ast0_cocci.rule -> Ast0_cocci.rule -> + (Ast0_cocci.top_level * Ast0_cocci.top_level) list + +val minus_table : + (int list, Ast0_cocci.anything * int Common.set list) Hashtbl.t +val plus_table : + (int list, Ast0_cocci.anything * int Common.set list) Hashtbl.t diff --git a/parsing_cocci/data.ml b/parsing_cocci/data.ml index e549e6a..03658ad 100644 --- a/parsing_cocci/data.ml +++ b/parsing_cocci/data.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module Ast = Ast_cocci @@ -55,6 +33,7 @@ let in_rule_name = ref false let in_meta = ref false let in_iso = ref false let in_generating = ref false +let ignore_patch_or_match = ref false let in_prolog = ref false (* state machine for lexer..., allows smpl keywords as type names *) let saw_struct = ref false diff --git a/parsing_cocci/data.mli b/parsing_cocci/data.mli index 47e4d8d..2b096c4 100644 --- a/parsing_cocci/data.mli +++ b/parsing_cocci/data.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* types that clutter the .mly file *) (* for iso metavariables, true if they can only match nonmodified, unitary metavariables *) @@ -50,6 +28,7 @@ val in_rule_name : bool ref (* true if parsing the rule name *) val in_meta : bool ref (* true if parsing the metavariable decls *) val in_iso : bool ref (* true if parsing the isomorphisms *) val in_generating : bool ref(* true if generating a rule *) +val ignore_patch_or_match : bool ref (* skip rules not satisfying virt *) val in_prolog : bool ref (* true if parsing the beginning of an SP *) val saw_struct : bool ref (* true if saw struct/union *) val inheritable_positions : string list ref diff --git a/parsing_cocci/disjdistr.ml b/parsing_cocci/disjdistr.ml index 5c91ce4..0d511d3 100644 --- a/parsing_cocci/disjdistr.ml +++ b/parsing_cocci/disjdistr.ml @@ -1,28 +1,13 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module V = Visitor_ast +let setify l = (* keep first *) + let rec loop seen = function + [] -> [] + | x::xs -> + if List.mem x seen then loop seen xs else x::(loop (x::seen) xs) in + loop [] l + let disjmult2 e1 e2 k = List.concat (List.map (function e1 -> List.map (function e2 -> k e1 e2) e2) e1) @@ -268,7 +253,8 @@ and disjdecl d = let generic_orify_rule_elem f re exp rebuild = match f exp with [exp] -> re - | orexps -> Ast.rewrap re (Ast.DisjRuleElem (List.map rebuild orexps)) + | orexps -> + Ast.rewrap re (Ast.DisjRuleElem (setify(List.map rebuild orexps))) let orify_rule_elem re exp rebuild = generic_orify_rule_elem disjexp re exp rebuild @@ -340,7 +326,7 @@ let rec disj_rule_elem r k re = (function exp -> Ast.rewrap re (Ast.Case(case,exp,colon))) | Ast.DisjRuleElem(l) -> (* only case lines *) - Ast.rewrap re(Ast.DisjRuleElem(List.map (disj_rule_elem r k) l)) + Ast.rewrap re(Ast.DisjRuleElem(setify(List.map (disj_rule_elem r k) l))) let disj_all = let mcode x = x in diff --git a/parsing_cocci/disjdistr.mli b/parsing_cocci/disjdistr.mli dissimilarity index 91% index a46529c..ae9c339 100644 --- a/parsing_cocci/disjdistr.mli +++ b/parsing_cocci/disjdistr.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val disj : - Ast_cocci.rule_with_metavars list -> Ast_cocci.rule_with_metavars list +val disj : + Ast_cocci.rule_with_metavars list -> Ast_cocci.rule_with_metavars list diff --git a/parsing_cocci/flag_parsing_cocci.ml b/parsing_cocci/flag_parsing_cocci.ml dissimilarity index 79% index fafaf1b..8ddd8d0 100644 --- a/parsing_cocci/flag_parsing_cocci.ml +++ b/parsing_cocci/flag_parsing_cocci.ml @@ -1,50 +1,14 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* uses E rather than A and adds comments indicating the start and end of -each matched term *) - -let sgrep_mode = ref false (* no longer supported, subsumed by sgrep2 *) - -let show_SP = ref false -let show_iso_failures = ref true - -let iso_limit = ref (None : int option) (*(Some 3)*) - -let defined_virtual_rules = ref [] -let undefined_virtual_rules = ref [] - -let set_defined_virtual_rules s = - (if List.mem s !undefined_virtual_rules - then - failwith - (Printf.sprintf "virtual method %s cannot be both defined and undefined" - s)); - defined_virtual_rules := s :: !defined_virtual_rules - -let set_undefined_virtual_rules s = - (if List.mem s !defined_virtual_rules - then - failwith - (Printf.sprintf "virtual method %s cannot be both defined and undefined" - s)); - undefined_virtual_rules := s :: !undefined_virtual_rules +(* uses E rather than A and adds comments indicating the start and end of +each matched term *) + +let sgrep_mode = ref false (* no longer supported, subsumed by sgrep2 *) + +let show_SP = ref false +let show_iso_failures = ref true + +let iso_limit = ref (None : int option) (*(Some 3)*) + +let defined_virtual_rules = ref ([] : string list) + +let set_defined_virtual_rules s = + defined_virtual_rules := s :: !defined_virtual_rules diff --git a/parsing_cocci/free_vars.ml b/parsing_cocci/free_vars.ml index 55cd94b..775c2d4 100644 --- a/parsing_cocci/free_vars.ml +++ b/parsing_cocci/free_vars.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* For each rule return the list of variables that are used after it. Also augment various parts of each rule with unitary, inherited, and freshness informations *) diff --git a/parsing_cocci/free_vars.mli b/parsing_cocci/free_vars.mli index 625b9e3..979a59f 100644 --- a/parsing_cocci/free_vars.mli +++ b/parsing_cocci/free_vars.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Used after things can only have one binding. Positions can have many bindings. These are combined in ctlcocciintegration, ie after the CTL generation. *) diff --git a/parsing_cocci/function_prototypes.ml b/parsing_cocci/function_prototypes.ml index 1bf76d7..316239d 100644 --- a/parsing_cocci/function_prototypes.ml +++ b/parsing_cocci/function_prototypes.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 diff --git a/parsing_cocci/function_prototypes.mli b/parsing_cocci/function_prototypes.mli dissimilarity index 78% index 6fc8757..85b056c 100644 --- a/parsing_cocci/function_prototypes.mli +++ b/parsing_cocci/function_prototypes.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val process : string (* name *) -> Ast_cocci.metavar list -> - string list (* dropped isos *) -> - Ast0_cocci.rule -> Ast0_cocci.rule -> Ast_cocci.ruletype -> - ((Ast_cocci.metavar list * Ast0_cocci.rule) * - Ast_cocci.rule_with_metavars option) +val process : string (* name *) -> Ast_cocci.metavar list -> + string list (* dropped isos *) -> + Ast0_cocci.rule -> Ast0_cocci.rule -> Ast_cocci.ruletype -> + ((Ast_cocci.metavar list * Ast0_cocci.rule) * + Ast_cocci.rule_with_metavars option) diff --git a/parsing_cocci/get_constants.ml b/parsing_cocci/get_constants.ml index 7f5494b..7d6dda6 100644 --- a/parsing_cocci/get_constants.ml +++ b/parsing_cocci/get_constants.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* get a list of all of the constants in the - slice of a SmPL file, to be used to select which files to process *) @@ -266,6 +244,7 @@ let rec dependent = function | Ast.AndDep (d1,d2) -> dependent d1 or dependent d2 | Ast.OrDep (d1,d2) -> dependent d1 && dependent d2 | Ast.NoDep -> false + | Ast.FailDep -> true (* ------------------------------------------------------------------------ *) diff --git a/parsing_cocci/get_constants.mli b/parsing_cocci/get_constants.mli dissimilarity index 93% index cca4fde..657faf5 100644 --- a/parsing_cocci/get_constants.mli +++ b/parsing_cocci/get_constants.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val get_constants : Ast_cocci.rule list -> string list list +val get_constants : Ast_cocci.rule list -> string list list diff --git a/parsing_cocci/get_constants2.ml b/parsing_cocci/get_constants2.ml index 8b11cfe..82cc072 100644 --- a/parsing_cocci/get_constants2.ml +++ b/parsing_cocci/get_constants2.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module V = Visitor_ast module TC = Type_cocci @@ -431,6 +409,7 @@ let rec dependencies env = function | Ast.AndDep (d1,d2) -> build_and (dependencies env d1) (dependencies env d2) | Ast.OrDep (d1,d2) -> build_or (dependencies env d1) (dependencies env d2) | Ast.NoDep -> True + | Ast.FailDep -> False (* ------------------------------------------------------------------------ *) @@ -487,12 +466,10 @@ let rule_fn tls in_plus env neg_pos = | x -> (build_or x rest_info, new_plusses)) (False,in_plus) (List.combine tls neg_pos) -let get_constants rules neg_pos_vars virt = +let get_constants rules neg_pos_vars = match !Flag.scanner with Flag.NoScanner -> None | Flag.Glimpse | Flag.Google _ -> - let virt = - List.map (function (x,v) -> (x, if v then True else False)) virt in let (info,_,_,_) = List.fold_left (function (rest_info,in_plus,env,locals(*dom of env*)) -> @@ -523,6 +500,6 @@ let get_constants rules neg_pos_vars virt = | dependencies -> (build_or (build_and dependencies cur_info) rest_info, cur_plus,env,locals)) - (False,[],virt,[]) + (False,[],[],[]) (List.combine (rules : Ast.rule list) neg_pos_vars) in interpret true info diff --git a/parsing_cocci/get_constants2.mli b/parsing_cocci/get_constants2.mli dissimilarity index 87% index 5224976..ba09dd9 100644 --- a/parsing_cocci/get_constants2.mli +++ b/parsing_cocci/get_constants2.mli @@ -1,27 +1,4 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val get_constants : - Ast_cocci.rule list -> - (((Ast_cocci.meta_name list) list) list) (*negated pos vars*) -> - ((string * bool) list (* virtual rule info *)) -> - string list option +val get_constants : + Ast_cocci.rule list -> + (((Ast_cocci.meta_name list) list) list) (*negated pos vars*) -> + string list option diff --git a/parsing_cocci/index.ml b/parsing_cocci/index.ml index a6c9481..81d1ad5 100644 --- a/parsing_cocci/index.ml +++ b/parsing_cocci/index.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* create an index for each constructor *) (* current max is 147 *) diff --git a/parsing_cocci/index.mli b/parsing_cocci/index.mli index 6704434..cf6fdbf 100644 --- a/parsing_cocci/index.mli +++ b/parsing_cocci/index.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - val expression_dots : Ast0_cocci.expression Ast0_cocci.dots -> int list val initialiser_dots : Ast0_cocci.initialiser Ast0_cocci.dots -> int list val parameter_dots : Ast0_cocci.parameterTypeDef Ast0_cocci.dots -> int list diff --git a/parsing_cocci/insert_plus.ml b/parsing_cocci/insert_plus.ml index 792c78c..ff69633 100644 --- a/parsing_cocci/insert_plus.ml +++ b/parsing_cocci/insert_plus.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* The error message "no available token to attach to" often comes in an argument list of unbounded length. In this case, one should move a comma so that there is a comma after the + code. *) @@ -158,7 +136,7 @@ let collect_minus_join_points root = let bind x y = x @ y in let option_default = [] in - let mcode (_,_,info,mcodekind,_,_) = + let mcode (x,_,info,mcodekind,_,_) = if List.mem (info.Ast0.pos_info.Ast0.offset) unfavored_tokens then [(Unfavored,info,mcodekind)] else [(Favored,info,mcodekind)] in @@ -390,7 +368,7 @@ let verify l = then failwith (Printf.sprintf - "error in collection of - tokens %d less than %d" + "error in collection of - tokens: line %d less than line %d" (token_real_start_line cur) real_prev); (token_end_line cur,token_real_end_line cur)) (token_end_line (List.hd l1), token_real_end_line (List.hd l1)) diff --git a/parsing_cocci/insert_plus.mli b/parsing_cocci/insert_plus.mli dissimilarity index 90% index 18f317f..788df0b 100644 --- a/parsing_cocci/insert_plus.mli +++ b/parsing_cocci/insert_plus.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val insert_plus : Ast0_cocci.rule -> Ast0_cocci.rule -> bool -> unit -(* bool is true if no isos *) +val insert_plus : Ast0_cocci.rule -> Ast0_cocci.rule -> bool -> unit +(* bool is true if no isos *) diff --git a/parsing_cocci/iso_compile.ml b/parsing_cocci/iso_compile.ml index e749ea9..539d2bb 100644 --- a/parsing_cocci/iso_compile.ml +++ b/parsing_cocci/iso_compile.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module V0 = Visitor_ast0 module VT0 = Visitor_ast0_types module Ast0 = Ast0_cocci diff --git a/parsing_cocci/iso_compile.mli b/parsing_cocci/iso_compile.mli dissimilarity index 95% index b0a6a21..6b336f5 100644 --- a/parsing_cocci/iso_compile.mli +++ b/parsing_cocci/iso_compile.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val process : Iso_pattern.isomorphism -> unit - +val process : Iso_pattern.isomorphism -> unit + diff --git a/parsing_cocci/iso_pattern.ml b/parsing_cocci/iso_pattern.ml index 199c8a9..f4b85e1 100644 --- a/parsing_cocci/iso_pattern.ml +++ b/parsing_cocci/iso_pattern.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Potential problem: offset of mcode is not updated when an iso is instantiated, implying that a term may end up with many mcodes with the same offset. On the other hand, at the moment offset only seems to be used @@ -2205,11 +2183,16 @@ let transform_expr (metavars,alts,name) e = make_minus.VT0.rebuilder_rec_expression (rebuild_mcode start_line).VT0.rebuilder_rec_expression name Unparse_ast0.expression extra_copy_other_plus update_others in + let set_property model e = + let e = if Ast0.get_test_pos model then Ast0.set_test_exp e else e in + if Ast0.get_arg_exp model then Ast0.set_arg_exp e else e in match alts with - (Ast0.ExprTag(_)::_)::_ -> process do_nothing - | (Ast0.ArgExprTag(_)::_)::_ when Ast0.get_arg_exp e -> process do_nothing + (Ast0.ExprTag(_)::_)::_ -> + process (set_property e) + | (Ast0.ArgExprTag(_)::_)::_ when Ast0.get_arg_exp e -> + process (set_property e) | (Ast0.TestExprTag(_)::_)::_ when Ast0.get_test_pos e -> - process Ast0.set_test_exp + process (set_property e) | _ -> (0,[],e) let transform_decl (metavars,alts,name) e = diff --git a/parsing_cocci/iso_pattern.mli b/parsing_cocci/iso_pattern.mli dissimilarity index 75% index bd4c3ff..d12a37a 100644 --- a/parsing_cocci/iso_pattern.mli +++ b/parsing_cocci/iso_pattern.mli @@ -1,30 +1,8 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type isomorphism = - Ast_cocci.metavar list * Ast0_cocci.anything list list * string(*iso name*) - -val apply_isos : - isomorphism list -> Ast0_cocci.rule -> string (* rule name *) -> - Ast_cocci.metavar list * Ast0_cocci.rule - -val rebuild_mcode : int option -> Visitor_ast0_types.rebuilder_rec_functions +type isomorphism = + Ast_cocci.metavar list * Ast0_cocci.anything list list * string(*iso name*) + +val apply_isos : + isomorphism list -> Ast0_cocci.rule -> string (* rule name *) -> + Ast_cocci.metavar list * Ast0_cocci.rule + +val rebuild_mcode : int option -> Visitor_ast0_types.rebuilder_rec_functions diff --git a/parsing_cocci/lexer_cocci.mll b/parsing_cocci/lexer_cocci.mll index 14a62d9..0125f0e 100644 --- a/parsing_cocci/lexer_cocci.mll +++ b/parsing_cocci/lexer_cocci.mll @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - { open Parser_cocci_menhir module D = Data @@ -133,15 +111,20 @@ let pm = ref UNKNOWN let patch_or_match = function PATCH -> - (match !pm with - MATCH -> lexerr "- or + not allowed in the first column for a match" "" - | PATCH -> () - | UNKNOWN -> Flag.sgrep_mode2 := false; pm := PATCH) + if not !D.ignore_patch_or_match + then + (match !pm with + MATCH -> + lexerr "- or + not allowed in the first column for a match" "" + | PATCH -> () + | UNKNOWN -> Flag.sgrep_mode2 := false; pm := PATCH) | MATCH -> - (match !pm with - PATCH -> lexerr "* not allowed in the first column for a patch" "" - | MATCH -> () - | UNKNOWN -> Flag.sgrep_mode2 := true; pm := MATCH) + if not !D.ignore_patch_or_match + then + (match !pm with + PATCH -> lexerr "* not allowed in the first column for a patch" "" + | MATCH -> () + | UNKNOWN -> Flag.sgrep_mode2 := true; pm := MATCH) | _ -> failwith "unexpected argument" (* ---------------------------------------------------------------------- *) diff --git a/parsing_cocci/lexer_script.mll b/parsing_cocci/lexer_script.mll index 77ba3e3..f1ec8ef 100644 --- a/parsing_cocci/lexer_script.mll +++ b/parsing_cocci/lexer_script.mll @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - { open Parser_cocci_menhir module D = Data diff --git a/parsing_cocci/main.ml b/parsing_cocci/main.ml index b4ba616..218bda0 100644 --- a/parsing_cocci/main.ml +++ b/parsing_cocci/main.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* ----------------------------------------------------------------------- *) (* Entry point *) diff --git a/parsing_cocci/merge.ml b/parsing_cocci/merge.ml index 21d61ed..ed6516b 100644 --- a/parsing_cocci/merge.ml +++ b/parsing_cocci/merge.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* given parsed minus code and a stream of + code, figure out where to put the + code in the mcode of the minus code *) diff --git a/parsing_cocci/merge.mli b/parsing_cocci/merge.mli dissimilarity index 85% index 22ca2f8..edff023 100644 --- a/parsing_cocci/merge.mli +++ b/parsing_cocci/merge.mli @@ -1,26 +1,4 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val do_merge : - Ast0_cocci.rule -> - (Ast_cocci.anything * int * int * int * int) list list list -> - unit (* updates Ast0_cocci.rule argument *) +val do_merge : + Ast0_cocci.rule -> + (Ast_cocci.anything * int * int * int * int) list list list -> + unit (* updates Ast0_cocci.rule argument *) diff --git a/parsing_cocci/parse_aux.ml b/parsing_cocci/parse_aux.ml index bb734e4..4976f7d 100644 --- a/parsing_cocci/parse_aux.ml +++ b/parsing_cocci/parse_aux.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* exports everything, used only by parser_cocci_menhir.mly *) module Ast0 = Ast0_cocci module Ast = Ast_cocci @@ -59,6 +37,9 @@ let drop_bef (arity,line,lline,offset,col,strbef,straft,pos) = let drop_aft (arity,line,lline,offset,col,strbef,straft,pos) = (arity,line,lline,offset,col,strbef,[],pos) +let drop_pos (arity,line,lline,offset,col,strbef,straft,pos) = + (arity,line,lline,offset,col,strbef,straft,Ast0.NoMetaPos) + let clt2mcode str = function (Data.MINUS,line,lline,offset,col,strbef,straft,pos) -> (str,Ast0.NONE,make_info line lline offset col strbef straft, diff --git a/parsing_cocci/parse_cocci.ml b/parsing_cocci/parse_cocci.ml index 713e020..f50d505 100644 --- a/parsing_cocci/parse_cocci.ml +++ b/parsing_cocci/parse_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* splits the entire file into minus and plus fragments, and parses each separately (thus duplicating work for the parsing of the context elements) *) @@ -1273,21 +1251,9 @@ let eval_virt virt = (function x -> if not (List.mem x virt) then - failwith - (Printf.sprintf "unknown virtual rule %s\n" x)) - (!Flag_parsing_cocci.defined_virtual_rules @ - !Flag_parsing_cocci.undefined_virtual_rules); - List.map - (function x -> - if List.mem x !Flag_parsing_cocci.defined_virtual_rules - then (x,true) - else if List.mem x !Flag_parsing_cocci.undefined_virtual_rules - then (x,false) - else - (*Printf.fprintf stderr - "warning: no value specified for virtual rule %s, assuming unmatched\n" x;*) - (x,false)) - virt + failwith + (Printf.sprintf "unknown virtual rule %s\n" x)) + !Flag_parsing_cocci.defined_virtual_rules let drop_last extra l = List.rev(extra@(List.tl(List.rev l))) @@ -1433,7 +1399,42 @@ let parse_iso_files existing_isos iso_files extra_path = Data.in_iso := false; existing_isos@(List.concat (List.rev res)) +(* None = dependency not satisfied + Some dep = dependency satisfied or unknown and dep has virts optimized + away *) +let eval_depend dep virt = + let rec loop dep = + match dep with + Ast.Dep req | Ast.EverDep req -> + if List.mem req virt + then + if List.mem req !Flag_parsing_cocci.defined_virtual_rules + then Some Ast.NoDep + else None + else Some dep + | Ast.AntiDep antireq | Ast.NeverDep antireq -> + if List.mem antireq virt + then + if not(List.mem antireq !Flag_parsing_cocci.defined_virtual_rules) + then Some Ast.NoDep + else None + else Some dep + | Ast.AndDep(d1,d2) -> + (match (loop d1, loop d2) with + (None,_) | (_,None) -> None + | (Some Ast.NoDep,x) | (x,Some Ast.NoDep) -> x + | (Some x,Some y) -> Some (Ast.AndDep(x,y))) + | Ast.OrDep(d1,d2) -> + (match (loop d1, loop d2) with + (None,None) -> None + | (Some Ast.NoDep,x) | (x,Some Ast.NoDep) | (None,x) | (x,None) -> x + | (Some x,Some y) -> Some (Ast.OrDep(x,y))) + | Ast.NoDep | Ast.FailDep -> Some dep + in + loop dep + let rec parse file = + Lexer_cocci.init(); let table = Common.full_charpos_to_pos file in Common.with_open_infile file (fun channel -> let lexbuf = Lexing.from_channel channel in @@ -1457,6 +1458,7 @@ let rec parse file = | Data.Iso s -> (include_files,s::iso_files,virt) | Data.Virt l -> (include_files,iso_files,l@virt)) ([],[],[]) include_and_iso_files in + List.iter (function x -> Hashtbl.add Lexer_cocci.rule_names x ()) virt; @@ -1490,6 +1492,11 @@ let rec parse file = let (_, plus_tokens) = split_token_stream (minus_to_nothing tokens) in + (* + print_tokens "minus tokens" minus_tokens; + print_tokens "plus tokens" plus_tokens; + *) + let minus_tokens = consume_minus_positions minus_tokens in let minus_tokens = prepare_tokens minus_tokens in let plus_tokens = prepare_tokens plus_tokens in @@ -1603,19 +1610,41 @@ let rec parse file = get_rule_name PC.rule_name starts_with_name get_tokens file "rule" in match rulename with - Ast.CocciRulename (Some s, a, b, c, d, e) -> - parse_cocci_rule Ast.Normal old_metas (s, a, b, c, d, e) - | Ast.GeneratedRulename (Some s, a, b, c, d, e) -> - Data.in_generating := true; - let res = - parse_cocci_rule Ast.Generated old_metas (s,a,b,c,d,e) in - Data.in_generating := false; - res - | Ast.ScriptRulename(l,deps) -> parse_script_rule l old_metas deps + Ast.CocciRulename (Some s, dep, b, c, d, e) -> + (match eval_depend dep virt with + Some (dep) -> + parse_cocci_rule Ast.Normal old_metas (s,dep,b,c,d,e) + | None -> + D.ignore_patch_or_match := true; + let res = + parse_cocci_rule Ast.Normal old_metas + (s, Ast.FailDep, b, c, d, e) in + D.ignore_patch_or_match := false; + res) + | Ast.GeneratedRulename (Some s, dep, b, c, d, e) -> + (match eval_depend dep virt with + Some (dep) -> + Data.in_generating := true; + let res = + parse_cocci_rule Ast.Normal old_metas (s,dep,b,c,d,e) in + Data.in_generating := false; + res + | None -> + D.ignore_patch_or_match := true; + Data.in_generating := true; + let res = + parse_cocci_rule Ast.Normal old_metas + (s, Ast.FailDep, b, c, d, e) in + D.ignore_patch_or_match := false; + Data.in_generating := false; + res) + | Ast.ScriptRulename(l,deps) -> + (match eval_depend deps virt with + Some deps -> parse_script_rule l old_metas deps + | None -> parse_script_rule l old_metas Ast.FailDep) | Ast.InitialScriptRulename(l) -> parse_iscript_rule l - | Ast.FinalScriptRulename(l) -> parse_fscript_rule l - | _ -> failwith "Malformed rule name" - in + | Ast.FinalScriptRulename(l) -> parse_fscript_rule l + | _ -> failwith "Malformed rule name" in let rec loop old_metas starts_with_name = (!Data.init_rule)(); @@ -1639,7 +1668,8 @@ let rec parse file = (function prev -> function cur -> Common.union_set cur prev) iso_files extra_iso_files, (* included rules first *) - List.fold_left (@) (loop [] (x = PC.TArob)) (List.rev extra_rules), + List.fold_left (function prev -> function cur -> cur@prev) + (loop [] (x = PC.TArob)) (List.rev extra_rules), List.fold_left (@) virt extra_virt (*no dups allowed*)) | _ -> failwith "unexpected code before the first rule\n") | (false,[(PC.TArobArob,_)]) | (false,[(PC.TArob,_)]) -> @@ -1650,9 +1680,8 @@ let rec parse file = (* parse to ast0 and then convert to ast *) let process file isofile verbose = let extra_path = Filename.dirname file in - Lexer_cocci.init(); let (iso_files, rules, virt) = parse file in - let virt = eval_virt virt in + eval_virt virt; let std_isos = match isofile with None -> [] @@ -1768,6 +1797,6 @@ let process file isofile verbose = (fun () -> Get_constants.get_constants code) in (* for grep *) let glimpse_tokens2 = Common.profile_code "get_glimpse_constants" (* for glimpse *) - (fun () -> Get_constants2.get_constants code neg_pos virt) in + (fun () -> Get_constants2.get_constants code neg_pos) in - (metavars,code,fvs,neg_pos,ua,pos,grep_tokens,glimpse_tokens2,virt) + (metavars,code,fvs,neg_pos,ua,pos,grep_tokens,glimpse_tokens2) diff --git a/parsing_cocci/parse_cocci.mli b/parsing_cocci/parse_cocci.mli index 6becf03..927c7a6 100644 --- a/parsing_cocci/parse_cocci.mli +++ b/parsing_cocci/parse_cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - val process : string (* filename *) -> string option (* iso filename *) -> bool (* verbose? *) -> @@ -33,5 +11,4 @@ val process : Ast_cocci.meta_name list list list) * Ast_cocci.meta_name list list list (*positions list*) * string list list (* non metavars in - code, for grep *) * - string list option (* non metavars in - code, for glimpse/google *) * - (string * bool) list (* virtual rule info *) + string list option (* non metavars in - code, for glimpse/google *) diff --git a/parsing_cocci/parser_cocci.mly b/parsing_cocci/parser_cocci.mly index 24ac4a7..39886c9 100644 --- a/parsing_cocci/parser_cocci.mly +++ b/parsing_cocci/parser_cocci.mly @@ -1,25 +1,3 @@ -/* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - */ - - %{ (* Not clear how to allow function declarations to specify a return type diff --git a/parsing_cocci/parser_cocci_menhir.ml b/parsing_cocci/parser_cocci_menhir.ml index 8b8f66a..b32c69f 100644 --- a/parsing_cocci/parser_cocci_menhir.ml +++ b/parsing_cocci/parser_cocci_menhir.ml @@ -2,140 +2,140 @@ exception Error type token = | Tvolatile of ( -# 54 "parser_cocci_menhir.mly" +# 32 "parser_cocci_menhir.mly" (Data.clt) # 8 "parser_cocci_menhir.ml" ) | Tvoid of ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 13 "parser_cocci_menhir.ml" ) | Tunsigned of ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 18 "parser_cocci_menhir.ml" ) | Tunion of ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 23 "parser_cocci_menhir.ml" ) | Ttypedef of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 28 "parser_cocci_menhir.ml" ) | Tstruct of ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 33 "parser_cocci_menhir.ml" ) | Tstatic of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 38 "parser_cocci_menhir.ml" ) | Tsigned of ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 43 "parser_cocci_menhir.ml" ) | Tshort of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 48 "parser_cocci_menhir.ml" ) | Tregister of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 53 "parser_cocci_menhir.ml" ) | Tlong of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 58 "parser_cocci_menhir.ml" ) | Tlist | Tint of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 64 "parser_cocci_menhir.ml" ) | Tinline of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 69 "parser_cocci_menhir.ml" ) | Tfloat of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 74 "parser_cocci_menhir.ml" ) | Textern of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 79 "parser_cocci_menhir.ml" ) | Tenum of ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 84 "parser_cocci_menhir.ml" ) | Tdouble of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 89 "parser_cocci_menhir.ml" ) | Tconst of ( -# 54 "parser_cocci_menhir.mly" +# 32 "parser_cocci_menhir.mly" (Data.clt) # 94 "parser_cocci_menhir.ml" ) | Tchar of ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 99 "parser_cocci_menhir.ml" ) | Tauto of ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 104 "parser_cocci_menhir.ml" ) | Tattr of ( -# 55 "parser_cocci_menhir.mly" +# 33 "parser_cocci_menhir.mly" (string * Data.clt) # 109 "parser_cocci_menhir.ml" ) | TXor of ( -# 92 "parser_cocci_menhir.mly" +# 70 "parser_cocci_menhir.mly" (Data.clt) # 114 "parser_cocci_menhir.ml" ) | TWords | TWhy0 | TWhy of ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 121 "parser_cocci_menhir.ml" ) | TWhile of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 126 "parser_cocci_menhir.ml" ) | TWhenTrue of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 131 "parser_cocci_menhir.ml" ) | TWhenFalse of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 136 "parser_cocci_menhir.ml" ) | TWhen of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 141 "parser_cocci_menhir.ml" ) @@ -143,288 +143,288 @@ type token = | TUsing | TTypedef | TTypeId of ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 149 "parser_cocci_menhir.ml" ) | TType | TTildeExclEq of ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 155 "parser_cocci_menhir.ml" ) | TTildeEq of ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 160 "parser_cocci_menhir.ml" ) | TTilde of ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 165 "parser_cocci_menhir.ml" ) | TSwitch of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 170 "parser_cocci_menhir.ml" ) | TString of ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 175 "parser_cocci_menhir.ml" ) | TStrict of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 180 "parser_cocci_menhir.ml" ) | TStatement | TSizeof of ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) # 186 "parser_cocci_menhir.ml" ) | TShOp of ( -# 96 "parser_cocci_menhir.mly" +# 74 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 191 "parser_cocci_menhir.ml" ) | TScriptData of ( -# 71 "parser_cocci_menhir.mly" +# 49 "parser_cocci_menhir.mly" (string) # 196 "parser_cocci_menhir.ml" ) | TScript | TRuleName of ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 202 "parser_cocci_menhir.ml" ) | TRightIso | TReturn of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 208 "parser_cocci_menhir.ml" ) | TPure | TPtrOp of ( -# 104 "parser_cocci_menhir.mly" +# 82 "parser_cocci_menhir.mly" (Data.clt) # 214 "parser_cocci_menhir.ml" ) | TPtVirg of ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 219 "parser_cocci_menhir.ml" ) | TPragma of ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 224 "parser_cocci_menhir.ml" ) | TPosition | TPosAny | TPlusFile of ( -# 83 "parser_cocci_menhir.mly" +# 61 "parser_cocci_menhir.mly" (string * Data.clt) # 231 "parser_cocci_menhir.ml" ) | TPlus0 | TPlus of ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 237 "parser_cocci_menhir.ml" ) | TPathIsoFile of ( -# 79 "parser_cocci_menhir.mly" +# 57 "parser_cocci_menhir.mly" (string) # 242 "parser_cocci_menhir.ml" ) | TParameter | TPOEllipsis of ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 248 "parser_cocci_menhir.ml" ) | TPCEllipsis of ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 253 "parser_cocci_menhir.ml" ) | TPArob | TOrLog of ( -# 89 "parser_cocci_menhir.mly" +# 67 "parser_cocci_menhir.mly" (Data.clt) # 259 "parser_cocci_menhir.ml" ) | TOr of ( -# 91 "parser_cocci_menhir.mly" +# 69 "parser_cocci_menhir.mly" (Data.clt) # 264 "parser_cocci_menhir.ml" ) | TOn | TOPar0 of ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 270 "parser_cocci_menhir.ml" ) | TOPar of ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 275 "parser_cocci_menhir.ml" ) | TOInit of ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 280 "parser_cocci_menhir.ml" ) | TOEllipsis of ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 285 "parser_cocci_menhir.ml" ) | TOCro of ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 290 "parser_cocci_menhir.ml" ) | TOBrace of ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 295 "parser_cocci_menhir.ml" ) | TNothing | TNotEq of ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 301 "parser_cocci_menhir.ml" ) | TNever | TName | TMul of ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 308 "parser_cocci_menhir.ml" ) | TMinusFile of ( -# 83 "parser_cocci_menhir.mly" +# 61 "parser_cocci_menhir.mly" (string * Data.clt) # 313 "parser_cocci_menhir.ml" ) | TMinus of ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 318 "parser_cocci_menhir.ml" ) | TMid0 of ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 323 "parser_cocci_menhir.ml" ) | TMetaType of ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 328 "parser_cocci_menhir.ml" ) | TMetaStmList of ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 333 "parser_cocci_menhir.ml" ) | TMetaStm of ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 338 "parser_cocci_menhir.ml" ) | TMetaPos of ( -# 68 "parser_cocci_menhir.mly" +# 46 "parser_cocci_menhir.mly" (Parse_aux.pos_info) # 343 "parser_cocci_menhir.ml" ) | TMetaParamList of ( -# 66 "parser_cocci_menhir.mly" +# 44 "parser_cocci_menhir.mly" (Parse_aux.list_info) # 348 "parser_cocci_menhir.ml" ) | TMetaParam of ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 353 "parser_cocci_menhir.ml" ) | TMetaLocalIdExp of ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) # 358 "parser_cocci_menhir.ml" ) | TMetaLocalFunc of ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 363 "parser_cocci_menhir.ml" ) | TMetaIterator of ( -# 62 "parser_cocci_menhir.mly" +# 40 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 368 "parser_cocci_menhir.ml" ) | TMetaInit of ( -# 65 "parser_cocci_menhir.mly" +# 43 "parser_cocci_menhir.mly" (Parse_aux.info) # 373 "parser_cocci_menhir.ml" ) | TMetaIdExp of ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) # 378 "parser_cocci_menhir.ml" ) | TMetaId of ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 383 "parser_cocci_menhir.ml" ) | TMetaFunc of ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 388 "parser_cocci_menhir.ml" ) | TMetaExpList of ( -# 66 "parser_cocci_menhir.mly" +# 44 "parser_cocci_menhir.mly" (Parse_aux.list_info) # 393 "parser_cocci_menhir.ml" ) | TMetaExp of ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) # 398 "parser_cocci_menhir.ml" ) | TMetaErr of ( -# 63 "parser_cocci_menhir.mly" +# 41 "parser_cocci_menhir.mly" (Parse_aux.expinfo) # 403 "parser_cocci_menhir.ml" ) | TMetaDeclarer of ( -# 62 "parser_cocci_menhir.mly" +# 40 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 408 "parser_cocci_menhir.ml" ) | TMetaConst of ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) # 413 "parser_cocci_menhir.ml" ) | TMPtVirg | TLogOp of ( -# 95 "parser_cocci_menhir.mly" +# 73 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) # 419 "parser_cocci_menhir.ml" ) | TLocal | TLineEnd of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 425 "parser_cocci_menhir.ml" ) | TIteratorId of ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 430 "parser_cocci_menhir.ml" ) @@ -439,60 +439,60 @@ type token = | TIso | TInvalid | TInt of ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 445 "parser_cocci_menhir.ml" ) | TInitialize | TInitialiser | TIncludeNL of ( -# 80 "parser_cocci_menhir.mly" +# 58 "parser_cocci_menhir.mly" (string * Data.clt) # 452 "parser_cocci_menhir.ml" ) | TIncludeL of ( -# 80 "parser_cocci_menhir.mly" +# 58 "parser_cocci_menhir.mly" (string * Data.clt) # 457 "parser_cocci_menhir.ml" ) | TInc of ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) # 462 "parser_cocci_menhir.ml" ) | TIf of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 467 "parser_cocci_menhir.ml" ) | TIdentifier | TIdent of ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 473 "parser_cocci_menhir.ml" ) | TIdExpression | TGoto of ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) # 479 "parser_cocci_menhir.ml" ) | TGenerated | TFunction | TFunDecl of ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) # 486 "parser_cocci_menhir.ml" ) | TFresh | TForall | TFor of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 493 "parser_cocci_menhir.ml" ) | TFloat of ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 498 "parser_cocci_menhir.ml" ) @@ -503,151 +503,151 @@ type token = | TEver | TError | TEqEq of ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 509 "parser_cocci_menhir.ml" ) | TEq of ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 514 "parser_cocci_menhir.ml" ) | TElse of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 519 "parser_cocci_menhir.ml" ) | TEllipsis of ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 524 "parser_cocci_menhir.ml" ) | TDotDot of ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 529 "parser_cocci_menhir.ml" ) | TDot of ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 534 "parser_cocci_menhir.ml" ) | TDo of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 539 "parser_cocci_menhir.ml" ) | TDmOp of ( -# 97 "parser_cocci_menhir.mly" +# 75 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 544 "parser_cocci_menhir.ml" ) | TDisable | TDepends | TDefineParam of ( -# 82 "parser_cocci_menhir.mly" +# 60 "parser_cocci_menhir.mly" (Data.clt * token * int * int) # 551 "parser_cocci_menhir.ml" ) | TDefine of ( -# 81 "parser_cocci_menhir.mly" +# 59 "parser_cocci_menhir.mly" (Data.clt * token) # 556 "parser_cocci_menhir.ml" ) | TDefault of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 561 "parser_cocci_menhir.ml" ) | TDeclarerId of ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 566 "parser_cocci_menhir.ml" ) | TDeclarer | TDec of ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) # 572 "parser_cocci_menhir.ml" ) | TCppConcatOp | TContinue of ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) # 578 "parser_cocci_menhir.ml" ) | TContext | TConstant | TComma of ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 585 "parser_cocci_menhir.ml" ) | TChar of ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 590 "parser_cocci_menhir.ml" ) | TCase of ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 595 "parser_cocci_menhir.ml" ) | TCPar0 of ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 600 "parser_cocci_menhir.ml" ) | TCPar of ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 605 "parser_cocci_menhir.ml" ) | TCEllipsis of ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 610 "parser_cocci_menhir.ml" ) | TCCro of ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 615 "parser_cocci_menhir.ml" ) | TCBrace of ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 620 "parser_cocci_menhir.ml" ) | TBreak of ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) # 625 "parser_cocci_menhir.ml" ) | TBang0 | TBang of ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 631 "parser_cocci_menhir.ml" ) | TAssign of ( -# 108 "parser_cocci_menhir.mly" +# 86 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) # 636 "parser_cocci_menhir.ml" ) | TArobArob | TArob | TAny of ( -# 74 "parser_cocci_menhir.mly" +# 52 "parser_cocci_menhir.mly" (Data.clt) # 643 "parser_cocci_menhir.ml" ) | TAndLog of ( -# 90 "parser_cocci_menhir.mly" +# 68 "parser_cocci_menhir.mly" (Data.clt) # 648 "parser_cocci_menhir.ml" ) | TAnd of ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) # 653 "parser_cocci_menhir.ml" ) @@ -656,7 +656,7 @@ type token = and _menhir_jeton = token -# 23 "parser_cocci_menhir.mly" +# 1 "parser_cocci_menhir.mly" (* Not clear how to allow function declarations to specify a return type @@ -1552,7 +1552,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1841 "parser_cocci_menhir.mly" +# 1823 "parser_cocci_menhir.mly" ( Ast0.set_arg_exp _1 ) # 1558 "parser_cocci_menhir.ml" in @@ -1573,14 +1573,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 66 "parser_cocci_menhir.mly" +# 44 "parser_cocci_menhir.mly" (Parse_aux.list_info) # 1579 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1843 "parser_cocci_menhir.mly" +# 1825 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -1610,7 +1610,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1851 "parser_cocci_menhir.mly" +# 1833 "parser_cocci_menhir.mly" ( Ast0.set_arg_exp(Ast0.wrap(Ast0.TypeExp(_1))) ) # 1616 "parser_cocci_menhir.ml" in @@ -1632,7 +1632,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1895 "parser_cocci_menhir.mly" +# 1877 "parser_cocci_menhir.mly" ( Ast.WhenAny ) # 1638 "parser_cocci_menhir.ml" in @@ -1654,7 +1654,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1896 "parser_cocci_menhir.mly" +# 1878 "parser_cocci_menhir.mly" ( Ast.WhenStrict ) # 1660 "parser_cocci_menhir.ml" in @@ -1676,7 +1676,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1897 "parser_cocci_menhir.mly" +# 1879 "parser_cocci_menhir.mly" ( Ast.WhenForall ) # 1682 "parser_cocci_menhir.ml" in @@ -1698,7 +1698,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1898 "parser_cocci_menhir.mly" +# 1880 "parser_cocci_menhir.mly" ( Ast.WhenExists ) # 1704 "parser_cocci_menhir.ml" in @@ -1722,7 +1722,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1256 "parser_cocci_menhir.mly" +# 1238 "parser_cocci_menhir.mly" ( _1 ) # 1728 "parser_cocci_menhir.ml" in @@ -1754,7 +1754,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 1760 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1762,7 +1762,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1258 "parser_cocci_menhir.mly" +# 1240 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) # 1768 "parser_cocci_menhir.ml" in @@ -1794,7 +1794,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 97 "parser_cocci_menhir.mly" +# 75 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 1800 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1802,7 +1802,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1260 "parser_cocci_menhir.mly" +# 1242 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 1808 "parser_cocci_menhir.ml" in @@ -1834,7 +1834,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 1840 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1842,7 +1842,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1262 "parser_cocci_menhir.mly" +# 1244 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) # 1848 "parser_cocci_menhir.ml" in @@ -1874,7 +1874,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 1880 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1882,7 +1882,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1264 "parser_cocci_menhir.mly" +# 1246 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) # 1888 "parser_cocci_menhir.ml" in @@ -1914,7 +1914,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 96 "parser_cocci_menhir.mly" +# 74 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 1920 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1922,7 +1922,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1266 "parser_cocci_menhir.mly" +# 1248 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 1928 "parser_cocci_menhir.ml" in @@ -1954,7 +1954,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 95 "parser_cocci_menhir.mly" +# 73 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) # 1960 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -1962,7 +1962,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1268 "parser_cocci_menhir.mly" +# 1250 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) # 1968 "parser_cocci_menhir.ml" in @@ -1994,7 +1994,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 2000 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2002,7 +2002,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1270 "parser_cocci_menhir.mly" +# 1252 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) # 2008 "parser_cocci_menhir.ml" in @@ -2034,7 +2034,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 2040 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2042,7 +2042,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1272 "parser_cocci_menhir.mly" +# 1254 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) # 2048 "parser_cocci_menhir.ml" in @@ -2074,7 +2074,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) # 2080 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2082,7 +2082,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1274 "parser_cocci_menhir.mly" +# 1256 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) # 2088 "parser_cocci_menhir.ml" in @@ -2114,7 +2114,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 91 "parser_cocci_menhir.mly" +# 69 "parser_cocci_menhir.mly" (Data.clt) # 2120 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2122,7 +2122,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1276 "parser_cocci_menhir.mly" +# 1258 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) # 2128 "parser_cocci_menhir.ml" in @@ -2154,7 +2154,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 92 "parser_cocci_menhir.mly" +# 70 "parser_cocci_menhir.mly" (Data.clt) # 2160 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2162,7 +2162,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1278 "parser_cocci_menhir.mly" +# 1260 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) # 2168 "parser_cocci_menhir.ml" in @@ -2194,7 +2194,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 90 "parser_cocci_menhir.mly" +# 68 "parser_cocci_menhir.mly" (Data.clt) # 2200 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2202,7 +2202,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1280 "parser_cocci_menhir.mly" +# 1262 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) # 2208 "parser_cocci_menhir.ml" in @@ -2234,7 +2234,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in let _2 : ( -# 89 "parser_cocci_menhir.mly" +# 67 "parser_cocci_menhir.mly" (Data.clt) # 2240 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2242,7 +2242,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1282 "parser_cocci_menhir.mly" +# 1264 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) # 2248 "parser_cocci_menhir.ml" in @@ -2266,7 +2266,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1256 "parser_cocci_menhir.mly" +# 1238 "parser_cocci_menhir.mly" ( _1 ) # 2272 "parser_cocci_menhir.ml" in @@ -2298,7 +2298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 2304 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2306,7 +2306,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1258 "parser_cocci_menhir.mly" +# 1240 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) # 2312 "parser_cocci_menhir.ml" in @@ -2338,7 +2338,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 97 "parser_cocci_menhir.mly" +# 75 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 2344 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2346,7 +2346,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1260 "parser_cocci_menhir.mly" +# 1242 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 2352 "parser_cocci_menhir.ml" in @@ -2378,7 +2378,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 2384 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2386,7 +2386,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1262 "parser_cocci_menhir.mly" +# 1244 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) # 2392 "parser_cocci_menhir.ml" in @@ -2418,7 +2418,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 2424 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2426,7 +2426,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1264 "parser_cocci_menhir.mly" +# 1246 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) # 2432 "parser_cocci_menhir.ml" in @@ -2458,7 +2458,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 96 "parser_cocci_menhir.mly" +# 74 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 2464 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2466,7 +2466,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1266 "parser_cocci_menhir.mly" +# 1248 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 2472 "parser_cocci_menhir.ml" in @@ -2498,7 +2498,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 95 "parser_cocci_menhir.mly" +# 73 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) # 2504 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2506,7 +2506,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1268 "parser_cocci_menhir.mly" +# 1250 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) # 2512 "parser_cocci_menhir.ml" in @@ -2538,7 +2538,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 2544 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2546,7 +2546,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1270 "parser_cocci_menhir.mly" +# 1252 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) # 2552 "parser_cocci_menhir.ml" in @@ -2578,7 +2578,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 2584 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2586,7 +2586,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1272 "parser_cocci_menhir.mly" +# 1254 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) # 2592 "parser_cocci_menhir.ml" in @@ -2618,7 +2618,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) # 2624 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2626,7 +2626,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1274 "parser_cocci_menhir.mly" +# 1256 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) # 2632 "parser_cocci_menhir.ml" in @@ -2658,7 +2658,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 91 "parser_cocci_menhir.mly" +# 69 "parser_cocci_menhir.mly" (Data.clt) # 2664 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2666,7 +2666,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1276 "parser_cocci_menhir.mly" +# 1258 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) # 2672 "parser_cocci_menhir.ml" in @@ -2698,7 +2698,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 92 "parser_cocci_menhir.mly" +# 70 "parser_cocci_menhir.mly" (Data.clt) # 2704 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2706,7 +2706,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1278 "parser_cocci_menhir.mly" +# 1260 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) # 2712 "parser_cocci_menhir.ml" in @@ -2738,7 +2738,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 90 "parser_cocci_menhir.mly" +# 68 "parser_cocci_menhir.mly" (Data.clt) # 2744 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2746,7 +2746,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1280 "parser_cocci_menhir.mly" +# 1262 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) # 2752 "parser_cocci_menhir.ml" in @@ -2778,7 +2778,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in let _2 : ( -# 89 "parser_cocci_menhir.mly" +# 67 "parser_cocci_menhir.mly" (Data.clt) # 2784 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2786,7 +2786,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1282 "parser_cocci_menhir.mly" +# 1264 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) # 2792 "parser_cocci_menhir.ml" in @@ -2810,7 +2810,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1256 "parser_cocci_menhir.mly" +# 1238 "parser_cocci_menhir.mly" ( _1 ) # 2816 "parser_cocci_menhir.ml" in @@ -2842,7 +2842,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 2848 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2850,7 +2850,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1258 "parser_cocci_menhir.mly" +# 1240 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) # 2856 "parser_cocci_menhir.ml" in @@ -2882,7 +2882,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 97 "parser_cocci_menhir.mly" +# 75 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 2888 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2890,7 +2890,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1260 "parser_cocci_menhir.mly" +# 1242 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 2896 "parser_cocci_menhir.ml" in @@ -2922,7 +2922,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 2928 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2930,7 +2930,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1262 "parser_cocci_menhir.mly" +# 1244 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) # 2936 "parser_cocci_menhir.ml" in @@ -2962,7 +2962,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 2968 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -2970,7 +2970,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1264 "parser_cocci_menhir.mly" +# 1246 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) # 2976 "parser_cocci_menhir.ml" in @@ -3002,7 +3002,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 96 "parser_cocci_menhir.mly" +# 74 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 3008 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3010,7 +3010,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1266 "parser_cocci_menhir.mly" +# 1248 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 3016 "parser_cocci_menhir.ml" in @@ -3042,7 +3042,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 95 "parser_cocci_menhir.mly" +# 73 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) # 3048 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3050,7 +3050,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1268 "parser_cocci_menhir.mly" +# 1250 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) # 3056 "parser_cocci_menhir.ml" in @@ -3082,7 +3082,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 3088 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3090,7 +3090,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1270 "parser_cocci_menhir.mly" +# 1252 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) # 3096 "parser_cocci_menhir.ml" in @@ -3122,7 +3122,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 3128 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3130,7 +3130,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1272 "parser_cocci_menhir.mly" +# 1254 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) # 3136 "parser_cocci_menhir.ml" in @@ -3162,7 +3162,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) # 3168 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3170,7 +3170,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1274 "parser_cocci_menhir.mly" +# 1256 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) # 3176 "parser_cocci_menhir.ml" in @@ -3202,7 +3202,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 91 "parser_cocci_menhir.mly" +# 69 "parser_cocci_menhir.mly" (Data.clt) # 3208 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3210,7 +3210,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1276 "parser_cocci_menhir.mly" +# 1258 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) # 3216 "parser_cocci_menhir.ml" in @@ -3242,7 +3242,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 92 "parser_cocci_menhir.mly" +# 70 "parser_cocci_menhir.mly" (Data.clt) # 3248 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3250,7 +3250,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1278 "parser_cocci_menhir.mly" +# 1260 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) # 3256 "parser_cocci_menhir.ml" in @@ -3282,7 +3282,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 90 "parser_cocci_menhir.mly" +# 68 "parser_cocci_menhir.mly" (Data.clt) # 3288 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3290,7 +3290,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1280 "parser_cocci_menhir.mly" +# 1262 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) # 3296 "parser_cocci_menhir.ml" in @@ -3322,7 +3322,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in let _2 : ( -# 89 "parser_cocci_menhir.mly" +# 67 "parser_cocci_menhir.mly" (Data.clt) # 3328 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3330,7 +3330,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1282 "parser_cocci_menhir.mly" +# 1264 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) # 3336 "parser_cocci_menhir.ml" in @@ -3354,7 +3354,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1256 "parser_cocci_menhir.mly" +# 1238 "parser_cocci_menhir.mly" ( _1 ) # 3360 "parser_cocci_menhir.ml" in @@ -3386,7 +3386,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 3392 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3394,7 +3394,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1258 "parser_cocci_menhir.mly" +# 1240 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) # 3400 "parser_cocci_menhir.ml" in @@ -3426,7 +3426,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 97 "parser_cocci_menhir.mly" +# 75 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) # 3432 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3434,7 +3434,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1260 "parser_cocci_menhir.mly" +# 1242 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) # 3440 "parser_cocci_menhir.ml" in @@ -3466,7 +3466,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) # 3472 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3474,7 +3474,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1262 "parser_cocci_menhir.mly" +# 1244 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) # 3480 "parser_cocci_menhir.ml" in @@ -3506,87 +3506,87 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 98 "parser_cocci_menhir.mly" - (Data.clt) -# 3512 "parser_cocci_menhir.ml" - ) = Obj.magic _2 in - let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : 'tv_arith_expr_expr_invalid_ = -# 1264 "parser_cocci_menhir.mly" - ( P.arith_op Ast.Minus _1 _2 _3 ) -# 3520 "parser_cocci_menhir.ml" - in - _menhir_env.MenhirLib.EngineTypes.stack <- { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in - let _2 : ( -# 96 "parser_cocci_menhir.mly" - (Ast_cocci.arithOp * Data.clt) -# 3552 "parser_cocci_menhir.ml" - ) = Obj.magic _2 in - let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : 'tv_arith_expr_expr_invalid_ = -# 1266 "parser_cocci_menhir.mly" - ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 3560 "parser_cocci_menhir.ml" - in - _menhir_env.MenhirLib.EngineTypes.stack <- { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in - let _2 : ( -# 95 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" + (Data.clt) +# 3512 "parser_cocci_menhir.ml" + ) = Obj.magic _2 in + let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : 'tv_arith_expr_expr_invalid_ = +# 1246 "parser_cocci_menhir.mly" + ( P.arith_op Ast.Minus _1 _2 _3 ) +# 3520 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in + let _2 : ( +# 74 "parser_cocci_menhir.mly" + (Ast_cocci.arithOp * Data.clt) +# 3552 "parser_cocci_menhir.ml" + ) = Obj.magic _2 in + let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : 'tv_arith_expr_expr_invalid_ = +# 1248 "parser_cocci_menhir.mly" + ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) +# 3560 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in + let _2 : ( +# 73 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) # 3592 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3594,7 +3594,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1268 "parser_cocci_menhir.mly" +# 1250 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) # 3600 "parser_cocci_menhir.ml" in @@ -3626,7 +3626,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 3632 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3634,7 +3634,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1270 "parser_cocci_menhir.mly" +# 1252 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) # 3640 "parser_cocci_menhir.ml" in @@ -3666,7 +3666,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 94 "parser_cocci_menhir.mly" +# 72 "parser_cocci_menhir.mly" (Data.clt) # 3672 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3674,7 +3674,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1272 "parser_cocci_menhir.mly" +# 1254 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) # 3680 "parser_cocci_menhir.ml" in @@ -3706,7 +3706,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) # 3712 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3714,7 +3714,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1274 "parser_cocci_menhir.mly" +# 1256 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) # 3720 "parser_cocci_menhir.ml" in @@ -3746,7 +3746,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 91 "parser_cocci_menhir.mly" +# 69 "parser_cocci_menhir.mly" (Data.clt) # 3752 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3754,7 +3754,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1276 "parser_cocci_menhir.mly" +# 1258 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) # 3760 "parser_cocci_menhir.ml" in @@ -3786,7 +3786,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 92 "parser_cocci_menhir.mly" +# 70 "parser_cocci_menhir.mly" (Data.clt) # 3792 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3794,7 +3794,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1278 "parser_cocci_menhir.mly" +# 1260 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) # 3800 "parser_cocci_menhir.ml" in @@ -3826,7 +3826,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 90 "parser_cocci_menhir.mly" +# 68 "parser_cocci_menhir.mly" (Data.clt) # 3832 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3834,7 +3834,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1280 "parser_cocci_menhir.mly" +# 1262 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) # 3840 "parser_cocci_menhir.ml" in @@ -3866,7 +3866,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in let _2 : ( -# 89 "parser_cocci_menhir.mly" +# 67 "parser_cocci_menhir.mly" (Data.clt) # 3872 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -3874,7 +3874,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1282 "parser_cocci_menhir.mly" +# 1264 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) # 3880 "parser_cocci_menhir.ml" in @@ -3896,7 +3896,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 466 "parser_cocci_menhir.mly" +# 446 "parser_cocci_menhir.mly" ( Ast.UNIQUE ) # 3902 "parser_cocci_menhir.ml" in @@ -3918,7 +3918,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 467 "parser_cocci_menhir.mly" +# 447 "parser_cocci_menhir.mly" ( Ast.OPT ) # 3924 "parser_cocci_menhir.ml" in @@ -3940,7 +3940,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 468 "parser_cocci_menhir.mly" +# 448 "parser_cocci_menhir.mly" ( Ast.MULTI ) # 3946 "parser_cocci_menhir.ml" in @@ -3957,7 +3957,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_arity = -# 469 "parser_cocci_menhir.mly" +# 449 "parser_cocci_menhir.mly" ( Ast.NONE ) # 3963 "parser_cocci_menhir.ml" in @@ -3988,20 +3988,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let r : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 3994 "parser_cocci_menhir.ml" ) = Obj.magic r in let i : 'tv_option_eexpr_ = Obj.magic i in let l : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 4000 "parser_cocci_menhir.ml" ) = Obj.magic l in let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_array_dec = -# 1063 "parser_cocci_menhir.mly" +# 1045 "parser_cocci_menhir.mly" ( (l,i,r) ) # 4007 "parser_cocci_menhir.ml" in @@ -4025,7 +4025,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1228 "parser_cocci_menhir.mly" +# 1210 "parser_cocci_menhir.mly" ( _1 ) # 4031 "parser_cocci_menhir.ml" in @@ -4057,7 +4057,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 108 "parser_cocci_menhir.mly" +# 86 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) # 4063 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4065,7 +4065,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1230 "parser_cocci_menhir.mly" +# 1212 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) @@ -4099,7 +4099,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 4105 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4107,7 +4107,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1234 "parser_cocci_menhir.mly" +# 1216 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) @@ -4133,7 +4133,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1228 "parser_cocci_menhir.mly" +# 1210 "parser_cocci_menhir.mly" ( _1 ) # 4139 "parser_cocci_menhir.ml" in @@ -4165,7 +4165,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 108 "parser_cocci_menhir.mly" +# 86 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) # 4171 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4173,7 +4173,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1230 "parser_cocci_menhir.mly" +# 1212 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) @@ -4207,7 +4207,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 4213 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4215,7 +4215,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1234 "parser_cocci_menhir.mly" +# 1216 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) @@ -4241,7 +4241,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1228 "parser_cocci_menhir.mly" +# 1210 "parser_cocci_menhir.mly" ( _1 ) # 4247 "parser_cocci_menhir.ml" in @@ -4273,7 +4273,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 108 "parser_cocci_menhir.mly" +# 86 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) # 4279 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4281,7 +4281,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1230 "parser_cocci_menhir.mly" +# 1212 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) @@ -4315,7 +4315,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 4321 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4323,7 +4323,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1234 "parser_cocci_menhir.mly" +# 1216 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) @@ -4349,7 +4349,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_bis = -# 1239 "parser_cocci_menhir.mly" +# 1221 "parser_cocci_menhir.mly" ( _1 ) # 4355 "parser_cocci_menhir.ml" in @@ -4381,7 +4381,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 108 "parser_cocci_menhir.mly" +# 86 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) # 4387 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4389,7 +4389,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_bis = -# 1241 "parser_cocci_menhir.mly" +# 1223 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) @@ -4423,7 +4423,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_assign_expr_bis = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 4429 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -4431,7 +4431,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_bis = -# 1245 "parser_cocci_menhir.mly" +# 1227 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) @@ -4457,7 +4457,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_eexpr_dot_expressions_ = -# 1225 "parser_cocci_menhir.mly" +# 1207 "parser_cocci_menhir.mly" ( _1 ) # 4463 "parser_cocci_menhir.ml" in @@ -4481,7 +4481,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_eexpr_nest_expressions_ = -# 1225 "parser_cocci_menhir.mly" +# 1207 "parser_cocci_menhir.mly" ( _1 ) # 4487 "parser_cocci_menhir.ml" in @@ -4505,7 +4505,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_expr_invalid_ = -# 1225 "parser_cocci_menhir.mly" +# 1207 "parser_cocci_menhir.mly" ( _1 ) # 4511 "parser_cocci_menhir.ml" in @@ -4537,19 +4537,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_fun_start = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4543 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 4548 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_case_line = -# 927 "parser_cocci_menhir.mly" +# 909 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Default(P.clt2mcode "default" _1,P.clt2mcode ":" _2,_3)) ) # 4556 "parser_cocci_menhir.ml" @@ -4587,20 +4587,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _4 : 'tv_fun_start = Obj.magic _4 in let _3 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4593 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) # 4599 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_case_line = -# 930 "parser_cocci_menhir.mly" +# 912 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Case(P.clt2mcode "case" _1,_2,P.clt2mcode ":" _3,_4)) ) # 4606 "parser_cocci_menhir.ml" in @@ -4624,7 +4624,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_dot_expressions_ = -# 1285 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( _1 ) # 4630 "parser_cocci_menhir.ml" in @@ -4661,20 +4661,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let e : 'tv_cast_expr_eexpr_dot_expressions_ = Obj.magic e in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 4667 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4673 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_dot_expressions_ = -# 1287 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) # 4681 "parser_cocci_menhir.ml" @@ -4699,7 +4699,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_invalid_ = -# 1285 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( _1 ) # 4705 "parser_cocci_menhir.ml" in @@ -4736,20 +4736,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let e : 'tv_cast_expr_eexpr_invalid_ = Obj.magic e in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 4742 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4748 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_invalid_ = -# 1287 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) # 4756 "parser_cocci_menhir.ml" @@ -4774,7 +4774,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_nest_expressions_ = -# 1285 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( _1 ) # 4780 "parser_cocci_menhir.ml" in @@ -4811,20 +4811,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let e : 'tv_cast_expr_eexpr_nest_expressions_ = Obj.magic e in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 4817 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4823 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_nest_expressions_ = -# 1287 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) # 4831 "parser_cocci_menhir.ml" @@ -4849,7 +4849,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_expr_invalid_ = -# 1285 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( _1 ) # 4855 "parser_cocci_menhir.ml" in @@ -4886,20 +4886,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let e : 'tv_cast_expr_expr_invalid_ = Obj.magic e in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 4892 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 4898 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_expr_invalid_ = -# 1287 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) # 4906 "parser_cocci_menhir.ml" @@ -4928,7 +4928,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_choose_iso = -# 237 "parser_cocci_menhir.mly" +# 215 "parser_cocci_menhir.mly" ( List.map P.id2name _2 ) # 4934 "parser_cocci_menhir.ml" in @@ -4954,19 +4954,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 4960 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 4965 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_decl_ = -# 1636 "parser_cocci_menhir.mly" +# 1618 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); dot_builder _2] ) @@ -4995,14 +4995,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_one_dec_decl_ = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 5001 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_decl_ = -# 1640 "parser_cocci_menhir.mly" +# 1622 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] ) # 5009 "parser_cocci_menhir.ml" @@ -5029,19 +5029,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 5035 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 5040 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = -# 1636 "parser_cocci_menhir.mly" +# 1618 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); dot_builder _2] ) @@ -5070,14 +5070,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_one_dec_name_opt_decl_ = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 5076 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = -# 1640 "parser_cocci_menhir.mly" +# 1622 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] ) # 5084 "parser_cocci_menhir.ml" @@ -5095,7 +5095,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1116 "parser_cocci_menhir.mly" +# 1098 "parser_cocci_menhir.mly" ( [] ) # 5101 "parser_cocci_menhir.ml" in @@ -5125,7 +5125,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1118 "parser_cocci_menhir.mly" +# 1100 "parser_cocci_menhir.mly" ( (function dot_builder -> [dot_builder d])::r ) # 5131 "parser_cocci_menhir.ml" in @@ -5157,7 +5157,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in let c : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 5163 "parser_cocci_menhir.ml" ) = Obj.magic c in @@ -5165,7 +5165,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1120 "parser_cocci_menhir.mly" +# 1102 "parser_cocci_menhir.mly" ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))]):: r ) # 5172 "parser_cocci_menhir.ml" @@ -5183,7 +5183,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = -# 1124 "parser_cocci_menhir.mly" +# 1106 "parser_cocci_menhir.mly" ( [] ) # 5189 "parser_cocci_menhir.ml" in @@ -5215,7 +5215,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in let c : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 5221 "parser_cocci_menhir.ml" ) = Obj.magic c in @@ -5223,7 +5223,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = -# 1126 "parser_cocci_menhir.mly" +# 1108 "parser_cocci_menhir.mly" ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))]):: r ) # 5230 "parser_cocci_menhir.ml" @@ -5248,7 +5248,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_any_strict_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5254 "parser_cocci_menhir.ml" in @@ -5272,7 +5272,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_ctype_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5278 "parser_cocci_menhir.ml" in @@ -5296,7 +5296,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_d_ident_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5302 "parser_cocci_menhir.ml" in @@ -5320,7 +5320,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_ident_or_const_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5326 "parser_cocci_menhir.ml" in @@ -5344,7 +5344,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_meta_ident_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5350 "parser_cocci_menhir.ml" in @@ -5368,7 +5368,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5374 "parser_cocci_menhir.ml" in @@ -5392,7 +5392,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5398 "parser_cocci_menhir.ml" in @@ -5416,7 +5416,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5422 "parser_cocci_menhir.ml" in @@ -5440,7 +5440,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5446 "parser_cocci_menhir.ml" in @@ -5464,7 +5464,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5470 "parser_cocci_menhir.ml" in @@ -5488,7 +5488,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5494 "parser_cocci_menhir.ml" in @@ -5512,7 +5512,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_pos__ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5518 "parser_cocci_menhir.ml" in @@ -5536,7 +5536,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_typedef_ident_ = -# 1873 "parser_cocci_menhir.mly" +# 1855 "parser_cocci_menhir.mly" ( _1 ) # 5542 "parser_cocci_menhir.ml" in @@ -5560,7 +5560,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_eexpr_dot_expressions_ = -# 1250 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) # 5566 "parser_cocci_menhir.ml" in @@ -5602,13 +5602,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_cond_expr_eexpr_dot_expressions_ = Obj.magic r in let dd : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5608 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5614 "parser_cocci_menhir.ml" ) = Obj.magic w in @@ -5616,7 +5616,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_eexpr_dot_expressions_ = -# 1252 "parser_cocci_menhir.mly" +# 1234 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) # 5623 "parser_cocci_menhir.ml" @@ -5641,7 +5641,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_eexpr_nest_expressions_ = -# 1250 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) # 5647 "parser_cocci_menhir.ml" in @@ -5683,13 +5683,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_cond_expr_eexpr_nest_expressions_ = Obj.magic r in let dd : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5689 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5695 "parser_cocci_menhir.ml" ) = Obj.magic w in @@ -5697,7 +5697,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_eexpr_nest_expressions_ = -# 1252 "parser_cocci_menhir.mly" +# 1234 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) # 5704 "parser_cocci_menhir.ml" @@ -5722,7 +5722,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_expr_invalid_ = -# 1250 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) # 5728 "parser_cocci_menhir.ml" in @@ -5764,13 +5764,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_cond_expr_expr_invalid_ = Obj.magic r in let dd : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5770 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 5776 "parser_cocci_menhir.ml" ) = Obj.magic w in @@ -5778,7 +5778,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_expr_invalid_ = -# 1252 "parser_cocci_menhir.mly" +# 1234 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) # 5785 "parser_cocci_menhir.ml" @@ -5800,14 +5800,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 54 "parser_cocci_menhir.mly" +# 32 "parser_cocci_menhir.mly" (Data.clt) # 5806 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_const_vol = -# 836 "parser_cocci_menhir.mly" +# 818 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Const _1 ) # 5813 "parser_cocci_menhir.ml" in @@ -5828,14 +5828,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 54 "parser_cocci_menhir.mly" +# 32 "parser_cocci_menhir.mly" (Data.clt) # 5834 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_const_vol = -# 837 "parser_cocci_menhir.mly" +# 819 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Volatile _1 ) # 5841 "parser_cocci_menhir.ml" in @@ -5852,7 +5852,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_continue_struct_decl_list = -# 590 "parser_cocci_menhir.mly" +# 570 "parser_cocci_menhir.mly" ( [] ) # 5858 "parser_cocci_menhir.ml" in @@ -5882,7 +5882,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_continue_struct_decl_list = -# 591 "parser_cocci_menhir.mly" +# 571 "parser_cocci_menhir.mly" ( _1@_2 ) # 5888 "parser_cocci_menhir.ml" in @@ -5906,7 +5906,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_continue_struct_decl_list = -# 592 "parser_cocci_menhir.mly" +# 572 "parser_cocci_menhir.mly" ( _1 ) # 5912 "parser_cocci_menhir.ml" in @@ -5938,12 +5938,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 5944 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 5949 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -5955,13 +5955,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 5961 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 5967 "parser_cocci_menhir.ml" @@ -5974,7 +5974,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 5980 "parser_cocci_menhir.ml" in @@ -6006,12 +6006,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6012 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6017 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6023,13 +6023,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 6029 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6035 "parser_cocci_menhir.ml" @@ -6042,7 +6042,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6048 "parser_cocci_menhir.ml" in @@ -6074,12 +6074,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6080 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6085 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6091,13 +6091,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 6097 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6103 "parser_cocci_menhir.ml" @@ -6110,7 +6110,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6116 "parser_cocci_menhir.ml" in @@ -6142,12 +6142,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 6148 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6153 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6159,14 +6159,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 6166 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6172 "parser_cocci_menhir.ml" @@ -6179,7 +6179,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6185 "parser_cocci_menhir.ml" in @@ -6220,17 +6220,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 6226 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 6231 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6236 "parser_cocci_menhir.ml" ) = Obj.magic r1 in @@ -6244,7 +6244,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -6255,7 +6255,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6261 "parser_cocci_menhir.ml" @@ -6268,7 +6268,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6274 "parser_cocci_menhir.ml" in @@ -6300,12 +6300,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6306 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6311 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6317,13 +6317,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 6323 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6329 "parser_cocci_menhir.ml" @@ -6336,7 +6336,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6342 "parser_cocci_menhir.ml" in @@ -6373,17 +6373,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6379 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6384 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6389 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6397,7 +6397,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -6406,7 +6406,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 6412 "parser_cocci_menhir.ml" @@ -6419,7 +6419,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6425 "parser_cocci_menhir.ml" in @@ -6451,12 +6451,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6457 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6462 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6468,13 +6468,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 6474 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6480 "parser_cocci_menhir.ml" @@ -6487,7 +6487,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6493 "parser_cocci_menhir.ml" in @@ -6519,12 +6519,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6525 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6530 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6536,13 +6536,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 6542 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6548 "parser_cocci_menhir.ml" @@ -6555,7 +6555,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6561 "parser_cocci_menhir.ml" in @@ -6587,12 +6587,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6593 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6598 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6604,13 +6604,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 6610 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6616 "parser_cocci_menhir.ml" @@ -6623,7 +6623,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6629 "parser_cocci_menhir.ml" in @@ -6655,12 +6655,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 6661 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6666 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6672,14 +6672,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 6679 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6685 "parser_cocci_menhir.ml" @@ -6692,7 +6692,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6698 "parser_cocci_menhir.ml" in @@ -6733,17 +6733,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 6739 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 6744 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6749 "parser_cocci_menhir.ml" ) = Obj.magic r1 in @@ -6757,7 +6757,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -6768,7 +6768,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6774 "parser_cocci_menhir.ml" @@ -6781,7 +6781,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6787 "parser_cocci_menhir.ml" in @@ -6813,12 +6813,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6819 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6824 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6830,13 +6830,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 6836 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6842 "parser_cocci_menhir.ml" @@ -6849,7 +6849,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6855 "parser_cocci_menhir.ml" in @@ -6886,17 +6886,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6892 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6897 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 6902 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -6910,7 +6910,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -6919,7 +6919,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 6925 "parser_cocci_menhir.ml" @@ -6932,7 +6932,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6938 "parser_cocci_menhir.ml" in @@ -6959,7 +6959,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 6965 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -6970,13 +6970,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 6976 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 6982 "parser_cocci_menhir.ml" @@ -6989,7 +6989,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 6995 "parser_cocci_menhir.ml" in @@ -7016,7 +7016,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7022 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7027,13 +7027,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 7033 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7039 "parser_cocci_menhir.ml" @@ -7046,7 +7046,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7052 "parser_cocci_menhir.ml" in @@ -7073,7 +7073,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7079 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7084,13 +7084,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 7090 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7096 "parser_cocci_menhir.ml" @@ -7103,7 +7103,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7109 "parser_cocci_menhir.ml" in @@ -7130,7 +7130,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 7136 "parser_cocci_menhir.ml" ) = Obj.magic p00 in @@ -7141,14 +7141,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 7148 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7154 "parser_cocci_menhir.ml" @@ -7161,7 +7161,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7167 "parser_cocci_menhir.ml" in @@ -7197,12 +7197,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 7203 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 7208 "parser_cocci_menhir.ml" ) = Obj.magic r00 in @@ -7215,7 +7215,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -7226,7 +7226,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7232 "parser_cocci_menhir.ml" @@ -7239,7 +7239,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7245 "parser_cocci_menhir.ml" in @@ -7266,7 +7266,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7272 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7277,13 +7277,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 7283 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7289 "parser_cocci_menhir.ml" @@ -7296,7 +7296,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7302 "parser_cocci_menhir.ml" in @@ -7328,12 +7328,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7334 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7339 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in @@ -7346,7 +7346,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -7355,7 +7355,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 7361 "parser_cocci_menhir.ml" @@ -7368,7 +7368,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7374 "parser_cocci_menhir.ml" in @@ -7395,7 +7395,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 7401 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7406,13 +7406,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 502 "parser_cocci_menhir.mly" +# 482 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) ) # 7412 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7418 "parser_cocci_menhir.ml" @@ -7425,7 +7425,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7431 "parser_cocci_menhir.ml" in @@ -7452,7 +7452,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7458 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7463,13 +7463,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 504 "parser_cocci_menhir.mly" +# 484 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) ) # 7469 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7475 "parser_cocci_menhir.ml" @@ -7482,7 +7482,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7488 "parser_cocci_menhir.ml" in @@ -7509,7 +7509,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 7515 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -7520,13 +7520,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 506 "parser_cocci_menhir.mly" +# 486 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) ) # 7526 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7532 "parser_cocci_menhir.ml" @@ -7539,7 +7539,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7545 "parser_cocci_menhir.ml" in @@ -7572,7 +7572,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m : 'tv_list_TMul_ = Obj.magic m in let i00 : 'tv_ident = Obj.magic i00 in let s00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 7578 "parser_cocci_menhir.ml" ) = Obj.magic s00 in @@ -7585,13 +7585,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 508 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) ) # 7591 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7597 "parser_cocci_menhir.ml" @@ -7604,7 +7604,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7610 "parser_cocci_menhir.ml" in @@ -7646,13 +7646,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 510 "parser_cocci_menhir.mly" +# 490 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) ) # 7652 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7658 "parser_cocci_menhir.ml" @@ -7665,7 +7665,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7671 "parser_cocci_menhir.ml" in @@ -7707,13 +7707,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7713 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7719 "parser_cocci_menhir.ml" ) = Obj.magic l00 in @@ -7738,7 +7738,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), @@ -7748,7 +7748,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7754 "parser_cocci_menhir.ml" @@ -7761,7 +7761,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7767 "parser_cocci_menhir.ml" in @@ -7808,13 +7808,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7814 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7820 "parser_cocci_menhir.ml" ) = Obj.magic l00 in @@ -7843,7 +7843,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), @@ -7853,7 +7853,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7859 "parser_cocci_menhir.ml" @@ -7866,7 +7866,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7872 "parser_cocci_menhir.ml" in @@ -7908,18 +7908,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7914 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 7920 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 7925 "parser_cocci_menhir.ml" ) = Obj.magic s00 in @@ -7936,7 +7936,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let l = l0 in let s = s0 in -# 519 "parser_cocci_menhir.mly" +# 499 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = s in let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) ) @@ -7944,7 +7944,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 7950 "parser_cocci_menhir.ml" @@ -7957,7 +7957,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 7963 "parser_cocci_menhir.ml" in @@ -7984,7 +7984,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 7990 "parser_cocci_menhir.ml" ) = Obj.magic p00 in @@ -7995,13 +7995,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 523 "parser_cocci_menhir.mly" +# 503 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) ) # 8001 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 8007 "parser_cocci_menhir.ml" @@ -8014,7 +8014,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8020 "parser_cocci_menhir.ml" in @@ -8051,12 +8051,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8057 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8062 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8069,13 +8069,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 8075 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8081 "parser_cocci_menhir.ml" @@ -8089,7 +8089,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8095 "parser_cocci_menhir.ml" in @@ -8126,12 +8126,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8132 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8137 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8144,13 +8144,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 8150 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8156 "parser_cocci_menhir.ml" @@ -8164,7 +8164,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8170 "parser_cocci_menhir.ml" in @@ -8201,12 +8201,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8207 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8212 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8219,13 +8219,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 8225 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8231 "parser_cocci_menhir.ml" @@ -8239,7 +8239,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8245 "parser_cocci_menhir.ml" in @@ -8276,12 +8276,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 8282 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8287 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8294,14 +8294,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 8301 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8307 "parser_cocci_menhir.ml" @@ -8315,7 +8315,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8321 "parser_cocci_menhir.ml" in @@ -8361,17 +8361,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 8367 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 8372 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8377 "parser_cocci_menhir.ml" ) = Obj.magic r1 in @@ -8386,7 +8386,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -8397,7 +8397,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8403 "parser_cocci_menhir.ml" @@ -8411,7 +8411,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8417 "parser_cocci_menhir.ml" in @@ -8448,12 +8448,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8454 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8459 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8466,13 +8466,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 8472 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8478 "parser_cocci_menhir.ml" @@ -8486,7 +8486,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8492 "parser_cocci_menhir.ml" in @@ -8528,17 +8528,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8534 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8539 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8544 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8553,7 +8553,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -8562,7 +8562,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) # 8568 "parser_cocci_menhir.ml" @@ -8576,7 +8576,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8582 "parser_cocci_menhir.ml" in @@ -8613,12 +8613,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8619 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8624 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8631,13 +8631,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 8637 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 8643 "parser_cocci_menhir.ml" @@ -8651,7 +8651,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8657 "parser_cocci_menhir.ml" in @@ -8688,12 +8688,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8694 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8699 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8706,13 +8706,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 8712 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 8718 "parser_cocci_menhir.ml" @@ -8726,7 +8726,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8732 "parser_cocci_menhir.ml" in @@ -8763,12 +8763,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 8769 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8774 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8781,13 +8781,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 8787 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 8793 "parser_cocci_menhir.ml" @@ -8801,7 +8801,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8807 "parser_cocci_menhir.ml" in @@ -8838,12 +8838,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 8844 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8849 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -8856,14 +8856,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 8863 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 8869 "parser_cocci_menhir.ml" @@ -8877,7 +8877,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8883 "parser_cocci_menhir.ml" in @@ -8923,17 +8923,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 8929 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 8934 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 8939 "parser_cocci_menhir.ml" ) = Obj.magic r1 in @@ -8948,7 +8948,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -8959,7 +8959,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 8965 "parser_cocci_menhir.ml" @@ -8973,7 +8973,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 8979 "parser_cocci_menhir.ml" in @@ -9010,12 +9010,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9016 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 9021 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -9028,13 +9028,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 9034 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 9040 "parser_cocci_menhir.ml" @@ -9048,7 +9048,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9054 "parser_cocci_menhir.ml" in @@ -9090,17 +9090,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9096 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9101 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 9106 "parser_cocci_menhir.ml" ) = Obj.magic r0 in @@ -9115,7 +9115,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -9124,7 +9124,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) # 9130 "parser_cocci_menhir.ml" @@ -9138,7 +9138,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9144 "parser_cocci_menhir.ml" in @@ -9170,7 +9170,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9176 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9182,13 +9182,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) # 9188 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9194 "parser_cocci_menhir.ml" @@ -9202,7 +9202,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9208 "parser_cocci_menhir.ml" in @@ -9234,7 +9234,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9240 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9246,13 +9246,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) # 9252 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9258 "parser_cocci_menhir.ml" @@ -9266,7 +9266,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9272 "parser_cocci_menhir.ml" in @@ -9298,7 +9298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9304 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9310,13 +9310,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) # 9316 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9322 "parser_cocci_menhir.ml" @@ -9330,7 +9330,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9336 "parser_cocci_menhir.ml" in @@ -9362,7 +9362,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 9368 "parser_cocci_menhir.ml" ) = Obj.magic p00 in @@ -9374,14 +9374,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) # 9381 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9387 "parser_cocci_menhir.ml" @@ -9395,7 +9395,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9401 "parser_cocci_menhir.ml" in @@ -9436,12 +9436,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 9442 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 9447 "parser_cocci_menhir.ml" ) = Obj.magic r00 in @@ -9455,7 +9455,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) @@ -9466,7 +9466,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9472 "parser_cocci_menhir.ml" @@ -9480,7 +9480,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9486 "parser_cocci_menhir.ml" in @@ -9512,7 +9512,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9518 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9524,13 +9524,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) # 9530 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9536 "parser_cocci_menhir.ml" @@ -9544,7 +9544,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9550 "parser_cocci_menhir.ml" in @@ -9581,12 +9581,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9587 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9592 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in @@ -9600,7 +9600,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, @@ -9609,7 +9609,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) # 9615 "parser_cocci_menhir.ml" @@ -9623,7 +9623,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9629 "parser_cocci_menhir.ml" in @@ -9655,7 +9655,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 9661 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9667,13 +9667,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 502 "parser_cocci_menhir.mly" +# 482 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) ) # 9673 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 9679 "parser_cocci_menhir.ml" @@ -9687,7 +9687,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9693 "parser_cocci_menhir.ml" in @@ -9719,7 +9719,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9725 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9731,13 +9731,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 504 "parser_cocci_menhir.mly" +# 484 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) ) # 9737 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 9743 "parser_cocci_menhir.ml" @@ -9751,7 +9751,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9757 "parser_cocci_menhir.ml" in @@ -9783,7 +9783,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) # 9789 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in @@ -9795,13 +9795,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 506 "parser_cocci_menhir.mly" +# 486 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) ) # 9801 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 9807 "parser_cocci_menhir.ml" @@ -9815,7 +9815,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9821 "parser_cocci_menhir.ml" in @@ -9853,7 +9853,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m : 'tv_list_TMul_ = Obj.magic m in let i00 : 'tv_ident = Obj.magic i00 in let s00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) # 9859 "parser_cocci_menhir.ml" ) = Obj.magic s00 in @@ -9867,13 +9867,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 508 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) ) # 9873 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 9879 "parser_cocci_menhir.ml" @@ -9887,7 +9887,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9893 "parser_cocci_menhir.ml" in @@ -9935,13 +9935,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 510 "parser_cocci_menhir.mly" +# 490 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) ) # 9941 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 9947 "parser_cocci_menhir.ml" @@ -9955,7 +9955,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 9961 "parser_cocci_menhir.ml" in @@ -10002,13 +10002,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10008 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10014 "parser_cocci_menhir.ml" ) = Obj.magic l00 in @@ -10034,7 +10034,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), @@ -10044,7 +10044,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 10050 "parser_cocci_menhir.ml" @@ -10058,7 +10058,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 10064 "parser_cocci_menhir.ml" in @@ -10110,13 +10110,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10116 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10122 "parser_cocci_menhir.ml" ) = Obj.magic l00 in @@ -10146,7 +10146,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), @@ -10156,7 +10156,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 10162 "parser_cocci_menhir.ml" @@ -10170,7 +10170,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 10176 "parser_cocci_menhir.ml" in @@ -10217,18 +10217,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10223 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 10229 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 10234 "parser_cocci_menhir.ml" ) = Obj.magic s00 in @@ -10246,7 +10246,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let l = l0 in let s = s0 in -# 519 "parser_cocci_menhir.mly" +# 499 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = s in let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) ) @@ -10254,7 +10254,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 10260 "parser_cocci_menhir.ml" @@ -10268,7 +10268,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 10274 "parser_cocci_menhir.ml" in @@ -10300,7 +10300,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 10306 "parser_cocci_menhir.ml" ) = Obj.magic p00 in @@ -10312,13 +10312,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 523 "parser_cocci_menhir.mly" +# 503 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) ) # 10318 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) # 10324 "parser_cocci_menhir.ml" @@ -10332,7 +10332,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 536 "parser_cocci_menhir.mly" +# 516 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) # 10338 "parser_cocci_menhir.ml" in @@ -10353,14 +10353,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let r : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 10359 "parser_cocci_menhir.ml" ) = Obj.magic r in let _startpos = _startpos_r_ in let _endpos = _endpos_r_ in let _v : 'tv_ctype = -# 538 "parser_cocci_menhir.mly" +# 518 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,None)) ) # 10366 "parser_cocci_menhir.ml" in @@ -10381,14 +10381,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let r : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) # 10387 "parser_cocci_menhir.ml" ) = Obj.magic r in let _startpos = _startpos_r_ in let _endpos = _endpos_r_ in let _v : 'tv_ctype = -# 540 "parser_cocci_menhir.mly" +# 520 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,None)) ) # 10394 "parser_cocci_menhir.ml" in @@ -10419,20 +10419,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 10425 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 10431 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_rp_ in let _v : 'tv_ctype = -# 542 "parser_cocci_menhir.mly" +# 522 "parser_cocci_menhir.mly" ( let (mids,code) = t in Ast0.wrap (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) ) @@ -10464,7 +10464,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_d_ident = -# 1054 "parser_cocci_menhir.mly" +# 1036 "parser_cocci_menhir.mly" ( (_1, function t -> List.fold_right @@ -10501,7 +10501,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_i_ in let _v : 'tv_decl = -# 810 "parser_cocci_menhir.mly" +# 792 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Param(t, Some i)) ) # 10507 "parser_cocci_menhir.ml" in @@ -10525,7 +10525,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_decl = -# 811 "parser_cocci_menhir.mly" +# 793 "parser_cocci_menhir.mly" ( (*verify in FunDecl*) Ast0.wrap(Ast0.Param(t, None)) ) # 10531 "parser_cocci_menhir.ml" in @@ -10581,29 +10581,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 10587 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 10593 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 10598 "parser_cocci_menhir.ml" ) = Obj.magic rp in let i : 'tv_ident = Obj.magic i in let s : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 10604 "parser_cocci_menhir.ml" ) = Obj.magic s in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 10609 "parser_cocci_menhir.ml" ) = Obj.magic lp in @@ -10611,7 +10611,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_rp1_ in let _v : 'tv_decl = -# 814 "parser_cocci_menhir.mly" +# 796 "parser_cocci_menhir.mly" ( let fnptr = Ast0.wrap (Ast0.FunctionPointer @@ -10637,14 +10637,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 10643 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl = -# 821 "parser_cocci_menhir.mly" +# 803 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaParam(P.clt2mcode nm clt,pure)) ) # 10651 "parser_cocci_menhir.ml" @@ -10666,14 +10666,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) # 10672 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_ident = -# 1585 "parser_cocci_menhir.mly" +# 1567 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) # 10679 "parser_cocci_menhir.ml" in @@ -10694,14 +10694,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 62 "parser_cocci_menhir.mly" +# 40 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 10700 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_ident = -# 1587 "parser_cocci_menhir.mly" +# 1569 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) # 10708 "parser_cocci_menhir.ml" @@ -10719,7 +10719,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_decl_list_decl_ = -# 1607 "parser_cocci_menhir.mly" +# 1589 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) # 10725 "parser_cocci_menhir.ml" in @@ -10743,7 +10743,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_decl_ = -# 1609 "parser_cocci_menhir.mly" +# 1591 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in if List.exists circle _1 @@ -10764,7 +10764,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_decl_list_name_opt_decl_ = -# 1607 "parser_cocci_menhir.mly" +# 1589 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) # 10770 "parser_cocci_menhir.ml" in @@ -10788,7 +10788,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_name_opt_decl_ = -# 1609 "parser_cocci_menhir.mly" +# 1591 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in if List.exists circle _1 @@ -10816,7 +10816,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_start_decl_ = -# 1616 "parser_cocci_menhir.mly" +# 1598 "parser_cocci_menhir.mly" ( [_1] ) # 10822 "parser_cocci_menhir.ml" in @@ -10848,7 +10848,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_decl_list_start_decl_ = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 10854 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -10856,7 +10856,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_list_start_decl_ = -# 1618 "parser_cocci_menhir.mly" +# 1600 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 ) # 10862 "parser_cocci_menhir.ml" in @@ -10883,14 +10883,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_list_comma_decls_TEllipsis_decl__ = Obj.magic _2 in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 10889 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_decl_list_start_decl_ = -# 1620 "parser_cocci_menhir.mly" +# 1602 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1)):: (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) ) # 10897 "parser_cocci_menhir.ml" @@ -10915,7 +10915,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1616 "parser_cocci_menhir.mly" +# 1598 "parser_cocci_menhir.mly" ( [_1] ) # 10921 "parser_cocci_menhir.ml" in @@ -10947,7 +10947,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_decl_list_start_name_opt_decl_ = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 10953 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -10955,7 +10955,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1618 "parser_cocci_menhir.mly" +# 1600 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 ) # 10961 "parser_cocci_menhir.ml" in @@ -10982,14 +10982,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = Obj.magic _2 in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 10988 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1620 "parser_cocci_menhir.mly" +# 1602 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1)):: (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) ) # 10996 "parser_cocci_menhir.ml" @@ -11011,14 +11011,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 11017 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1132 "parser_cocci_menhir.mly" +# 1114 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] ) # 11025 "parser_cocci_menhir.ml" @@ -11043,7 +11043,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1135 "parser_cocci_menhir.mly" +# 1117 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap @@ -11071,7 +11071,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1140 "parser_cocci_menhir.mly" +# 1122 "parser_cocci_menhir.mly" ( [_1] ) # 11077 "parser_cocci_menhir.ml" in @@ -11102,20 +11102,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 11108 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let t : 'tv_midzero_list_fun_start_fun_start_ = Obj.magic t in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 11114 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_statement = -# 1149 "parser_cocci_menhir.mly" +# 1131 "parser_cocci_menhir.mly" ( let (mids,code) = t in if List.for_all (function x -> @@ -11144,14 +11144,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) # 11150 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1162 "parser_cocci_menhir.mly" +# 1144 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] ) # 11158 "parser_cocci_menhir.ml" @@ -11176,7 +11176,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1165 "parser_cocci_menhir.mly" +# 1147 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap @@ -11204,7 +11204,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1170 "parser_cocci_menhir.mly" +# 1152 "parser_cocci_menhir.mly" ( [_1] ) # 11210 "parser_cocci_menhir.ml" in @@ -11235,20 +11235,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 11241 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let t : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = Obj.magic t in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 11247 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_statement_expr = -# 1179 "parser_cocci_menhir.mly" +# 1161 "parser_cocci_menhir.mly" ( let (mids,code) = t in if List.for_all (function [] -> true | _ -> false) code then [] @@ -11281,7 +11281,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11287 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11289,7 +11289,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_decl_var = -# 942 "parser_cocci_menhir.mly" +# 924 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv))] ) # 11295 "parser_cocci_menhir.ml" in @@ -11320,7 +11320,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11326 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11336,7 +11336,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 944 "parser_cocci_menhir.mly" +# 926 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))) @@ -11375,7 +11375,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11381 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11393,7 +11393,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 944 "parser_cocci_menhir.mly" +# 926 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))) @@ -11420,7 +11420,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_f_ in let _v : 'tv_decl_var = -# 948 "parser_cocci_menhir.mly" +# 930 "parser_cocci_menhir.mly" ( [f] ) # 11426 "parser_cocci_menhir.ml" in @@ -11461,13 +11461,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11467 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11473 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -11483,7 +11483,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 950 "parser_cocci_menhir.mly" +# 932 "parser_cocci_menhir.mly" (let (id,fn) = d in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) # 11490 "parser_cocci_menhir.ml" @@ -11530,13 +11530,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11536 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11542 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -11554,7 +11554,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 950 "parser_cocci_menhir.mly" +# 932 "parser_cocci_menhir.mly" (let (id,fn) = d in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) # 11561 "parser_cocci_menhir.ml" @@ -11586,7 +11586,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11592 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11609,7 +11609,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 955 "parser_cocci_menhir.mly" +# 937 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = @@ -11650,7 +11650,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11656 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11675,7 +11675,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 955 "parser_cocci_menhir.mly" +# 937 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = @@ -11716,7 +11716,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11722 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11741,7 +11741,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 955 "parser_cocci_menhir.mly" +# 937 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = @@ -11787,7 +11787,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11793 "parser_cocci_menhir.ml" ) = Obj.magic pv in @@ -11814,7 +11814,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 955 "parser_cocci_menhir.mly" +# 937 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = @@ -11860,13 +11860,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11866 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11872 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -11889,7 +11889,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 963 "parser_cocci_menhir.mly" +# 945 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in @@ -11939,13 +11939,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11945 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 11951 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -11970,7 +11970,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 963 "parser_cocci_menhir.mly" +# 945 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in @@ -12020,13 +12020,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12026 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12032 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -12051,7 +12051,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 963 "parser_cocci_menhir.mly" +# 945 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in @@ -12106,13 +12106,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12112 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12118 "parser_cocci_menhir.ml" ) = Obj.magic q in @@ -12139,7 +12139,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 963 "parser_cocci_menhir.mly" +# 945 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in @@ -12204,34 +12204,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12210 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12215 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12221 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12226 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 12232 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12237 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in @@ -12246,7 +12246,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 973 "parser_cocci_menhir.mly" +# 955 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -12318,34 +12318,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12324 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12329 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12335 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12340 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 12346 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12351 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in @@ -12362,7 +12362,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 973 "parser_cocci_menhir.mly" +# 955 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -12409,18 +12409,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _5 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12415 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12420 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12426 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -12428,7 +12428,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_decl_var = -# 981 "parser_cocci_menhir.mly" +# 963 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3, P.clt2mcode ")" _4,P.clt2mcode ";" _5))] ) # 12435 "parser_cocci_menhir.ml" @@ -12500,40 +12500,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12506 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12512 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12517 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12523 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12528 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 12534 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12539 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in @@ -12548,7 +12548,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 987 "parser_cocci_menhir.mly" +# 969 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -12630,40 +12630,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12636 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12642 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12647 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12653 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12658 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) # 12664 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 12669 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in @@ -12680,7 +12680,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 987 "parser_cocci_menhir.mly" +# 969 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -12722,21 +12722,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12728 "parser_cocci_menhir.ml" ) = Obj.magic pv in let id : 'tv_comma_list_typedef_ident_ = Obj.magic id in let t : 'tv_typedef_ctype = Obj.magic t in let s : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 12735 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_pv_ in let _v : 'tv_decl_var = -# 995 "parser_cocci_menhir.mly" +# 977 "parser_cocci_menhir.mly" ( let s = P.clt2mcode "typedef" s in List.map (function id -> @@ -12764,7 +12764,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list = -# 712 "parser_cocci_menhir.mly" +# 694 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.DPcircles(_) -> true | _ -> false in if List.exists circle _1 @@ -12792,7 +12792,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list_option = -# 736 "parser_cocci_menhir.mly" +# 718 "parser_cocci_menhir.mly" ( _1 ) # 12798 "parser_cocci_menhir.ml" in @@ -12809,7 +12809,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_define_param_list_option = -# 737 "parser_cocci_menhir.mly" +# 719 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) # 12815 "parser_cocci_menhir.ml" in @@ -12833,7 +12833,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list_start = -# 719 "parser_cocci_menhir.mly" +# 701 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.DParam _1)] ) # 12839 "parser_cocci_menhir.ml" in @@ -12865,7 +12865,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_define_param_list_start = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 12871 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -12873,7 +12873,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_define_param_list_start = -# 721 "parser_cocci_menhir.mly" +# 703 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DParam _1):: Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _2))::_3 ) # 12880 "parser_cocci_menhir.ml" @@ -12901,14 +12901,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let r : 'tv_list_dp_comma_args_TEllipsis__ = Obj.magic r in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 12907 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_define_param_list_start = -# 724 "parser_cocci_menhir.mly" +# 706 "parser_cocci_menhir.mly" ( (P.mkdpdots "..." d):: (List.concat (List.map (function x -> x (P.mkdpdots "...")) r)) ) # 12915 "parser_cocci_menhir.ml" @@ -12930,14 +12930,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 81 "parser_cocci_menhir.mly" +# 59 "parser_cocci_menhir.mly" (Data.clt * token) # 12936 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_defineop = -# 671 "parser_cocci_menhir.mly" +# 653 "parser_cocci_menhir.mly" ( let (clt,ident) = _1 in function body -> Ast0.wrap @@ -12983,20 +12983,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 12989 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_define_param_list_option = Obj.magic _2 in let _1 : ( -# 82 "parser_cocci_menhir.mly" +# 60 "parser_cocci_menhir.mly" (Data.clt * token * int * int) # 12995 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_defineop = -# 688 "parser_cocci_menhir.mly" +# 670 "parser_cocci_menhir.mly" ( let (clt,ident,parenoff,parencol) = _1 in (* clt is the start of the #define itself *) let (arity,line,lline,offset,col,strbef,straft,pos) = clt in @@ -13039,7 +13039,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dep = -# 225 "parser_cocci_menhir.mly" +# 203 "parser_cocci_menhir.mly" ( _1 ) # 13045 "parser_cocci_menhir.ml" in @@ -13073,7 +13073,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_dep = -# 226 "parser_cocci_menhir.mly" +# 204 "parser_cocci_menhir.mly" ( Ast.AndDep(_1, _3) ) # 13079 "parser_cocci_menhir.ml" in @@ -13107,7 +13107,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_dep = -# 227 "parser_cocci_menhir.mly" +# 205 "parser_cocci_menhir.mly" ( Ast.OrDep (_1, _3) ) # 13113 "parser_cocci_menhir.ml" in @@ -13124,7 +13124,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_depends = -# 221 "parser_cocci_menhir.mly" +# 199 "parser_cocci_menhir.mly" ( Ast.NoDep ) # 13130 "parser_cocci_menhir.ml" in @@ -13156,7 +13156,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_parents_ in let _v : 'tv_depends = -# 222 "parser_cocci_menhir.mly" +# 200 "parser_cocci_menhir.mly" ( parents ) # 13162 "parser_cocci_menhir.ml" in @@ -13183,14 +13183,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_ident = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 13189 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_designator = -# 1096 "parser_cocci_menhir.mly" +# 1078 "parser_cocci_menhir.mly" ( Ast0.DesignatorField (P.clt2mcode "." _1,_2) ) # 13196 "parser_cocci_menhir.ml" in @@ -13221,20 +13221,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 13227 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 13233 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_designator = -# 1098 "parser_cocci_menhir.mly" +# 1080 "parser_cocci_menhir.mly" ( Ast0.DesignatorIndex (P.clt2mcode "[" _1,_2,P.clt2mcode "]" _3) ) # 13240 "parser_cocci_menhir.ml" in @@ -13275,26 +13275,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _5 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 13281 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : 'tv_eexpr = Obj.magic _4 in let _3 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13287 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) # 13293 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_designator = -# 1100 "parser_cocci_menhir.mly" +# 1082 "parser_cocci_menhir.mly" ( Ast0.DesignatorRange (P.clt2mcode "[" _1,_2,P.clt2mcode "..." _3, _4,P.clt2mcode "]" _5) ) # 13301 "parser_cocci_menhir.ml" @@ -13319,7 +13319,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dexpr = -# 1199 "parser_cocci_menhir.mly" +# 1181 "parser_cocci_menhir.mly" ( _1 ) # 13325 "parser_cocci_menhir.ml" in @@ -13347,7 +13347,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_disable = -# 240 "parser_cocci_menhir.mly" +# 218 "parser_cocci_menhir.mly" ( List.map P.id2name _2 ) # 13353 "parser_cocci_menhir.ml" in @@ -13368,14 +13368,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13374 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dot_expressions = -# 1208 "parser_cocci_menhir.mly" +# 1190 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Edots(P.clt2mcode "..." _1,None)) ) # 13381 "parser_cocci_menhir.ml" in @@ -13399,7 +13399,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dot_expressions = -# 1209 "parser_cocci_menhir.mly" +# 1191 "parser_cocci_menhir.mly" ( _1 ) # 13405 "parser_cocci_menhir.ml" in @@ -13425,19 +13425,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13431 "parser_cocci_menhir.ml" ) = Obj.magic d in let c : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 13436 "parser_cocci_menhir.ml" ) = Obj.magic c in let _startpos = _startpos_c_ in let _endpos = _endpos_d_ in let _v : 'tv_dp_comma_args_TEllipsis_ = -# 729 "parser_cocci_menhir.mly" +# 711 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," c)); dot_builder d] ) # 13444 "parser_cocci_menhir.ml" @@ -13465,14 +13465,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_ident = Obj.magic _2 in let _1 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 13471 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_dp_comma_args_TEllipsis_ = -# 732 "parser_cocci_menhir.mly" +# 714 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _1)); Ast0.wrap(Ast0.DParam _2)] ) @@ -13495,14 +13495,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13501 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_eexpr_ = -# 1883 "parser_cocci_menhir.mly" +# 1865 "parser_cocci_menhir.mly" ( (d,None) ) # 13508 "parser_cocci_menhir.ml" in @@ -13541,14 +13541,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let w : 'tv_eexpr = Obj.magic w in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13547 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_eexpr_ = -# 1884 "parser_cocci_menhir.mly" +# 1866 "parser_cocci_menhir.mly" ( (d,Some w) ) # 13554 "parser_cocci_menhir.ml" in @@ -13569,14 +13569,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13575 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_initialize_ = -# 1883 "parser_cocci_menhir.mly" +# 1865 "parser_cocci_menhir.mly" ( (d,None) ) # 13582 "parser_cocci_menhir.ml" in @@ -13615,14 +13615,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let w : 'tv_initialize = Obj.magic w in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13621 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_initialize_ = -# 1884 "parser_cocci_menhir.mly" +# 1866 "parser_cocci_menhir.mly" ( (d,Some w) ) # 13628 "parser_cocci_menhir.ml" in @@ -13643,14 +13643,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13649 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_struct_decl_ = -# 1883 "parser_cocci_menhir.mly" +# 1865 "parser_cocci_menhir.mly" ( (d,None) ) # 13656 "parser_cocci_menhir.ml" in @@ -13689,14 +13689,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let w : 'tv_struct_decl = Obj.magic w in let d : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) # 13695 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_struct_decl_ = -# 1884 "parser_cocci_menhir.mly" +# 1866 "parser_cocci_menhir.mly" ( (d,Some w) ) # 13702 "parser_cocci_menhir.ml" in @@ -13720,7 +13720,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr = -# 1197 "parser_cocci_menhir.mly" +# 1179 "parser_cocci_menhir.mly" ( _1 ) # 13726 "parser_cocci_menhir.ml" in @@ -13744,7 +13744,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list = -# 1827 "parser_cocci_menhir.mly" +# 1809 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Ecircles(_) -> true | _ -> false in let star x = @@ -13777,7 +13777,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list_option = -# 1866 "parser_cocci_menhir.mly" +# 1848 "parser_cocci_menhir.mly" ( _1 ) # 13783 "parser_cocci_menhir.ml" in @@ -13794,7 +13794,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_eexpr_list_option = -# 1867 "parser_cocci_menhir.mly" +# 1849 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) # 13800 "parser_cocci_menhir.ml" in @@ -13818,7 +13818,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list_start = -# 1854 "parser_cocci_menhir.mly" +# 1836 "parser_cocci_menhir.mly" ( [_1] ) # 13824 "parser_cocci_menhir.ml" in @@ -13850,7 +13850,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_eexpr_list_start = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 13856 "parser_cocci_menhir.ml" ) = Obj.magic _2 in @@ -13858,7 +13858,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_eexpr_list_start = -# 1856 "parser_cocci_menhir.mly" +# 1838 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.EComma(P.clt2mcode "," _2))::_3 ) # 13864 "parser_cocci_menhir.ml" in @@ -13880,7 +13880,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_exists = -# 243 "parser_cocci_menhir.mly" +# 221 "parser_cocci_menhir.mly" ( Ast.Exists ) # 13886 "parser_cocci_menhir.ml" in @@ -13902,7 +13902,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_exists = -# 244 "parser_cocci_menhir.mly" +# 222 "parser_cocci_menhir.mly" ( Ast.Forall ) # 13908 "parser_cocci_menhir.ml" in @@ -13919,7 +13919,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_exists = -# 245 "parser_cocci_menhir.mly" +# 223 "parser_cocci_menhir.mly" ( Ast.Undetermined ) # 13925 "parser_cocci_menhir.ml" in @@ -13943,7 +13943,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_expr = -# 1195 "parser_cocci_menhir.mly" +# 1177 "parser_cocci_menhir.mly" ( _1 ) # 13949 "parser_cocci_menhir.ml" in @@ -13967,7 +13967,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_r_ in let _endpos = _endpos_r_ in let _v : 'tv_expr_dots_TEllipsis_ = -# 1377 "parser_cocci_menhir.mly" +# 1359 "parser_cocci_menhir.mly" ( r ) # 13973 "parser_cocci_menhir.ml" in @@ -13984,7 +13984,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_extends = -# 216 "parser_cocci_menhir.mly" +# 194 "parser_cocci_menhir.mly" ( () ) # 13990 "parser_cocci_menhir.ml" in @@ -14009,14 +14009,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let parent : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) # 14015 "parser_cocci_menhir.ml" ) = Obj.magic parent in let _startpos = _startpos__1_ in let _endpos = _endpos_parent_ in let _v : 'tv_extends = -# 218 "parser_cocci_menhir.mly" +# 196 "parser_cocci_menhir.mly" ( !Data.install_bindings (parent) ) # 14022 "parser_cocci_menhir.ml" in @@ -14042,19 +14042,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 83 "parser_cocci_menhir.mly" +# 61 "parser_cocci_menhir.mly" (string * Data.clt) # 14048 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 83 "parser_cocci_menhir.mly" +# 61 "parser_cocci_menhir.mly" (string * Data.clt) # 14053 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_filespec = -# 630 "parser_cocci_menhir.mly" +# 610 "parser_cocci_menhir.mly" ( [Ast0.wrap (Ast0.FILEINFO(P.id2mcode _1, P.id2mcode _2))] ) @@ -14073,7 +14073,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fninfo = -# 765 "parser_cocci_menhir.mly" +# 747 "parser_cocci_menhir.mly" ( [] ) # 14079 "parser_cocci_menhir.ml" in @@ -14103,7 +14103,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 767 "parser_cocci_menhir.mly" +# 749 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in @@ -14137,7 +14137,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_r_ in let _v : 'tv_fninfo = -# 772 "parser_cocci_menhir.mly" +# 754 "parser_cocci_menhir.mly" ( (Ast0.FType(t))::r ) # 14143 "parser_cocci_menhir.ml" in @@ -14164,14 +14164,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_fninfo = Obj.magic _2 in let _1 : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 14170 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 774 "parser_cocci_menhir.mly" +# 756 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate inline") @@ -14201,14 +14201,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_fninfo = Obj.magic _2 in let _1 : ( -# 55 "parser_cocci_menhir.mly" +# 33 "parser_cocci_menhir.mly" (string * Data.clt) # 14207 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 779 "parser_cocci_menhir.mly" +# 761 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "multiple attributes") @@ -14228,7 +14228,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fninfo_nt = -# 785 "parser_cocci_menhir.mly" +# 767 "parser_cocci_menhir.mly" ( [] ) # 14234 "parser_cocci_menhir.ml" in @@ -14258,7 +14258,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 787 "parser_cocci_menhir.mly" +# 769 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in @@ -14289,14 +14289,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_fninfo_nt = Obj.magic _2 in let _1 : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) # 14295 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 793 "parser_cocci_menhir.mly" +# 775 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate inline") @@ -14326,14 +14326,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_fninfo_nt = Obj.magic _2 in let _1 : ( -# 55 "parser_cocci_menhir.mly" +# 33 "parser_cocci_menhir.mly" (string * Data.clt) # 14332 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 798 "parser_cocci_menhir.mly" +# 780 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate init") @@ -14353,7 +14353,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_dots = -# 1775 "parser_cocci_menhir.mly" +# 1757 "parser_cocci_menhir.mly" ([]) # 14359 "parser_cocci_menhir.ml" in @@ -14381,7 +14381,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1776 "parser_cocci_menhir.mly" +# 1758 "parser_cocci_menhir.mly" (_2) # 14387 "parser_cocci_menhir.ml" in @@ -14411,7 +14411,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1777 "parser_cocci_menhir.mly" +# 1759 "parser_cocci_menhir.mly" (Ast0.wrap(Ast0.Exp(_1))::_2) # 14417 "parser_cocci_menhir.ml" in @@ -14441,7 +14441,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1778 "parser_cocci_menhir.mly" +# 1760 "parser_cocci_menhir.mly" (_1@_2) # 14447 "parser_cocci_menhir.ml" in @@ -14458,7 +14458,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_dots_or = -# 1785 "parser_cocci_menhir.mly" +# 1767 "parser_cocci_menhir.mly" ([]) # 14464 "parser_cocci_menhir.ml" in @@ -14486,7 +14486,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1786 "parser_cocci_menhir.mly" +# 1768 "parser_cocci_menhir.mly" (_2) # 14492 "parser_cocci_menhir.ml" in @@ -14516,7 +14516,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1787 "parser_cocci_menhir.mly" +# 1769 "parser_cocci_menhir.mly" (Ast0.wrap(Ast0.Exp(_1))::_2) # 14522 "parser_cocci_menhir.ml" in @@ -14546,7 +14546,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1788 "parser_cocci_menhir.mly" +# 1770 "parser_cocci_menhir.mly" (_1@_2) # 14552 "parser_cocci_menhir.ml" in @@ -14576,7 +14576,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_exp = -# 1781 "parser_cocci_menhir.mly" +# 1763 "parser_cocci_menhir.mly" (_1::_2) # 14582 "parser_cocci_menhir.ml" in @@ -14593,7 +14593,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_exp_or = -# 1791 "parser_cocci_menhir.mly" +# 1773 "parser_cocci_menhir.mly" ([]) # 14599 "parser_cocci_menhir.ml" in @@ -14623,7 +14623,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_exp_or = -# 1792 "parser_cocci_menhir.mly" +# 1774 "parser_cocci_menhir.mly" (_1::_2) # 14629 "parser_cocci_menhir.ml" in @@ -14640,7 +14640,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_stm = -# 1770 "parser_cocci_menhir.mly" +# 1752 "parser_cocci_menhir.mly" ([]) # 14646 "parser_cocci_menhir.ml" in @@ -14670,7 +14670,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_stm = -# 1771 "parser_cocci_menhir.mly" +# 1753 "parser_cocci_menhir.mly" (_1::_2) # 14676 "parser_cocci_menhir.ml" in @@ -14700,7 +14700,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_stm = -# 1772 "parser_cocci_menhir.mly" +# 1754 "parser_cocci_menhir.mly" (_1@_2) # 14706 "parser_cocci_menhir.ml" in @@ -14724,7 +14724,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_fun_start = -# 1767 "parser_cocci_menhir.mly" +# 1749 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) # 14730 "parser_cocci_menhir.ml" in @@ -14748,7 +14748,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1565 "parser_cocci_menhir.mly" +# 1547 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) # 14754 "parser_cocci_menhir.ml" in @@ -14769,14 +14769,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 14775 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1567 "parser_cocci_menhir.mly" +# 1549 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) # 14783 "parser_cocci_menhir.ml" @@ -14798,14 +14798,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 14804 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1570 "parser_cocci_menhir.mly" +# 1552 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaFunc(P.clt2mcode nm clt,constraints,pure)) ) # 14812 "parser_cocci_menhir.ml" @@ -14827,14 +14827,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 14833 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1573 "parser_cocci_menhir.mly" +# 1555 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap (Ast0.MetaLocalFunc(P.clt2mcode nm clt,constraints,pure)) ) @@ -14896,24 +14896,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rb : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 14902 "parser_cocci_menhir.ml" ) = Obj.magic rb in let b : 'tv_fun_start = Obj.magic b in let lb : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) # 14908 "parser_cocci_menhir.ml" ) = Obj.magic lb in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 14913 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_decl_ = Obj.magic d in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 14919 "parser_cocci_menhir.ml" ) = Obj.magic lp in @@ -14922,7 +14922,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_rb_ in let _v : 'tv_fundecl = -# 756 "parser_cocci_menhir.mly" +# 738 "parser_cocci_menhir.mly" ( P.verify_parameter_declarations (Ast0.undots d); Ast0.wrap(Ast0.FunDecl((Ast0.default_info(),Ast0.context_befaft()), f, i, @@ -14974,18 +14974,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pt : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 14980 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 14985 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 14991 "parser_cocci_menhir.ml" ) = Obj.magic lp in @@ -15001,7 +15001,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 744 "parser_cocci_menhir.mly" +# 726 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.UnInit (s, @@ -15058,18 +15058,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pt : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) # 15064 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) # 15069 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) # 15075 "parser_cocci_menhir.ml" ) = Obj.magic lp in @@ -15087,7 +15087,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct in -# 744 "parser_cocci_menhir.mly" +# 726 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.UnInit (s, @@ -15117,7 +15117,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident = -# 1578 "parser_cocci_menhir.mly" +# 1560 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) # 15123 "parser_cocci_menhir.ml" in @@ -15138,14 +15138,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) # 15144 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident = -# 1580 "parser_cocci_menhir.mly" +# 1562 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) # 15152 "parser_cocci_menhir.ml" @@ -15170,7 +15170,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_i_ in let _v : 'tv_ident_or_const = -# 1532 "parser_cocci_menhir.mly" +# 1514 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))) ) # 15176 "parser_cocci_menhir.ml" in @@ -15191,14 +15191,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 15197 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident_or_const = -# 1534 "parser_cocci_menhir.mly" +# 1516 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) # 15205 "parser_cocci_menhir.ml" @@ -15220,14 +15220,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 80 "parser_cocci_menhir.mly" +# 58 "parser_cocci_menhir.mly" (string * Data.clt) # 15226 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_incl = -# 256 "parser_cocci_menhir.mly" +# 234 "parser_cocci_menhir.mly" ( let (x,_) = _1 in Data.Include(x) ) # 15233 "parser_cocci_menhir.ml" in @@ -15252,14 +15252,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) # 15258 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_incl = -# 257 "parser_cocci_menhir.mly" +# 235 "parser_cocci_menhir.mly" ( Data.Iso(Common.Left(P.id2name _2)) ) # 15265 "parser_cocci_menhir.ml" in @@ -15284,14 +15284,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 79 "parser_cocci_menhir.mly" +# 57 "parser_cocci_menhir.mly" (string) # 15290 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_incl = -# 258 "parser_cocci_menhir.mly" +# 236 "parser_cocci_menhir.mly" ( Data.Iso(Common.Right _2) ) # 15297 "parser_cocci_menhir.ml" in @@ -15319,7 +15319,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_incl = -# 260 "parser_cocci_menhir.mly" +# 238 "parser_cocci_menhir.mly" ( let names = List.map P.id2name _2 in (* ensure that the names of virtual and real rules don't overlap *) List.iter @@ -15352,11 +15352,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 146 "parser_cocci_menhir.mly" +# 124 "parser_cocci_menhir.mly" (Data.incl_iso list) # 15358 "parser_cocci_menhir.ml" ) = -# 252 "parser_cocci_menhir.mly" +# 230 "parser_cocci_menhir.mly" ( _1 ) # 15362 "parser_cocci_menhir.ml" in @@ -15384,11 +15384,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 146 "parser_cocci_menhir.mly" +# 124 "parser_cocci_menhir.mly" (Data.incl_iso list) # 15390 "parser_cocci_menhir.ml" ) = -# 253 "parser_cocci_menhir.mly" +# 231 "parser_cocci_menhir.mly" ( _1 ) # 15394 "parser_cocci_menhir.ml" in @@ -15409,16 +15409,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 80 "parser_cocci_menhir.mly" +# 58 "parser_cocci_menhir.mly" (string * Data.clt) # 15415 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_includes = -# 636 "parser_cocci_menhir.mly" +# 616 "parser_cocci_menhir.mly" ( Ast0.wrap - (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt _1)), + (Ast0.Include(P.clt2mcode "#include" + (P.drop_pos (P.drop_aft (P.id2clt _1))), let (arity,ln,lln,offset,col,strbef,straft,pos) = P.id2clt _1 in let clt = @@ -15426,7 +15427,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.clt2mcode (Ast.Local (Parse_aux.str2inc (P.id2name _1))) (P.drop_bef clt))) ) -# 15430 "parser_cocci_menhir.ml" +# 15431 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15445,16 +15446,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 80 "parser_cocci_menhir.mly" +# 58 "parser_cocci_menhir.mly" (string * Data.clt) -# 15451 "parser_cocci_menhir.ml" +# 15452 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_includes = -# 646 "parser_cocci_menhir.mly" +# 627 "parser_cocci_menhir.mly" ( Ast0.wrap - (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt _1)), + (Ast0.Include(P.clt2mcode "#include" + (P.drop_pos (P.drop_aft (P.id2clt _1))), let (arity,ln,lln,offset,col,strbef,straft,pos) = P.id2clt _1 in let clt = @@ -15462,7 +15464,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.clt2mcode (Ast.NonLocal (Parse_aux.str2inc (P.id2name _1))) (P.drop_bef clt))) ) -# 15466 "parser_cocci_menhir.ml" +# 15468 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15494,10 +15496,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos__3_ in let _v : 'tv_includes = -# 656 "parser_cocci_menhir.mly" +# 638 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in d (Ast0.wrap(Ast0.DOTS([ty]))) ) -# 15501 "parser_cocci_menhir.ml" +# 15503 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15529,7 +15531,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_includes = -# 659 "parser_cocci_menhir.mly" +# 641 "parser_cocci_menhir.mly" ( let body = match b with [e] -> @@ -15539,7 +15541,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | _ -> b) | _ -> b in _1 (Ast0.wrap(Ast0.DOTS(body))) ) -# 15543 "parser_cocci_menhir.ml" +# 15545 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15561,9 +15563,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize = -# 1067 "parser_cocci_menhir.mly" +# 1049 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitExpr(_1)) ) -# 15567 "parser_cocci_menhir.ml" +# 15569 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15592,22 +15594,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15598 "parser_cocci_menhir.ml" +# 15600 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15604 "parser_cocci_menhir.ml" +# 15606 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize = -# 1069 "parser_cocci_menhir.mly" +# 1051 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 15611 "parser_cocci_menhir.ml" +# 15613 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15631,23 +15633,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15637 "parser_cocci_menhir.ml" +# 15639 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15642 "parser_cocci_menhir.ml" +# 15644 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize = -# 1071 "parser_cocci_menhir.mly" +# 1053 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []), P.clt2mcode "}" _2)) ) -# 15651 "parser_cocci_menhir.ml" +# 15653 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15666,17 +15668,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 65 "parser_cocci_menhir.mly" +# 43 "parser_cocci_menhir.mly" (Parse_aux.info) -# 15672 "parser_cocci_menhir.ml" +# 15674 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize = -# 1075 "parser_cocci_menhir.mly" +# 1057 "parser_cocci_menhir.mly" (let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaInit(P.clt2mcode nm clt,pure)) ) -# 15680 "parser_cocci_menhir.ml" +# 15682 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15698,9 +15700,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize2 = -# 1081 "parser_cocci_menhir.mly" +# 1063 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitExpr(_1)) ) -# 15704 "parser_cocci_menhir.ml" +# 15706 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15729,22 +15731,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15735 "parser_cocci_menhir.ml" +# 15737 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15741 "parser_cocci_menhir.ml" +# 15743 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1083 "parser_cocci_menhir.mly" +# 1065 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 15748 "parser_cocci_menhir.ml" +# 15750 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15768,23 +15770,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15774 "parser_cocci_menhir.ml" +# 15776 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 15779 "parser_cocci_menhir.ml" +# 15781 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize2 = -# 1085 "parser_cocci_menhir.mly" +# 1067 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []), P.clt2mcode "}" _2)) ) -# 15788 "parser_cocci_menhir.ml" +# 15790 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15814,17 +15816,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_initialize2 = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 15820 "parser_cocci_menhir.ml" +# 15822 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_list_designator_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1090 "parser_cocci_menhir.mly" +# 1072 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitGccExt(_1,P.clt2mcode "=" _2,_3)) ) -# 15828 "parser_cocci_menhir.ml" +# 15830 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15854,17 +15856,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_initialize2 = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 15860 "parser_cocci_menhir.ml" +# 15862 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1092 "parser_cocci_menhir.mly" +# 1074 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitGccName(_1,P.clt2mcode ":" _2,_3)) ) -# 15868 "parser_cocci_menhir.ml" +# 15870 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15886,9 +15888,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize_list = -# 1104 "parser_cocci_menhir.mly" +# 1086 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 15892 "parser_cocci_menhir.ml" +# 15894 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15912,17 +15914,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 15918 "parser_cocci_menhir.ml" +# 15920 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_initialize2 = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize_list_start = -# 1107 "parser_cocci_menhir.mly" +# 1089 "parser_cocci_menhir.mly" ( [_1;Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))] ) -# 15926 "parser_cocci_menhir.ml" +# 15928 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15952,17 +15954,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_initialize_list_start = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 15958 "parser_cocci_menhir.ml" +# 15960 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_initialize2 = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize_list_start = -# 1109 "parser_cocci_menhir.mly" +# 1091 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))::_3 ) -# 15966 "parser_cocci_menhir.ml" +# 15968 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15990,10 +15992,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_initialize_list_start = -# 1112 "parser_cocci_menhir.mly" +# 1094 "parser_cocci_menhir.mly" ( (P.mkidots "..." d):: (List.concat(List.map (function x -> x (P.mkidots "...")) r)) ) -# 15997 "parser_cocci_menhir.ml" +# 15999 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16013,9 +16015,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_invalid = -# 1205 "parser_cocci_menhir.mly" +# 1187 "parser_cocci_menhir.mly" ( raise (Semantic_cocci.Semantic "not matchable") ) -# 16019 "parser_cocci_menhir.ml" +# 16021 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16030,9 +16032,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_is_expression = -# 248 "parser_cocci_menhir.mly" +# 226 "parser_cocci_menhir.mly" ( false ) -# 16036 "parser_cocci_menhir.ml" +# 16038 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16052,9 +16054,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_is_expression = -# 249 "parser_cocci_menhir.mly" +# 227 "parser_cocci_menhir.mly" ( true ) -# 16058 "parser_cocci_menhir.ml" +# 16060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16080,9 +16082,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_ctype_ = -# 1935 "parser_cocci_menhir.mly" +# 1917 "parser_cocci_menhir.mly" ( Common.Left t ) -# 16086 "parser_cocci_menhir.ml" +# 16088 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16108,9 +16110,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_ctype_ = -# 1936 "parser_cocci_menhir.mly" +# 1918 "parser_cocci_menhir.mly" ( Common.Right t ) -# 16114 "parser_cocci_menhir.ml" +# 16116 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16136,9 +16138,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_decl_var_ = -# 1935 "parser_cocci_menhir.mly" +# 1917 "parser_cocci_menhir.mly" ( Common.Left t ) -# 16142 "parser_cocci_menhir.ml" +# 16144 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16164,9 +16166,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_decl_var_ = -# 1936 "parser_cocci_menhir.mly" +# 1918 "parser_cocci_menhir.mly" ( Common.Right t ) -# 16170 "parser_cocci_menhir.ml" +# 16172 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16192,9 +16194,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_dexpr_ = -# 1935 "parser_cocci_menhir.mly" +# 1917 "parser_cocci_menhir.mly" ( Common.Left t ) -# 16198 "parser_cocci_menhir.ml" +# 16200 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16220,9 +16222,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_dexpr_ = -# 1936 "parser_cocci_menhir.mly" +# 1918 "parser_cocci_menhir.mly" ( Common.Right t ) -# 16226 "parser_cocci_menhir.ml" +# 16228 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16248,9 +16250,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_nest_start_ = -# 1935 "parser_cocci_menhir.mly" +# 1917 "parser_cocci_menhir.mly" ( Common.Left t ) -# 16254 "parser_cocci_menhir.ml" +# 16256 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16276,9 +16278,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_nest_start_ = -# 1936 "parser_cocci_menhir.mly" +# 1918 "parser_cocci_menhir.mly" ( Common.Right t ) -# 16282 "parser_cocci_menhir.ml" +# 16284 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16304,9 +16306,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_single_statement_ = -# 1935 "parser_cocci_menhir.mly" +# 1917 "parser_cocci_menhir.mly" ( Common.Left t ) -# 16310 "parser_cocci_menhir.ml" +# 16312 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16332,9 +16334,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_single_statement_ = -# 1936 "parser_cocci_menhir.mly" +# 1918 "parser_cocci_menhir.mly" ( Common.Right t ) -# 16338 "parser_cocci_menhir.ml" +# 16340 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16370,13 +16372,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16376 "parser_cocci_menhir.ml" +# 16378 "parser_cocci_menhir.ml" ) = -# 1907 "parser_cocci_menhir.mly" +# 1889 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.ExprTag x) e1 el ) -# 16380 "parser_cocci_menhir.ml" +# 16382 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16412,13 +16414,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16418 "parser_cocci_menhir.ml" +# 16420 "parser_cocci_menhir.ml" ) = -# 1909 "parser_cocci_menhir.mly" +# 1891 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.ArgExprTag x) e1 el ) -# 16422 "parser_cocci_menhir.ml" +# 16424 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16454,13 +16456,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16460 "parser_cocci_menhir.ml" +# 16462 "parser_cocci_menhir.ml" ) = -# 1911 "parser_cocci_menhir.mly" +# 1893 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.TestExprTag x) e1 el ) -# 16464 "parser_cocci_menhir.ml" +# 16466 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16496,13 +16498,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16502 "parser_cocci_menhir.ml" +# 16504 "parser_cocci_menhir.ml" ) = -# 1913 "parser_cocci_menhir.mly" +# 1895 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.StmtTag x) s1 sl ) -# 16506 "parser_cocci_menhir.ml" +# 16508 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16538,13 +16540,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16544 "parser_cocci_menhir.ml" +# 16546 "parser_cocci_menhir.ml" ) = -# 1915 "parser_cocci_menhir.mly" +# 1897 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.TypeCTag x) t1 tl ) -# 16548 "parser_cocci_menhir.ml" +# 16550 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16580,13 +16582,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16586 "parser_cocci_menhir.ml" +# 16588 "parser_cocci_menhir.ml" ) = -# 1917 "parser_cocci_menhir.mly" +# 1899 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.DotsStmtTag x) e1 el ) -# 16590 "parser_cocci_menhir.ml" +# 16592 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16622,11 +16624,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 16628 "parser_cocci_menhir.ml" +# 16630 "parser_cocci_menhir.ml" ) = -# 1919 "parser_cocci_menhir.mly" +# 1901 "parser_cocci_menhir.mly" ( let check_one = function [x] -> x | _ -> @@ -16641,7 +16643,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Common.Right x -> Common.Right(check_one x)) dl in P.iso_adjust (function x -> Ast0.DeclTag x) d1 dl ) -# 16645 "parser_cocci_menhir.ml" +# 16647 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16663,13 +16665,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos_m_ in let _v : ( -# 165 "parser_cocci_menhir.mly" +# 143 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 16669 "parser_cocci_menhir.ml" +# 16671 "parser_cocci_menhir.ml" ) = -# 182 "parser_cocci_menhir.mly" +# 160 "parser_cocci_menhir.mly" ( m "" ) -# 16673 "parser_cocci_menhir.ml" +# 16675 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16695,13 +16697,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_nm_ in let _endpos = _endpos__2_ in let _v : ( -# 149 "parser_cocci_menhir.mly" +# 127 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 16701 "parser_cocci_menhir.ml" +# 16703 "parser_cocci_menhir.ml" ) = -# 197 "parser_cocci_menhir.mly" +# 175 "parser_cocci_menhir.mly" ( P.make_iso_rule_name_result (P.id2name nm) ) -# 16705 "parser_cocci_menhir.ml" +# 16707 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16720,16 +16722,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 16726 "parser_cocci_menhir.ml" +# 16728 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_iter_ident = -# 1592 "parser_cocci_menhir.mly" +# 1574 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) -# 16733 "parser_cocci_menhir.ml" +# 16735 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16748,17 +16750,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 62 "parser_cocci_menhir.mly" +# 40 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 16754 "parser_cocci_menhir.ml" +# 16756 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_iter_ident = -# 1594 "parser_cocci_menhir.mly" +# 1576 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) -# 16762 "parser_cocci_menhir.ml" +# 16764 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16775,7 +16777,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_TMul_ = # 114 "standard.mly" ( [] ) -# 16779 "parser_cocci_menhir.ml" +# 16781 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16800,16 +16802,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let xs : 'tv_list_TMul_ = Obj.magic xs in let x : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 16806 "parser_cocci_menhir.ml" +# 16808 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_list_TMul_ = # 116 "standard.mly" ( x :: xs ) -# 16813 "parser_cocci_menhir.ml" +# 16815 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16826,7 +16828,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_array_dec_ = # 114 "standard.mly" ( [] ) -# 16830 "parser_cocci_menhir.ml" +# 16832 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16856,7 +16858,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_array_dec_ = # 116 "standard.mly" ( x :: xs ) -# 16860 "parser_cocci_menhir.ml" +# 16862 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16873,7 +16875,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_case_line_ = # 114 "standard.mly" ( [] ) -# 16877 "parser_cocci_menhir.ml" +# 16879 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16903,7 +16905,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_case_line_ = # 116 "standard.mly" ( x :: xs ) -# 16907 "parser_cocci_menhir.ml" +# 16909 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16920,7 +16922,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_decl__ = # 114 "standard.mly" ( [] ) -# 16924 "parser_cocci_menhir.ml" +# 16926 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16950,7 +16952,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_decl__ = # 116 "standard.mly" ( x :: xs ) -# 16954 "parser_cocci_menhir.ml" +# 16956 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16967,7 +16969,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = # 114 "standard.mly" ( [] ) -# 16971 "parser_cocci_menhir.ml" +# 16973 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16997,7 +16999,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = # 116 "standard.mly" ( x :: xs ) -# 17001 "parser_cocci_menhir.ml" +# 17003 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17014,7 +17016,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_decl_var_ = # 114 "standard.mly" ( [] ) -# 17018 "parser_cocci_menhir.ml" +# 17020 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17044,7 +17046,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_decl_var_ = # 116 "standard.mly" ( x :: xs ) -# 17048 "parser_cocci_menhir.ml" +# 17050 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17061,7 +17063,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_designator_ = # 114 "standard.mly" ( [] ) -# 17065 "parser_cocci_menhir.ml" +# 17067 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17091,7 +17093,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_designator_ = # 116 "standard.mly" ( x :: xs ) -# 17095 "parser_cocci_menhir.ml" +# 17097 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17108,7 +17110,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_dp_comma_args_TEllipsis__ = # 114 "standard.mly" ( [] ) -# 17112 "parser_cocci_menhir.ml" +# 17114 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17138,7 +17140,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_dp_comma_args_TEllipsis__ = # 116 "standard.mly" ( x :: xs ) -# 17142 "parser_cocci_menhir.ml" +# 17144 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17155,7 +17157,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_incl_ = # 114 "standard.mly" ( [] ) -# 17159 "parser_cocci_menhir.ml" +# 17161 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17185,7 +17187,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_incl_ = # 116 "standard.mly" ( x :: xs ) -# 17189 "parser_cocci_menhir.ml" +# 17191 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17202,7 +17204,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_ctype__ = # 114 "standard.mly" ( [] ) -# 17206 "parser_cocci_menhir.ml" +# 17208 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17232,7 +17234,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_ctype__ = # 116 "standard.mly" ( x :: xs ) -# 17236 "parser_cocci_menhir.ml" +# 17238 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17249,7 +17251,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_decl_var__ = # 114 "standard.mly" ( [] ) -# 17253 "parser_cocci_menhir.ml" +# 17255 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17279,7 +17281,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_decl_var__ = # 116 "standard.mly" ( x :: xs ) -# 17283 "parser_cocci_menhir.ml" +# 17285 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17296,7 +17298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_dexpr__ = # 114 "standard.mly" ( [] ) -# 17300 "parser_cocci_menhir.ml" +# 17302 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17326,7 +17328,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_dexpr__ = # 116 "standard.mly" ( x :: xs ) -# 17330 "parser_cocci_menhir.ml" +# 17332 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17343,7 +17345,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_nest_start__ = # 114 "standard.mly" ( [] ) -# 17347 "parser_cocci_menhir.ml" +# 17349 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17373,7 +17375,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_nest_start__ = # 116 "standard.mly" ( x :: xs ) -# 17377 "parser_cocci_menhir.ml" +# 17379 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17390,7 +17392,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_single_statement__ = # 114 "standard.mly" ( [] ) -# 17394 "parser_cocci_menhir.ml" +# 17396 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17420,7 +17422,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_single_statement__ = # 116 "standard.mly" ( x :: xs ) -# 17424 "parser_cocci_menhir.ml" +# 17426 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17437,7 +17439,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_ctype__ = # 114 "standard.mly" ( [] ) -# 17441 "parser_cocci_menhir.ml" +# 17443 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17467,7 +17469,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_ctype__ = # 116 "standard.mly" ( x :: xs ) -# 17471 "parser_cocci_menhir.ml" +# 17473 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17484,7 +17486,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_eexpr__ = # 114 "standard.mly" ( [] ) -# 17488 "parser_cocci_menhir.ml" +# 17490 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17514,7 +17516,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_eexpr__ = # 116 "standard.mly" ( x :: xs ) -# 17518 "parser_cocci_menhir.ml" +# 17520 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17531,7 +17533,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_after_dots_or__ = # 114 "standard.mly" ( [] ) -# 17535 "parser_cocci_menhir.ml" +# 17537 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17561,7 +17563,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_after_dots_or__ = # 116 "standard.mly" ( x :: xs ) -# 17565 "parser_cocci_menhir.ml" +# 17567 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17578,7 +17580,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_start__ = # 114 "standard.mly" ( [] ) -# 17582 "parser_cocci_menhir.ml" +# 17584 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17608,7 +17610,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_start__ = # 116 "standard.mly" ( x :: xs ) -# 17612 "parser_cocci_menhir.ml" +# 17614 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17625,7 +17627,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_rule_elem_statement__ = # 114 "standard.mly" ( [] ) -# 17629 "parser_cocci_menhir.ml" +# 17631 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17655,7 +17657,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_rule_elem_statement__ = # 116 "standard.mly" ( x :: xs ) -# 17659 "parser_cocci_menhir.ml" +# 17661 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17672,7 +17674,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_statement__ = # 114 "standard.mly" ( [] ) -# 17676 "parser_cocci_menhir.ml" +# 17678 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17702,7 +17704,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_statement__ = # 116 "standard.mly" ( x :: xs ) -# 17706 "parser_cocci_menhir.ml" +# 17708 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17719,7 +17721,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = # 114 "standard.mly" ( [] ) -# 17723 "parser_cocci_menhir.ml" +# 17725 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17758,13 +17760,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 70 "standard.mly" ( (x, y) ) -# 17762 "parser_cocci_menhir.ml" +# 17764 "parser_cocci_menhir.ml" in # 116 "standard.mly" ( x :: xs ) -# 17768 "parser_cocci_menhir.ml" +# 17770 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17781,7 +17783,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_whenppdecs_ = # 114 "standard.mly" ( [] ) -# 17785 "parser_cocci_menhir.ml" +# 17787 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17811,7 +17813,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_whenppdecs_ = # 116 "standard.mly" ( x :: xs ) -# 17815 "parser_cocci_menhir.ml" +# 17817 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17828,7 +17830,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_choose_iso_ = # 57 "standard.mly" ( [] ) -# 17832 "parser_cocci_menhir.ml" +# 17834 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17852,7 +17854,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_choose_iso_ = # 59 "standard.mly" ( x ) -# 17856 "parser_cocci_menhir.ml" +# 17858 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17869,7 +17871,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_disable_ = # 57 "standard.mly" ( [] ) -# 17873 "parser_cocci_menhir.ml" +# 17875 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17893,7 +17895,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_disable_ = # 59 "standard.mly" ( x ) -# 17897 "parser_cocci_menhir.ml" +# 17899 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17910,7 +17912,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_filespec_ = # 57 "standard.mly" ( [] ) -# 17914 "parser_cocci_menhir.ml" +# 17916 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17934,7 +17936,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_filespec_ = # 59 "standard.mly" ( x ) -# 17938 "parser_cocci_menhir.ml" +# 17940 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17951,7 +17953,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_minus_start_ = # 57 "standard.mly" ( [] ) -# 17955 "parser_cocci_menhir.ml" +# 17957 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17975,7 +17977,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_minus_start_ = # 59 "standard.mly" ( x ) -# 17979 "parser_cocci_menhir.ml" +# 17981 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17992,7 +17994,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_ceq_ = # 57 "standard.mly" ( [] ) -# 17996 "parser_cocci_menhir.ml" +# 17998 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18016,7 +18018,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_ceq_ = # 59 "standard.mly" ( x ) -# 18020 "parser_cocci_menhir.ml" +# 18022 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18033,7 +18035,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_pos_ = # 57 "standard.mly" ( [] ) -# 18037 "parser_cocci_menhir.ml" +# 18039 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18057,7 +18059,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_pos_ = # 59 "standard.mly" ( x ) -# 18061 "parser_cocci_menhir.ml" +# 18063 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18074,7 +18076,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_plus_start_ = # 57 "standard.mly" ( [] ) -# 18078 "parser_cocci_menhir.ml" +# 18080 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18098,7 +18100,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_plus_start_ = # 59 "standard.mly" ( x ) -# 18102 "parser_cocci_menhir.ml" +# 18104 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18120,9 +18122,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_meta_exp_type = -# 460 "parser_cocci_menhir.mly" +# 440 "parser_cocci_menhir.mly" ( [Ast0_cocci.ast0_type_to_type t] ) -# 18126 "parser_cocci_menhir.ml" +# 18128 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18158,11 +18160,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_m_ in let _v : 'tv_meta_exp_type = -# 462 "parser_cocci_menhir.mly" +# 442 "parser_cocci_menhir.mly" ( List.map (function x -> P.ty_pointerify (Ast0_cocci.ast0_type_to_type x) m) t ) -# 18166 "parser_cocci_menhir.ml" +# 18168 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18191,16 +18193,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_pure_ident = Obj.magic _3 in let _1 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 18197 "parser_cocci_menhir.ml" +# 18199 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_meta_ident = -# 1391 "parser_cocci_menhir.mly" +# 1373 "parser_cocci_menhir.mly" ( (Some _1,P.id2name _3) ) -# 18204 "parser_cocci_menhir.ml" +# 18206 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18222,13 +18224,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos_m_ in let _v : ( -# 157 "parser_cocci_menhir.mly" +# 135 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 18228 "parser_cocci_menhir.ml" +# 18230 "parser_cocci_menhir.ml" ) = -# 181 "parser_cocci_menhir.mly" +# 159 "parser_cocci_menhir.mly" ( m (!Ast0.rule_name) ) -# 18232 "parser_cocci_menhir.ml" +# 18234 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18271,17 +18273,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 325 "parser_cocci_menhir.mly" +# 305 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaParamDecl(arity,name)) in !Data.add_param_meta name pure; tok) ) -# 18279 "parser_cocci_menhir.ml" +# 18281 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18285 "parser_cocci_menhir.ml" +# 18287 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18328,17 +18330,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 329 "parser_cocci_menhir.mly" +# 309 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaParamListDecl(arity,name,None)) in !Data.add_paramlist_meta name None pure; tok) ) -# 18336 "parser_cocci_menhir.ml" +# 18338 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18342 "parser_cocci_menhir.ml" +# 18344 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18385,17 +18387,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 333 "parser_cocci_menhir.mly" +# 313 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaExpListDecl(arity,name,None)) in !Data.add_explist_meta name None pure; tok) ) -# 18393 "parser_cocci_menhir.ml" +# 18395 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18399 "parser_cocci_menhir.ml" +# 18401 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18438,17 +18440,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 337 "parser_cocci_menhir.mly" +# 317 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaTypeDecl(arity,name)) in !Data.add_type_meta name pure; tok) ) -# 18446 "parser_cocci_menhir.ml" +# 18448 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18452 "parser_cocci_menhir.ml" +# 18454 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18491,17 +18493,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 341 "parser_cocci_menhir.mly" +# 321 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaInitDecl(arity,name)) in !Data.add_init_meta name pure; tok) ) -# 18499 "parser_cocci_menhir.ml" +# 18501 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18505 "parser_cocci_menhir.ml" +# 18507 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18544,17 +18546,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 345 "parser_cocci_menhir.mly" +# 325 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaStmDecl(arity,name)) in !Data.add_stm_meta name pure; tok) ) -# 18552 "parser_cocci_menhir.ml" +# 18554 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18558 "parser_cocci_menhir.ml" +# 18560 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18601,17 +18603,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 349 "parser_cocci_menhir.mly" +# 329 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaStmListDecl(arity,name)) in !Data.add_stmlist_meta name pure; tok) ) -# 18609 "parser_cocci_menhir.ml" +# 18611 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18615 "parser_cocci_menhir.ml" +# 18617 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18654,18 +18656,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 353 "parser_cocci_menhir.mly" +# 333 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_type_name name; []) else raise (Semantic_cocci.Semantic "bad typedef")) ) -# 18663 "parser_cocci_menhir.ml" +# 18665 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18669 "parser_cocci_menhir.ml" +# 18671 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18712,18 +18714,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 358 "parser_cocci_menhir.mly" +# 338 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_declarer_name name; []) else raise (Semantic_cocci.Semantic "bad declarer")) ) -# 18721 "parser_cocci_menhir.ml" +# 18723 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18727 "parser_cocci_menhir.ml" +# 18729 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18770,18 +18772,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 363 "parser_cocci_menhir.mly" +# 343 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_iterator_name name; []) else raise (Semantic_cocci.Semantic "bad iterator")) ) -# 18779 "parser_cocci_menhir.ml" +# 18781 "parser_cocci_menhir.ml" in -# 270 "parser_cocci_menhir.mly" +# 248 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 18785 "parser_cocci_menhir.ml" +# 18787 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18816,17 +18818,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__4_ in let _v : 'tv_metadec = let kindfn = -# 319 "parser_cocci_menhir.mly" +# 299 "parser_cocci_menhir.mly" ( (fun name check_meta seed -> let tok = check_meta(Ast.MetaFreshIdDecl(name,seed)) in !Data.add_fresh_id_meta name; tok) ) -# 18824 "parser_cocci_menhir.ml" +# 18826 "parser_cocci_menhir.ml" in -# 273 "parser_cocci_menhir.mly" +# 251 "parser_cocci_menhir.mly" ( P.create_fresh_metadec kindfn ids ) -# 18830 "parser_cocci_menhir.ml" +# 18832 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18869,17 +18871,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 370 "parser_cocci_menhir.mly" +# 350 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaIdDecl(arity,name)) in !Data.add_id_meta name constraints pure; tok) ) -# 18877 "parser_cocci_menhir.ml" +# 18879 "parser_cocci_menhir.ml" in -# 277 "parser_cocci_menhir.mly" +# 256 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 18883 "parser_cocci_menhir.ml" +# 18885 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18922,17 +18924,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 374 "parser_cocci_menhir.mly" +# 354 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaFuncDecl(arity,name)) in !Data.add_func_meta name constraints pure; tok) ) -# 18930 "parser_cocci_menhir.ml" +# 18932 "parser_cocci_menhir.ml" in -# 277 "parser_cocci_menhir.mly" +# 256 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 18936 "parser_cocci_menhir.ml" +# 18938 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18979,18 +18981,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 378 "parser_cocci_menhir.mly" +# 358 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaLocalFuncDecl(arity,name)) in !Data.add_local_func_meta name constraints pure; tok) ) -# 18988 "parser_cocci_menhir.ml" +# 18990 "parser_cocci_menhir.ml" in -# 277 "parser_cocci_menhir.mly" +# 256 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 18994 "parser_cocci_menhir.ml" +# 18996 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19033,17 +19035,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 383 "parser_cocci_menhir.mly" +# 363 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaDeclarerDecl(arity,name)) in !Data.add_declarer_meta name constraints pure; tok) ) -# 19041 "parser_cocci_menhir.ml" +# 19043 "parser_cocci_menhir.ml" in -# 277 "parser_cocci_menhir.mly" +# 256 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19047 "parser_cocci_menhir.ml" +# 19049 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19086,17 +19088,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 387 "parser_cocci_menhir.mly" +# 367 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaIteratorDecl(arity,name)) in !Data.add_iterator_meta name constraints pure; tok) ) -# 19094 "parser_cocci_menhir.ml" +# 19096 "parser_cocci_menhir.ml" in -# 277 "parser_cocci_menhir.mly" +# 256 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19100 "parser_cocci_menhir.ml" +# 19102 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19139,17 +19141,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 393 "parser_cocci_menhir.mly" +# 373 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaErrDecl(arity,name)) in !Data.add_err_meta name constraints pure; tok) ) -# 19147 "parser_cocci_menhir.ml" +# 19149 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19153 "parser_cocci_menhir.ml" +# 19155 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19202,11 +19204,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19206 "parser_cocci_menhir.ml" +# 19208 "parser_cocci_menhir.ml" in -# 397 "parser_cocci_menhir.mly" +# 377 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> match l with None -> @@ -19215,13 +19217,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 19219 "parser_cocci_menhir.ml" +# 19221 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19225 "parser_cocci_menhir.ml" +# 19227 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19282,11 +19284,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19286 "parser_cocci_menhir.ml" +# 19288 "parser_cocci_menhir.ml" in -# 397 "parser_cocci_menhir.mly" +# 377 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> match l with None -> @@ -19295,13 +19297,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 19299 "parser_cocci_menhir.ml" +# 19301 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19305 "parser_cocci_menhir.ml" +# 19307 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19358,7 +19360,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m = m0 in let l = l0 in -# 406 "parser_cocci_menhir.mly" +# 386 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in match l with @@ -19368,13 +19370,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 19372 "parser_cocci_menhir.ml" +# 19374 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19378 "parser_cocci_menhir.ml" +# 19380 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19424,18 +19426,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let m = m0 in -# 416 "parser_cocci_menhir.mly" +# 396 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name constraints pure; tok) ) -# 19433 "parser_cocci_menhir.ml" +# 19435 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19439 "parser_cocci_menhir.ml" +# 19441 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19489,18 +19491,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let vl = vl0 in -# 421 "parser_cocci_menhir.mly" +# 401 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some (List.map (function x -> Type_cocci.Array x) vl) in let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name constraints pure; tok) ) -# 19498 "parser_cocci_menhir.ml" +# 19500 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19504 "parser_cocci_menhir.ml" +# 19506 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19546,21 +19548,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19550 "parser_cocci_menhir.ml" +# 19552 "parser_cocci_menhir.ml" in -# 426 "parser_cocci_menhir.mly" +# 406 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in !Data.add_const_meta ty name constraints pure; tok) ) -# 19558 "parser_cocci_menhir.ml" +# 19560 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19564 "parser_cocci_menhir.ml" +# 19566 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19614,21 +19616,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19618 "parser_cocci_menhir.ml" +# 19620 "parser_cocci_menhir.ml" in -# 426 "parser_cocci_menhir.mly" +# 406 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in !Data.add_const_meta ty name constraints pure; tok) ) -# 19626 "parser_cocci_menhir.ml" +# 19628 "parser_cocci_menhir.ml" in -# 281 "parser_cocci_menhir.mly" +# 261 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19632 "parser_cocci_menhir.ml" +# 19634 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19671,17 +19673,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 432 "parser_cocci_menhir.mly" +# 412 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaExpDecl(arity,name,None)) in !Data.add_exp_meta None name (Ast0.NotExpCstrt constraints) pure; tok) ) -# 19679 "parser_cocci_menhir.ml" +# 19681 "parser_cocci_menhir.ml" in -# 285 "parser_cocci_menhir.mly" +# 265 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19685 "parser_cocci_menhir.ml" +# 19687 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19727,7 +19729,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let vl = vl0 in -# 436 "parser_cocci_menhir.mly" +# 416 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some vl in List.iter @@ -19748,13 +19750,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name (Ast0.NotExpCstrt constraints) pure; tok) ) -# 19752 "parser_cocci_menhir.ml" +# 19754 "parser_cocci_menhir.ml" in -# 285 "parser_cocci_menhir.mly" +# 265 "parser_cocci_menhir.mly" ( P.create_metadec_with_constraints ar ispure kindfn ids ) -# 19758 "parser_cocci_menhir.ml" +# 19760 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19796,7 +19798,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__5_ in let _v : 'tv_metadec = -# 291 "parser_cocci_menhir.mly" +# 271 "parser_cocci_menhir.mly" ( (if !Data.in_generating then failwith "position variables not allowed in a generated rule file"); let kindfn arity name pure check_meta constraints = @@ -19804,7 +19806,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let any = match a with None -> Ast.PER | Some _ -> Ast.ALL in !Data.add_pos_meta name constraints any; tok in P.create_metadec_with_constraints ar false kindfn ids ) -# 19808 "parser_cocci_menhir.ml" +# 19810 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19864,14 +19866,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__9_ in let _v : 'tv_metadec = -# 301 "parser_cocci_menhir.mly" +# 281 "parser_cocci_menhir.mly" ( P.create_len_metadec ar ispure (fun lenname arity name pure check_meta -> let tok = check_meta(Ast.MetaParamListDecl(arity,name,Some lenname)) in !Data.add_paramlist_meta name (Some lenname) pure; tok) id ids ) -# 19875 "parser_cocci_menhir.ml" +# 19877 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19931,14 +19933,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__9_ in let _v : 'tv_metadec = -# 310 "parser_cocci_menhir.mly" +# 290 "parser_cocci_menhir.mly" ( P.create_len_metadec ar ispure (fun lenname arity name pure check_meta -> let tok = check_meta(Ast.MetaExpListDecl(arity,name,Some lenname)) in !Data.add_explist_meta name (Some lenname) pure; tok) id ids ) -# 19942 "parser_cocci_menhir.ml" +# 19944 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19966,9 +19968,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_ctype_ctype_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 19972 "parser_cocci_menhir.ml" +# 19974 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19996,9 +19998,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_eexpr_eexpr_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20002 "parser_cocci_menhir.ml" +# 20004 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20026,9 +20028,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_expr_eexpr_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20032 "parser_cocci_menhir.ml" +# 20034 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20056,9 +20058,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20062 "parser_cocci_menhir.ml" +# 20064 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20086,9 +20088,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_fun_start_fun_start_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20092 "parser_cocci_menhir.ml" +# 20094 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20116,9 +20118,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20122 "parser_cocci_menhir.ml" +# 20124 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20146,9 +20148,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_statement_statement_ = -# 1877 "parser_cocci_menhir.mly" +# 1859 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 20152 "parser_cocci_menhir.ml" +# 20154 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20176,11 +20178,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_b_ in let _v : 'tv_minus_body = -# 604 "parser_cocci_menhir.mly" +# 584 "parser_cocci_menhir.mly" ( match f@b(*@ew*) with [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty") | code -> Top_level.top_level code ) -# 20184 "parser_cocci_menhir.ml" +# 20186 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20208,11 +20210,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_b_ in let _v : 'tv_minus_exp_body = -# 618 "parser_cocci_menhir.mly" +# 598 "parser_cocci_menhir.mly" ( match f@[b](*@ew*) with [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty") | code -> Top_level.top_level code ) -# 20216 "parser_cocci_menhir.ml" +# 20218 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20238,13 +20240,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 137 "parser_cocci_menhir.mly" +# 115 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20244 "parser_cocci_menhir.ml" +# 20246 "parser_cocci_menhir.ml" ) = -# 177 "parser_cocci_menhir.mly" +# 155 "parser_cocci_menhir.mly" ( _1 ) -# 20248 "parser_cocci_menhir.ml" +# 20250 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20270,13 +20272,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos__2_ in let _v : ( -# 137 "parser_cocci_menhir.mly" +# 115 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20276 "parser_cocci_menhir.ml" +# 20278 "parser_cocci_menhir.ml" ) = -# 177 "parser_cocci_menhir.mly" +# 155 "parser_cocci_menhir.mly" ( m ) -# 20280 "parser_cocci_menhir.ml" +# 20282 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20302,13 +20304,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos__2_ in let _v : ( -# 137 "parser_cocci_menhir.mly" +# 115 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20308 "parser_cocci_menhir.ml" +# 20310 "parser_cocci_menhir.ml" ) = -# 178 "parser_cocci_menhir.mly" +# 156 "parser_cocci_menhir.mly" ( m ) -# 20312 "parser_cocci_menhir.ml" +# 20314 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20334,13 +20336,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 134 "parser_cocci_menhir.mly" +# 112 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20340 "parser_cocci_menhir.ml" +# 20342 "parser_cocci_menhir.ml" ) = -# 173 "parser_cocci_menhir.mly" +# 151 "parser_cocci_menhir.mly" ( _1 ) -# 20344 "parser_cocci_menhir.ml" +# 20346 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20366,13 +20368,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos__2_ in let _v : ( -# 134 "parser_cocci_menhir.mly" +# 112 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20372 "parser_cocci_menhir.ml" +# 20374 "parser_cocci_menhir.ml" ) = -# 173 "parser_cocci_menhir.mly" +# 151 "parser_cocci_menhir.mly" ( m ) -# 20376 "parser_cocci_menhir.ml" +# 20378 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20398,13 +20400,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_m_ in let _endpos = _endpos__2_ in let _v : ( -# 134 "parser_cocci_menhir.mly" +# 112 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 20404 "parser_cocci_menhir.ml" +# 20406 "parser_cocci_menhir.ml" ) = -# 174 "parser_cocci_menhir.mly" +# 152 "parser_cocci_menhir.mly" ( m ) -# 20408 "parser_cocci_menhir.ml" +# 20410 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20426,9 +20428,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1686 "parser_cocci_menhir.mly" +# 1668 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.DECL(_1))] ) -# 20432 "parser_cocci_menhir.ml" +# 20434 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20450,9 +20452,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1687 "parser_cocci_menhir.mly" +# 1669 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] ) -# 20456 "parser_cocci_menhir.ml" +# 20458 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20474,9 +20476,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1688 "parser_cocci_menhir.mly" +# 1670 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] ) -# 20480 "parser_cocci_menhir.ml" +# 20482 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20498,9 +20500,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1690 "parser_cocci_menhir.mly" +# 1672 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1 ) -# 20504 "parser_cocci_menhir.ml" +# 20506 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20525,16 +20527,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_ctype = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20531 "parser_cocci_menhir.ml" +# 20533 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_ctype_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20538 "parser_cocci_menhir.ml" +# 20540 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20559,16 +20561,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_eexpr = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20565 "parser_cocci_menhir.ml" +# 20567 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_eexpr_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20572 "parser_cocci_menhir.ml" +# 20574 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20593,16 +20595,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_fun_after_dots_or = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20599 "parser_cocci_menhir.ml" +# 20601 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_fun_after_dots_or_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20606 "parser_cocci_menhir.ml" +# 20608 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20627,16 +20629,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_fun_start = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20633 "parser_cocci_menhir.ml" +# 20635 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_fun_start_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20640 "parser_cocci_menhir.ml" +# 20642 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20661,16 +20663,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_rule_elem_statement = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20667 "parser_cocci_menhir.ml" +# 20669 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_rule_elem_statement_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20674 "parser_cocci_menhir.ml" +# 20676 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20695,16 +20697,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_statement = Obj.magic b in let a : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20701 "parser_cocci_menhir.ml" +# 20703 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_statement_ = -# 1880 "parser_cocci_menhir.mly" +# 1862 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 20708 "parser_cocci_menhir.ml" +# 20710 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20726,9 +20728,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_name_opt_decl = -# 825 "parser_cocci_menhir.mly" +# 807 "parser_cocci_menhir.mly" ( _1 ) -# 20732 "parser_cocci_menhir.ml" +# 20734 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20777,43 +20779,43 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20783 "parser_cocci_menhir.ml" +# 20785 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 20789 "parser_cocci_menhir.ml" +# 20791 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 20794 "parser_cocci_menhir.ml" +# 20796 "parser_cocci_menhir.ml" ) = Obj.magic rp in let s : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 20799 "parser_cocci_menhir.ml" +# 20801 "parser_cocci_menhir.ml" ) = Obj.magic s in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 20804 "parser_cocci_menhir.ml" +# 20806 "parser_cocci_menhir.ml" ) = Obj.magic lp in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_rp1_ in let _v : 'tv_name_opt_decl = -# 828 "parser_cocci_menhir.mly" +# 810 "parser_cocci_menhir.mly" ( let fnptr = Ast0.wrap (Ast0.FunctionPointer (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp, P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in Ast0.wrap(Ast0.Param(fnptr, None)) ) -# 20817 "parser_cocci_menhir.ml" +# 20819 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20841,9 +20843,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1801 "parser_cocci_menhir.mly" +# 1783 "parser_cocci_menhir.mly" (_1@_2) -# 20847 "parser_cocci_menhir.ml" +# 20849 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20869,9 +20871,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1802 "parser_cocci_menhir.mly" +# 1784 "parser_cocci_menhir.mly" (_2) -# 20875 "parser_cocci_menhir.ml" +# 20877 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20899,9 +20901,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1803 "parser_cocci_menhir.mly" +# 1785 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 20905 "parser_cocci_menhir.ml" +# 20907 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20916,9 +20918,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_nest_after_exp = -# 1811 "parser_cocci_menhir.mly" +# 1793 "parser_cocci_menhir.mly" ([]) -# 20922 "parser_cocci_menhir.ml" +# 20924 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20946,9 +20948,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_exp = -# 1812 "parser_cocci_menhir.mly" +# 1794 "parser_cocci_menhir.mly" (_1::_2) -# 20952 "parser_cocci_menhir.ml" +# 20954 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20963,9 +20965,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_nest_after_stm = -# 1806 "parser_cocci_menhir.mly" +# 1788 "parser_cocci_menhir.mly" ([]) -# 20969 "parser_cocci_menhir.ml" +# 20971 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20993,9 +20995,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_stm = -# 1807 "parser_cocci_menhir.mly" +# 1789 "parser_cocci_menhir.mly" (_1::_2) -# 20999 "parser_cocci_menhir.ml" +# 21001 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21023,9 +21025,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_stm = -# 1808 "parser_cocci_menhir.mly" +# 1790 "parser_cocci_menhir.mly" (_1@_2) -# 21029 "parser_cocci_menhir.ml" +# 21031 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21054,24 +21056,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 21060 "parser_cocci_menhir.ml" +# 21062 "parser_cocci_menhir.ml" ) = Obj.magic c in let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 21066 "parser_cocci_menhir.ml" +# 21068 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_nest_expressions = -# 1214 "parser_cocci_menhir.mly" +# 1196 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<..." _1, Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))), P.clt2mcode "...>" c, None, false)) ) -# 21075 "parser_cocci_menhir.ml" +# 21077 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21100,24 +21102,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 21106 "parser_cocci_menhir.ml" +# 21108 "parser_cocci_menhir.ml" ) = Obj.magic c in let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 21112 "parser_cocci_menhir.ml" +# 21114 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_nest_expressions = -# 1218 "parser_cocci_menhir.mly" +# 1200 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<+..." _1, Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))), P.clt2mcode "...+>" c, None, true)) ) -# 21121 "parser_cocci_menhir.ml" +# 21123 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21139,9 +21141,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_nest_start = -# 1798 "parser_cocci_menhir.mly" +# 1780 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 21145 "parser_cocci_menhir.ml" +# 21147 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21161,13 +21163,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : ( -# 168 "parser_cocci_menhir.mly" +# 146 "parser_cocci_menhir.mly" (unit) -# 21167 "parser_cocci_menhir.ml" +# 21169 "parser_cocci_menhir.ml" ) = -# 1943 "parser_cocci_menhir.mly" +# 1925 "parser_cocci_menhir.mly" ( () ) -# 21171 "parser_cocci_menhir.ml" +# 21173 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21191,13 +21193,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 168 "parser_cocci_menhir.mly" +# 146 "parser_cocci_menhir.mly" (unit) -# 21197 "parser_cocci_menhir.ml" +# 21199 "parser_cocci_menhir.ml" ) = -# 1944 "parser_cocci_menhir.mly" +# 1926 "parser_cocci_menhir.mly" ( () ) -# 21201 "parser_cocci_menhir.ml" +# 21203 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21217,13 +21219,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : ( -# 168 "parser_cocci_menhir.mly" +# 146 "parser_cocci_menhir.mly" (unit) -# 21223 "parser_cocci_menhir.ml" +# 21225 "parser_cocci_menhir.ml" ) = -# 1945 "parser_cocci_menhir.mly" +# 1927 "parser_cocci_menhir.mly" ( () ) -# 21227 "parser_cocci_menhir.ml" +# 21229 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21251,10 +21253,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_g_ in let _endpos = _endpos_dg_ in let _v : 'tv_no_dot_start_end_dexpr_edots_when_TEllipsis_eexpr__ = -# 1382 "parser_cocci_menhir.mly" +# 1364 "parser_cocci_menhir.mly" ( function dot_builder -> g :: (List.concat(List.map (function (d,g) -> [dot_builder d;g]) dg)) ) -# 21258 "parser_cocci_menhir.ml" +# 21260 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21273,16 +21275,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let x : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 21279 "parser_cocci_menhir.ml" +# 21281 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : 'tv_nonempty_list_TMul_ = # 124 "standard.mly" ( [ x ] ) -# 21286 "parser_cocci_menhir.ml" +# 21288 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21307,16 +21309,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let xs : 'tv_nonempty_list_TMul_ = Obj.magic xs in let x : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 21313 "parser_cocci_menhir.ml" +# 21315 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_nonempty_list_TMul_ = # 126 "standard.mly" ( x :: xs ) -# 21320 "parser_cocci_menhir.ml" +# 21322 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21342,13 +21344,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_ceq = -# 1519 "parser_cocci_menhir.mly" +# 1501 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); [i] ) -# 21352 "parser_cocci_menhir.ml" +# 21354 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21382,13 +21384,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_ceq = -# 1525 "parser_cocci_menhir.mly" +# 1507 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); l ) -# 21392 "parser_cocci_menhir.ml" +# 21394 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21414,14 +21416,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_eqe = -# 1500 "parser_cocci_menhir.mly" +# 1482 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); [Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i))))] ) -# 21425 "parser_cocci_menhir.ml" +# 21427 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21455,7 +21457,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_eqe = -# 1507 "parser_cocci_menhir.mly" +# 1489 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -21465,7 +21467,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i))))) l ) -# 21469 "parser_cocci_menhir.ml" +# 21471 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21491,7 +21493,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_eqid = -# 1479 "parser_cocci_menhir.mly" +# 1461 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -21499,7 +21501,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct them in the pattern *) then failwith "constraints not allowed in a generated rule file"); Ast.IdNegIdSet([fst i]) ) -# 21503 "parser_cocci_menhir.ml" +# 21505 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21533,14 +21535,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_eqid = -# 1487 "parser_cocci_menhir.mly" +# 1469 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); Ast.IdNegIdSet(List.map fst l) ) -# 21544 "parser_cocci_menhir.ml" +# 21546 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21566,7 +21568,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_pos = -# 1539 "parser_cocci_menhir.mly" +# 1521 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -21577,7 +21579,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = (rule,name) in P.check_meta(Ast.MetaPosDecl(Ast.NONE,i)); [i] ) -# 21581 "parser_cocci_menhir.ml" +# 21583 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21611,7 +21613,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_pos = -# 1550 "parser_cocci_menhir.mly" +# 1532 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -21625,7 +21627,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.check_meta(Ast.MetaPosDecl(Ast.NONE,i)); i) l ) -# 21629 "parser_cocci_menhir.ml" +# 21631 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21647,9 +21649,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_decl_ = -# 1624 "parser_cocci_menhir.mly" +# 1606 "parser_cocci_menhir.mly" ( _1 ) -# 21653 "parser_cocci_menhir.ml" +# 21655 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21668,14 +21670,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 66 "parser_cocci_menhir.mly" +# 44 "parser_cocci_menhir.mly" (Parse_aux.list_info) -# 21674 "parser_cocci_menhir.ml" +# 21676 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_decl_ = -# 1626 "parser_cocci_menhir.mly" +# 1608 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -21683,7 +21685,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Some nm -> Some(P.clt2mcode nm clt) | None -> None in Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) ) -# 21687 "parser_cocci_menhir.ml" +# 21689 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21705,9 +21707,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_name_opt_decl_ = -# 1624 "parser_cocci_menhir.mly" +# 1606 "parser_cocci_menhir.mly" ( _1 ) -# 21711 "parser_cocci_menhir.ml" +# 21713 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21726,14 +21728,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 66 "parser_cocci_menhir.mly" +# 44 "parser_cocci_menhir.mly" (Parse_aux.list_info) -# 21732 "parser_cocci_menhir.ml" +# 21734 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_name_opt_decl_ = -# 1626 "parser_cocci_menhir.mly" +# 1608 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -21741,7 +21743,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Some nm -> Some(P.clt2mcode nm clt) | None -> None in Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) ) -# 21745 "parser_cocci_menhir.ml" +# 21747 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21765,17 +21767,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 21771 "parser_cocci_menhir.ml" +# 21773 "parser_cocci_menhir.ml" ) = Obj.magic pv in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_one_decl_var = -# 1003 "parser_cocci_menhir.mly" +# 985 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv)) ) -# 21779 "parser_cocci_menhir.ml" +# 21781 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21804,9 +21806,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 21810 "parser_cocci_menhir.ml" +# 21812 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -21816,14 +21818,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 21820 "parser_cocci_menhir.ml" +# 21822 "parser_cocci_menhir.ml" in -# 1005 "parser_cocci_menhir.mly" +# 987 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 21827 "parser_cocci_menhir.ml" +# 21829 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21857,9 +21859,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 21863 "parser_cocci_menhir.ml" +# 21865 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -21871,14 +21873,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 21875 "parser_cocci_menhir.ml" +# 21877 "parser_cocci_menhir.ml" in -# 1005 "parser_cocci_menhir.mly" +# 987 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 21882 "parser_cocci_menhir.ml" +# 21884 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21900,9 +21902,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_f_ in let _v : 'tv_one_decl_var = -# 1007 "parser_cocci_menhir.mly" +# 989 "parser_cocci_menhir.mly" ( f ) -# 21906 "parser_cocci_menhir.ml" +# 21908 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21941,15 +21943,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 21947 "parser_cocci_menhir.ml" +# 21949 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 21953 "parser_cocci_menhir.ml" +# 21955 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -21959,14 +21961,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 21963 "parser_cocci_menhir.ml" +# 21965 "parser_cocci_menhir.ml" in -# 1009 "parser_cocci_menhir.mly" +# 991 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) ) -# 21970 "parser_cocci_menhir.ml" +# 21972 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22010,15 +22012,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22016 "parser_cocci_menhir.ml" +# 22018 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22022 "parser_cocci_menhir.ml" +# 22024 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -22030,14 +22032,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22034 "parser_cocci_menhir.ml" +# 22036 "parser_cocci_menhir.ml" in -# 1009 "parser_cocci_menhir.mly" +# 991 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) ) -# 22041 "parser_cocci_menhir.ml" +# 22043 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22066,9 +22068,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22072 "parser_cocci_menhir.ml" +# 22074 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22078,22 +22080,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 22082 "parser_cocci_menhir.ml" +# 22084 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 22089 "parser_cocci_menhir.ml" +# 22091 "parser_cocci_menhir.ml" in -# 1014 "parser_cocci_menhir.mly" +# 996 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 22097 "parser_cocci_menhir.ml" +# 22099 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22127,9 +22129,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22133 "parser_cocci_menhir.ml" +# 22135 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22141,22 +22143,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22145 "parser_cocci_menhir.ml" +# 22147 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 22152 "parser_cocci_menhir.ml" +# 22154 "parser_cocci_menhir.ml" in -# 1014 "parser_cocci_menhir.mly" +# 996 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 22160 "parser_cocci_menhir.ml" +# 22162 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22190,9 +22192,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22196 "parser_cocci_menhir.ml" +# 22198 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22203,7 +22205,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 22207 "parser_cocci_menhir.ml" +# 22209 "parser_cocci_menhir.ml" in let s = @@ -22211,15 +22213,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22215 "parser_cocci_menhir.ml" +# 22217 "parser_cocci_menhir.ml" in -# 1014 "parser_cocci_menhir.mly" +# 996 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 22223 "parser_cocci_menhir.ml" +# 22225 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22258,9 +22260,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22264 "parser_cocci_menhir.ml" +# 22266 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22273,7 +22275,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22277 "parser_cocci_menhir.ml" +# 22279 "parser_cocci_menhir.ml" in let s = @@ -22281,15 +22283,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22285 "parser_cocci_menhir.ml" +# 22287 "parser_cocci_menhir.ml" in -# 1014 "parser_cocci_menhir.mly" +# 996 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 22293 "parser_cocci_menhir.ml" +# 22295 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22328,15 +22330,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22334 "parser_cocci_menhir.ml" +# 22336 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22340 "parser_cocci_menhir.ml" +# 22342 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22346,24 +22348,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 22350 "parser_cocci_menhir.ml" +# 22352 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 22357 "parser_cocci_menhir.ml" +# 22359 "parser_cocci_menhir.ml" in -# 1019 "parser_cocci_menhir.mly" +# 1001 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 22367 "parser_cocci_menhir.ml" +# 22369 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22407,15 +22409,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22413 "parser_cocci_menhir.ml" +# 22415 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22419 "parser_cocci_menhir.ml" +# 22421 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22427,24 +22429,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22431 "parser_cocci_menhir.ml" +# 22433 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 22438 "parser_cocci_menhir.ml" +# 22440 "parser_cocci_menhir.ml" in -# 1019 "parser_cocci_menhir.mly" +# 1001 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 22448 "parser_cocci_menhir.ml" +# 22450 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22488,15 +22490,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22494 "parser_cocci_menhir.ml" +# 22496 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22500 "parser_cocci_menhir.ml" +# 22502 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22507,7 +22509,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 22511 "parser_cocci_menhir.ml" +# 22513 "parser_cocci_menhir.ml" in let s = @@ -22515,17 +22517,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22519 "parser_cocci_menhir.ml" +# 22521 "parser_cocci_menhir.ml" in -# 1019 "parser_cocci_menhir.mly" +# 1001 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 22529 "parser_cocci_menhir.ml" +# 22531 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22574,15 +22576,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22580 "parser_cocci_menhir.ml" +# 22582 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22586 "parser_cocci_menhir.ml" +# 22588 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -22595,7 +22597,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22599 "parser_cocci_menhir.ml" +# 22601 "parser_cocci_menhir.ml" in let s = @@ -22603,17 +22605,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22607 "parser_cocci_menhir.ml" +# 22609 "parser_cocci_menhir.ml" in -# 1019 "parser_cocci_menhir.mly" +# 1001 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 22617 "parser_cocci_menhir.ml" +# 22619 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22672,36 +22674,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22678 "parser_cocci_menhir.ml" +# 22680 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22683 "parser_cocci_menhir.ml" +# 22685 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22689 "parser_cocci_menhir.ml" +# 22691 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22694 "parser_cocci_menhir.ml" +# 22696 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 22700 "parser_cocci_menhir.ml" +# 22702 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22705 "parser_cocci_menhir.ml" +# 22707 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -22710,11 +22712,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 22714 "parser_cocci_menhir.ml" +# 22716 "parser_cocci_menhir.ml" in -# 1029 "parser_cocci_menhir.mly" +# 1011 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -22722,7 +22724,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 22726 "parser_cocci_menhir.ml" +# 22728 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22786,36 +22788,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22792 "parser_cocci_menhir.ml" +# 22794 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22797 "parser_cocci_menhir.ml" +# 22799 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22803 "parser_cocci_menhir.ml" +# 22805 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22808 "parser_cocci_menhir.ml" +# 22810 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 22814 "parser_cocci_menhir.ml" +# 22816 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22819 "parser_cocci_menhir.ml" +# 22821 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -22826,11 +22828,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 22830 "parser_cocci_menhir.ml" +# 22832 "parser_cocci_menhir.ml" in -# 1029 "parser_cocci_menhir.mly" +# 1011 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -22838,7 +22840,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 22842 "parser_cocci_menhir.ml" +# 22844 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22877,29 +22879,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _5 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22883 "parser_cocci_menhir.ml" +# 22885 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22888 "parser_cocci_menhir.ml" +# 22890 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22894 "parser_cocci_menhir.ml" +# 22896 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_decl_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_one_decl_var = -# 1037 "parser_cocci_menhir.mly" +# 1019 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3, P.clt2mcode ")" _4,P.clt2mcode ";" _5)) ) -# 22903 "parser_cocci_menhir.ml" +# 22905 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22968,42 +22970,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22974 "parser_cocci_menhir.ml" +# 22976 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 22980 "parser_cocci_menhir.ml" +# 22982 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22985 "parser_cocci_menhir.ml" +# 22987 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 22991 "parser_cocci_menhir.ml" +# 22993 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 22996 "parser_cocci_menhir.ml" +# 22998 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 23002 "parser_cocci_menhir.ml" +# 23004 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 23007 "parser_cocci_menhir.ml" +# 23009 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -23012,11 +23014,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 23016 "parser_cocci_menhir.ml" +# 23018 "parser_cocci_menhir.ml" in -# 1043 "parser_cocci_menhir.mly" +# 1025 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -23024,7 +23026,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))) -# 23028 "parser_cocci_menhir.ml" +# 23030 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23098,42 +23100,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 23104 "parser_cocci_menhir.ml" +# 23106 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 23110 "parser_cocci_menhir.ml" +# 23112 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 23115 "parser_cocci_menhir.ml" +# 23117 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 23121 "parser_cocci_menhir.ml" +# 23123 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 23126 "parser_cocci_menhir.ml" +# 23128 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 23132 "parser_cocci_menhir.ml" +# 23134 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 23137 "parser_cocci_menhir.ml" +# 23139 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -23144,11 +23146,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 23148 "parser_cocci_menhir.ml" +# 23150 "parser_cocci_menhir.ml" in -# 1043 "parser_cocci_menhir.mly" +# 1025 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -23156,7 +23158,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))) -# 23160 "parser_cocci_menhir.ml" +# 23162 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23173,7 +23175,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TLocal_ = # 29 "standard.mly" ( None ) -# 23177 "parser_cocci_menhir.ml" +# 23179 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23197,7 +23199,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TLocal_ = # 31 "standard.mly" ( Some x ) -# 23201 "parser_cocci_menhir.ml" +# 23203 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23214,7 +23216,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TPosAny_ = # 29 "standard.mly" ( None ) -# 23218 "parser_cocci_menhir.ml" +# 23220 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23238,7 +23240,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TPosAny_ = # 31 "standard.mly" ( Some x ) -# 23242 "parser_cocci_menhir.ml" +# 23244 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23255,7 +23257,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_eexpr_ = # 29 "standard.mly" ( None ) -# 23259 "parser_cocci_menhir.ml" +# 23261 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23279,7 +23281,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_eexpr_ = # 31 "standard.mly" ( Some x ) -# 23283 "parser_cocci_menhir.ml" +# 23285 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23296,7 +23298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_re_or_not_eqe_ = # 29 "standard.mly" ( None ) -# 23300 "parser_cocci_menhir.ml" +# 23302 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23320,7 +23322,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_re_or_not_eqe_ = # 31 "standard.mly" ( Some x ) -# 23324 "parser_cocci_menhir.ml" +# 23326 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23337,7 +23339,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_re_or_not_eqid_ = # 29 "standard.mly" ( None ) -# 23341 "parser_cocci_menhir.ml" +# 23343 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23361,7 +23363,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_re_or_not_eqid_ = # 31 "standard.mly" ( Some x ) -# 23365 "parser_cocci_menhir.ml" +# 23367 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23376,9 +23378,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_dots = -# 1748 "parser_cocci_menhir.mly" +# 1730 "parser_cocci_menhir.mly" ([]) -# 23382 "parser_cocci_menhir.ml" +# 23384 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23404,9 +23406,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1749 "parser_cocci_menhir.mly" +# 1731 "parser_cocci_menhir.mly" (_2) -# 23410 "parser_cocci_menhir.ml" +# 23412 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23434,9 +23436,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1751 "parser_cocci_menhir.mly" +# 1733 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 ) -# 23440 "parser_cocci_menhir.ml" +# 23442 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23464,9 +23466,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1752 "parser_cocci_menhir.mly" +# 1734 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 23470 "parser_cocci_menhir.ml" +# 23472 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23494,9 +23496,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1754 "parser_cocci_menhir.mly" +# 1736 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 23500 "parser_cocci_menhir.ml" +# 23502 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23511,9 +23513,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_exp = -# 1744 "parser_cocci_menhir.mly" +# 1726 "parser_cocci_menhir.mly" ([]) -# 23517 "parser_cocci_menhir.ml" +# 23519 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23541,9 +23543,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_exp = -# 1745 "parser_cocci_menhir.mly" +# 1727 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 23547 "parser_cocci_menhir.ml" +# 23549 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23558,9 +23560,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_stm = -# 1757 "parser_cocci_menhir.mly" +# 1739 "parser_cocci_menhir.mly" ([]) -# 23564 "parser_cocci_menhir.ml" +# 23566 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23588,9 +23590,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1758 "parser_cocci_menhir.mly" +# 1740 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 23594 "parser_cocci_menhir.ml" +# 23596 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23618,9 +23620,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1759 "parser_cocci_menhir.mly" +# 1741 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 23624 "parser_cocci_menhir.ml" +# 23626 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23648,9 +23650,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1761 "parser_cocci_menhir.mly" +# 1743 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 23654 "parser_cocci_menhir.ml" +# 23656 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23678,9 +23680,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_b_ in let _v : 'tv_plus_body = -# 612 "parser_cocci_menhir.mly" +# 592 "parser_cocci_menhir.mly" ( Top_level.top_level (f@b(*@ew*)) ) -# 23684 "parser_cocci_menhir.ml" +# 23686 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23708,9 +23710,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_b_ in let _v : 'tv_plus_exp_body = -# 626 "parser_cocci_menhir.mly" +# 606 "parser_cocci_menhir.mly" ( Top_level.top_level (f@[b](*@ew*)) ) -# 23714 "parser_cocci_menhir.ml" +# 23716 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23736,13 +23738,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 143 "parser_cocci_menhir.mly" +# 121 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23742 "parser_cocci_menhir.ml" +# 23744 "parser_cocci_menhir.ml" ) = -# 179 "parser_cocci_menhir.mly" +# 157 "parser_cocci_menhir.mly" ( _1 ) -# 23746 "parser_cocci_menhir.ml" +# 23748 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23768,13 +23770,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_p_ in let _endpos = _endpos__2_ in let _v : ( -# 143 "parser_cocci_menhir.mly" +# 121 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23774 "parser_cocci_menhir.ml" +# 23776 "parser_cocci_menhir.ml" ) = -# 179 "parser_cocci_menhir.mly" +# 157 "parser_cocci_menhir.mly" ( p ) -# 23778 "parser_cocci_menhir.ml" +# 23780 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23800,13 +23802,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_p_ in let _endpos = _endpos__2_ in let _v : ( -# 143 "parser_cocci_menhir.mly" +# 121 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23806 "parser_cocci_menhir.ml" +# 23808 "parser_cocci_menhir.ml" ) = -# 180 "parser_cocci_menhir.mly" +# 158 "parser_cocci_menhir.mly" ( p ) -# 23810 "parser_cocci_menhir.ml" +# 23812 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23832,13 +23834,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : ( -# 140 "parser_cocci_menhir.mly" +# 118 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23838 "parser_cocci_menhir.ml" +# 23840 "parser_cocci_menhir.ml" ) = -# 175 "parser_cocci_menhir.mly" +# 153 "parser_cocci_menhir.mly" ( _1 ) -# 23842 "parser_cocci_menhir.ml" +# 23844 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23864,13 +23866,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_p_ in let _endpos = _endpos__2_ in let _v : ( -# 140 "parser_cocci_menhir.mly" +# 118 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23870 "parser_cocci_menhir.ml" +# 23872 "parser_cocci_menhir.ml" ) = -# 175 "parser_cocci_menhir.mly" +# 153 "parser_cocci_menhir.mly" ( p ) -# 23874 "parser_cocci_menhir.ml" +# 23876 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23896,13 +23898,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_p_ in let _endpos = _endpos__2_ in let _v : ( -# 140 "parser_cocci_menhir.mly" +# 118 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 23902 "parser_cocci_menhir.ml" +# 23904 "parser_cocci_menhir.ml" ) = -# 176 "parser_cocci_menhir.mly" +# 154 "parser_cocci_menhir.mly" ( p ) -# 23906 "parser_cocci_menhir.ml" +# 23908 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23924,9 +23926,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_plus_start = -# 1733 "parser_cocci_menhir.mly" +# 1715 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] ) -# 23930 "parser_cocci_menhir.ml" +# 23932 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23948,9 +23950,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_plus_start = -# 1734 "parser_cocci_menhir.mly" +# 1716 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] ) -# 23954 "parser_cocci_menhir.ml" +# 23956 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23978,9 +23980,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1736 "parser_cocci_menhir.mly" +# 1718 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 23984 "parser_cocci_menhir.ml" +# 23986 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24008,9 +24010,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1738 "parser_cocci_menhir.mly" +# 1720 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 ) -# 24014 "parser_cocci_menhir.ml" +# 24016 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24038,9 +24040,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1739 "parser_cocci_menhir.mly" +# 1721 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 24044 "parser_cocci_menhir.ml" +# 24046 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24068,9 +24070,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1741 "parser_cocci_menhir.mly" +# 1723 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 24074 "parser_cocci_menhir.ml" +# 24076 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24089,16 +24091,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 24095 "parser_cocci_menhir.ml" +# 24097 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pnrule = -# 230 "parser_cocci_menhir.mly" +# 208 "parser_cocci_menhir.mly" ( Ast.Dep _1 ) -# 24102 "parser_cocci_menhir.ml" +# 24104 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24121,16 +24123,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 24127 "parser_cocci_menhir.ml" +# 24129 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 231 "parser_cocci_menhir.mly" +# 209 "parser_cocci_menhir.mly" ( Ast.AntiDep _2 ) -# 24134 "parser_cocci_menhir.ml" +# 24136 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24153,16 +24155,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 24159 "parser_cocci_menhir.ml" +# 24161 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 232 "parser_cocci_menhir.mly" +# 210 "parser_cocci_menhir.mly" ( Ast.EverDep _2 ) -# 24166 "parser_cocci_menhir.ml" +# 24168 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24185,16 +24187,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 24191 "parser_cocci_menhir.ml" +# 24193 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 233 "parser_cocci_menhir.mly" +# 211 "parser_cocci_menhir.mly" ( Ast.NeverDep _2 ) -# 24198 "parser_cocci_menhir.ml" +# 24200 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24224,9 +24226,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_pnrule = -# 234 "parser_cocci_menhir.mly" +# 212 "parser_cocci_menhir.mly" ( _2 ) -# 24230 "parser_cocci_menhir.ml" +# 24232 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24248,9 +24250,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1315 "parser_cocci_menhir.mly" +# 1297 "parser_cocci_menhir.mly" ( _1 ) -# 24254 "parser_cocci_menhir.ml" +# 24256 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24284,24 +24286,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24290 "parser_cocci_menhir.ml" +# 24292 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24296 "parser_cocci_menhir.ml" +# 24298 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1317 "parser_cocci_menhir.mly" +# 1299 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 24305 "parser_cocci_menhir.ml" +# 24307 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24331,17 +24333,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 24337 "parser_cocci_menhir.ml" +# 24339 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1320 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 24345 "parser_cocci_menhir.ml" +# 24347 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24371,18 +24373,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 104 "parser_cocci_menhir.mly" +# 82 "parser_cocci_menhir.mly" (Data.clt) -# 24377 "parser_cocci_menhir.ml" +# 24379 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1322 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 24386 "parser_cocci_menhir.ml" +# 24388 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24406,17 +24408,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24412 "parser_cocci_menhir.ml" +# 24414 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1325 "parser_cocci_menhir.mly" +# 1307 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 24420 "parser_cocci_menhir.ml" +# 24422 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24440,17 +24442,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24446 "parser_cocci_menhir.ml" +# 24448 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1327 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 24454 "parser_cocci_menhir.ml" +# 24456 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24484,25 +24486,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 24490 "parser_cocci_menhir.ml" +# 24492 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 24496 "parser_cocci_menhir.ml" +# 24498 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1329 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 24506 "parser_cocci_menhir.ml" +# 24508 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24524,9 +24526,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1315 "parser_cocci_menhir.mly" +# 1297 "parser_cocci_menhir.mly" ( _1 ) -# 24530 "parser_cocci_menhir.ml" +# 24532 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24560,24 +24562,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24566 "parser_cocci_menhir.ml" +# 24568 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24572 "parser_cocci_menhir.ml" +# 24574 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1317 "parser_cocci_menhir.mly" +# 1299 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 24581 "parser_cocci_menhir.ml" +# 24583 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24607,17 +24609,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 24613 "parser_cocci_menhir.ml" +# 24615 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1320 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 24621 "parser_cocci_menhir.ml" +# 24623 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24647,18 +24649,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 104 "parser_cocci_menhir.mly" +# 82 "parser_cocci_menhir.mly" (Data.clt) -# 24653 "parser_cocci_menhir.ml" +# 24655 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1322 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 24662 "parser_cocci_menhir.ml" +# 24664 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24682,17 +24684,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24688 "parser_cocci_menhir.ml" +# 24690 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1325 "parser_cocci_menhir.mly" +# 1307 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 24696 "parser_cocci_menhir.ml" +# 24698 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24716,17 +24718,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24722 "parser_cocci_menhir.ml" +# 24724 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1327 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 24730 "parser_cocci_menhir.ml" +# 24732 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24760,25 +24762,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 24766 "parser_cocci_menhir.ml" +# 24768 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 24772 "parser_cocci_menhir.ml" +# 24774 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1329 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 24782 "parser_cocci_menhir.ml" +# 24784 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24800,9 +24802,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1315 "parser_cocci_menhir.mly" +# 1297 "parser_cocci_menhir.mly" ( _1 ) -# 24806 "parser_cocci_menhir.ml" +# 24808 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24836,24 +24838,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24842 "parser_cocci_menhir.ml" +# 24844 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 24848 "parser_cocci_menhir.ml" +# 24850 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1317 "parser_cocci_menhir.mly" +# 1299 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 24857 "parser_cocci_menhir.ml" +# 24859 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24883,17 +24885,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 24889 "parser_cocci_menhir.ml" +# 24891 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1320 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 24897 "parser_cocci_menhir.ml" +# 24899 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24923,18 +24925,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 104 "parser_cocci_menhir.mly" +# 82 "parser_cocci_menhir.mly" (Data.clt) -# 24929 "parser_cocci_menhir.ml" +# 24931 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1322 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 24938 "parser_cocci_menhir.ml" +# 24940 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24958,17 +24960,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24964 "parser_cocci_menhir.ml" +# 24966 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1325 "parser_cocci_menhir.mly" +# 1307 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 24972 "parser_cocci_menhir.ml" +# 24974 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24992,17 +24994,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 24998 "parser_cocci_menhir.ml" +# 25000 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1327 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 25006 "parser_cocci_menhir.ml" +# 25008 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25036,25 +25038,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 25042 "parser_cocci_menhir.ml" +# 25044 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 25048 "parser_cocci_menhir.ml" +# 25050 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1329 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 25058 "parser_cocci_menhir.ml" +# 25060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25076,9 +25078,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1315 "parser_cocci_menhir.mly" +# 1297 "parser_cocci_menhir.mly" ( _1 ) -# 25082 "parser_cocci_menhir.ml" +# 25084 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25112,24 +25114,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 25118 "parser_cocci_menhir.ml" +# 25120 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 102 "parser_cocci_menhir.mly" +# 80 "parser_cocci_menhir.mly" (Data.clt) -# 25124 "parser_cocci_menhir.ml" +# 25126 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1317 "parser_cocci_menhir.mly" +# 1299 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 25133 "parser_cocci_menhir.ml" +# 25135 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25159,17 +25161,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 25165 "parser_cocci_menhir.ml" +# 25167 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1320 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 25173 "parser_cocci_menhir.ml" +# 25175 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25199,18 +25201,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_ident = Obj.magic _3 in let _2 : ( -# 104 "parser_cocci_menhir.mly" +# 82 "parser_cocci_menhir.mly" (Data.clt) -# 25205 "parser_cocci_menhir.ml" +# 25207 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1322 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 25214 "parser_cocci_menhir.ml" +# 25216 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25234,17 +25236,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 25240 "parser_cocci_menhir.ml" +# 25242 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1325 "parser_cocci_menhir.mly" +# 1307 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 25248 "parser_cocci_menhir.ml" +# 25250 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25268,17 +25270,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 25274 "parser_cocci_menhir.ml" +# 25276 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1327 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 25282 "parser_cocci_menhir.ml" +# 25284 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25312,25 +25314,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 25318 "parser_cocci_menhir.ml" +# 25320 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 25324 "parser_cocci_menhir.ml" +# 25326 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1329 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 25334 "parser_cocci_menhir.ml" +# 25336 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25352,9 +25354,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1334 "parser_cocci_menhir.mly" +# 1316 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 25358 "parser_cocci_menhir.ml" +# 25360 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25373,17 +25375,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25379 "parser_cocci_menhir.ml" +# 25381 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1336 "parser_cocci_menhir.mly" +# 1318 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 25387 "parser_cocci_menhir.ml" +# 25389 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25402,17 +25404,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25408 "parser_cocci_menhir.ml" +# 25410 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1339 "parser_cocci_menhir.mly" +# 1321 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 25416 "parser_cocci_menhir.ml" +# 25418 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25431,17 +25433,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25437 "parser_cocci_menhir.ml" +# 25439 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1342 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 25445 "parser_cocci_menhir.ml" +# 25447 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25460,17 +25462,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25466 "parser_cocci_menhir.ml" +# 25468 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1345 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 25474 "parser_cocci_menhir.ml" +# 25476 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25489,18 +25491,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25495 "parser_cocci_menhir.ml" +# 25497 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1348 "parser_cocci_menhir.mly" +# 1330 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 25504 "parser_cocci_menhir.ml" +# 25506 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25519,17 +25521,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 63 "parser_cocci_menhir.mly" +# 41 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 25525 "parser_cocci_menhir.ml" +# 25527 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1352 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 25533 "parser_cocci_menhir.ml" +# 25535 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25548,18 +25550,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25554 "parser_cocci_menhir.ml" +# 25556 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1355 "parser_cocci_menhir.mly" +# 1337 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 25563 "parser_cocci_menhir.ml" +# 25565 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25578,18 +25580,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25584 "parser_cocci_menhir.ml" +# 25586 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1359 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 25593 "parser_cocci_menhir.ml" +# 25595 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25608,18 +25610,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25614 "parser_cocci_menhir.ml" +# 25616 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1363 "parser_cocci_menhir.mly" +# 1345 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 25623 "parser_cocci_menhir.ml" +# 25625 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25648,23 +25650,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 25654 "parser_cocci_menhir.ml" +# 25656 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 25660 "parser_cocci_menhir.ml" +# 25662 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1367 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 25668 "parser_cocci_menhir.ml" +# 25670 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25693,25 +25695,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 25699 "parser_cocci_menhir.ml" +# 25701 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 25705 "parser_cocci_menhir.ml" +# 25707 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1370 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 25715 "parser_cocci_menhir.ml" +# 25717 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25733,9 +25735,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1374 "parser_cocci_menhir.mly" +# 1356 "parser_cocci_menhir.mly" ( _1 ) -# 25739 "parser_cocci_menhir.ml" +# 25741 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25757,9 +25759,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1334 "parser_cocci_menhir.mly" +# 1316 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 25763 "parser_cocci_menhir.ml" +# 25765 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25778,17 +25780,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25784 "parser_cocci_menhir.ml" +# 25786 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1336 "parser_cocci_menhir.mly" +# 1318 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 25792 "parser_cocci_menhir.ml" +# 25794 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25807,17 +25809,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25813 "parser_cocci_menhir.ml" +# 25815 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1339 "parser_cocci_menhir.mly" +# 1321 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 25821 "parser_cocci_menhir.ml" +# 25823 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25836,17 +25838,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25842 "parser_cocci_menhir.ml" +# 25844 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1342 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 25850 "parser_cocci_menhir.ml" +# 25852 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25865,17 +25867,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 25871 "parser_cocci_menhir.ml" +# 25873 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1345 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 25879 "parser_cocci_menhir.ml" +# 25881 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25894,18 +25896,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25900 "parser_cocci_menhir.ml" +# 25902 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1348 "parser_cocci_menhir.mly" +# 1330 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 25909 "parser_cocci_menhir.ml" +# 25911 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25924,17 +25926,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 63 "parser_cocci_menhir.mly" +# 41 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 25930 "parser_cocci_menhir.ml" +# 25932 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1352 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 25938 "parser_cocci_menhir.ml" +# 25940 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25953,18 +25955,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25959 "parser_cocci_menhir.ml" +# 25961 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1355 "parser_cocci_menhir.mly" +# 1337 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 25968 "parser_cocci_menhir.ml" +# 25970 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25983,18 +25985,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 25989 "parser_cocci_menhir.ml" +# 25991 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1359 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 25998 "parser_cocci_menhir.ml" +# 26000 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26013,18 +26015,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26019 "parser_cocci_menhir.ml" +# 26021 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1363 "parser_cocci_menhir.mly" +# 1345 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 26028 "parser_cocci_menhir.ml" +# 26030 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26053,23 +26055,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26059 "parser_cocci_menhir.ml" +# 26061 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26065 "parser_cocci_menhir.ml" +# 26067 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1367 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 26073 "parser_cocci_menhir.ml" +# 26075 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26098,25 +26100,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26104 "parser_cocci_menhir.ml" +# 26106 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26110 "parser_cocci_menhir.ml" +# 26112 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1370 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 26120 "parser_cocci_menhir.ml" +# 26122 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26138,9 +26140,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1374 "parser_cocci_menhir.mly" +# 1356 "parser_cocci_menhir.mly" ( _1 ) -# 26144 "parser_cocci_menhir.ml" +# 26146 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26162,9 +26164,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1334 "parser_cocci_menhir.mly" +# 1316 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 26168 "parser_cocci_menhir.ml" +# 26170 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26183,17 +26185,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26189 "parser_cocci_menhir.ml" +# 26191 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1336 "parser_cocci_menhir.mly" +# 1318 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 26197 "parser_cocci_menhir.ml" +# 26199 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26212,17 +26214,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26218 "parser_cocci_menhir.ml" +# 26220 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1339 "parser_cocci_menhir.mly" +# 1321 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 26226 "parser_cocci_menhir.ml" +# 26228 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26241,17 +26243,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26247 "parser_cocci_menhir.ml" +# 26249 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1342 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 26255 "parser_cocci_menhir.ml" +# 26257 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26270,17 +26272,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26276 "parser_cocci_menhir.ml" +# 26278 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1345 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 26284 "parser_cocci_menhir.ml" +# 26286 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26299,18 +26301,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26305 "parser_cocci_menhir.ml" +# 26307 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1348 "parser_cocci_menhir.mly" +# 1330 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 26314 "parser_cocci_menhir.ml" +# 26316 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26329,17 +26331,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 63 "parser_cocci_menhir.mly" +# 41 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 26335 "parser_cocci_menhir.ml" +# 26337 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1352 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 26343 "parser_cocci_menhir.ml" +# 26345 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26358,18 +26360,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26364 "parser_cocci_menhir.ml" +# 26366 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1355 "parser_cocci_menhir.mly" +# 1337 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 26373 "parser_cocci_menhir.ml" +# 26375 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26388,18 +26390,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26394 "parser_cocci_menhir.ml" +# 26396 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1359 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 26403 "parser_cocci_menhir.ml" +# 26405 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26418,18 +26420,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26424 "parser_cocci_menhir.ml" +# 26426 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1363 "parser_cocci_menhir.mly" +# 1345 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 26433 "parser_cocci_menhir.ml" +# 26435 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26458,23 +26460,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26464 "parser_cocci_menhir.ml" +# 26466 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26470 "parser_cocci_menhir.ml" +# 26472 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1367 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 26478 "parser_cocci_menhir.ml" +# 26480 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26503,25 +26505,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26509 "parser_cocci_menhir.ml" +# 26511 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26515 "parser_cocci_menhir.ml" +# 26517 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1370 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 26525 "parser_cocci_menhir.ml" +# 26527 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26543,9 +26545,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1374 "parser_cocci_menhir.mly" +# 1356 "parser_cocci_menhir.mly" ( _1 ) -# 26549 "parser_cocci_menhir.ml" +# 26551 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26567,9 +26569,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1334 "parser_cocci_menhir.mly" +# 1316 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 26573 "parser_cocci_menhir.ml" +# 26575 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26588,17 +26590,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26594 "parser_cocci_menhir.ml" +# 26596 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1336 "parser_cocci_menhir.mly" +# 1318 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 26602 "parser_cocci_menhir.ml" +# 26604 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26617,17 +26619,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26623 "parser_cocci_menhir.ml" +# 26625 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1339 "parser_cocci_menhir.mly" +# 1321 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 26631 "parser_cocci_menhir.ml" +# 26633 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26646,17 +26648,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26652 "parser_cocci_menhir.ml" +# 26654 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1342 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 26660 "parser_cocci_menhir.ml" +# 26662 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26675,17 +26677,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 26681 "parser_cocci_menhir.ml" +# 26683 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1345 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 26689 "parser_cocci_menhir.ml" +# 26691 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26704,18 +26706,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26710 "parser_cocci_menhir.ml" +# 26712 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1348 "parser_cocci_menhir.mly" +# 1330 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 26719 "parser_cocci_menhir.ml" +# 26721 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26734,17 +26736,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 63 "parser_cocci_menhir.mly" +# 41 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 26740 "parser_cocci_menhir.ml" +# 26742 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1352 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 26748 "parser_cocci_menhir.ml" +# 26750 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26763,18 +26765,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26769 "parser_cocci_menhir.ml" +# 26771 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1355 "parser_cocci_menhir.mly" +# 1337 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 26778 "parser_cocci_menhir.ml" +# 26780 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26793,18 +26795,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26799 "parser_cocci_menhir.ml" +# 26801 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1359 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 26808 "parser_cocci_menhir.ml" +# 26810 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26823,18 +26825,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 67 "parser_cocci_menhir.mly" +# 45 "parser_cocci_menhir.mly" (Parse_aux.typed_expinfo) -# 26829 "parser_cocci_menhir.ml" +# 26831 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1363 "parser_cocci_menhir.mly" +# 1345 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 26838 "parser_cocci_menhir.ml" +# 26840 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26863,23 +26865,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26869 "parser_cocci_menhir.ml" +# 26871 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26875 "parser_cocci_menhir.ml" +# 26877 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1367 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 26883 "parser_cocci_menhir.ml" +# 26885 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26908,25 +26910,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 26914 "parser_cocci_menhir.ml" +# 26916 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_expr_eexpr_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 26920 "parser_cocci_menhir.ml" +# 26922 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1370 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 26930 "parser_cocci_menhir.ml" +# 26932 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26948,9 +26950,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1374 "parser_cocci_menhir.mly" +# 1356 "parser_cocci_menhir.mly" ( _1 ) -# 26954 "parser_cocci_menhir.ml" +# 26956 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26970,9 +26972,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure = -# 190 "parser_cocci_menhir.mly" +# 168 "parser_cocci_menhir.mly" ( Ast0.Pure ) -# 26976 "parser_cocci_menhir.ml" +# 26978 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26992,9 +26994,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure = -# 191 "parser_cocci_menhir.mly" +# 169 "parser_cocci_menhir.mly" ( Ast0.Context ) -# 26998 "parser_cocci_menhir.ml" +# 27000 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27018,9 +27020,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pure = -# 192 "parser_cocci_menhir.mly" +# 170 "parser_cocci_menhir.mly" ( Ast0.PureContext ) -# 27024 "parser_cocci_menhir.ml" +# 27026 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27044,9 +27046,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pure = -# 193 "parser_cocci_menhir.mly" +# 171 "parser_cocci_menhir.mly" ( Ast0.PureContext ) -# 27050 "parser_cocci_menhir.ml" +# 27052 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27061,9 +27063,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_pure = -# 194 "parser_cocci_menhir.mly" +# 172 "parser_cocci_menhir.mly" ( Ast0.Impure ) -# 27067 "parser_cocci_menhir.ml" +# 27069 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27082,16 +27084,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 27088 "parser_cocci_menhir.ml" +# 27090 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident = -# 1388 "parser_cocci_menhir.mly" +# 1370 "parser_cocci_menhir.mly" ( _1 ) -# 27095 "parser_cocci_menhir.ml" +# 27097 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27113,9 +27115,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1394 "parser_cocci_menhir.mly" +# 1376 "parser_cocci_menhir.mly" ( (None,P.id2name _1) ) -# 27119 "parser_cocci_menhir.ml" +# 27121 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27137,9 +27139,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1395 "parser_cocci_menhir.mly" +# 1377 "parser_cocci_menhir.mly" ( _1 ) -# 27143 "parser_cocci_menhir.ml" +# 27145 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27159,9 +27161,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1396 "parser_cocci_menhir.mly" +# 1378 "parser_cocci_menhir.mly" ( (None, "identifier") ) -# 27165 "parser_cocci_menhir.ml" +# 27167 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27181,9 +27183,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1397 "parser_cocci_menhir.mly" +# 1379 "parser_cocci_menhir.mly" ( (None, "expression") ) -# 27187 "parser_cocci_menhir.ml" +# 27189 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27203,9 +27205,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1398 "parser_cocci_menhir.mly" +# 1380 "parser_cocci_menhir.mly" ( (None, "statement") ) -# 27209 "parser_cocci_menhir.ml" +# 27211 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27225,9 +27227,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1399 "parser_cocci_menhir.mly" +# 1381 "parser_cocci_menhir.mly" ( (None, "function") ) -# 27231 "parser_cocci_menhir.ml" +# 27233 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27247,9 +27249,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1400 "parser_cocci_menhir.mly" +# 1382 "parser_cocci_menhir.mly" ( (None, "local") ) -# 27253 "parser_cocci_menhir.ml" +# 27255 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27269,9 +27271,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1401 "parser_cocci_menhir.mly" +# 1383 "parser_cocci_menhir.mly" ( (None, "type") ) -# 27275 "parser_cocci_menhir.ml" +# 27277 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27291,9 +27293,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1402 "parser_cocci_menhir.mly" +# 1384 "parser_cocci_menhir.mly" ( (None, "parameter") ) -# 27297 "parser_cocci_menhir.ml" +# 27299 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27313,9 +27315,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1403 "parser_cocci_menhir.mly" +# 1385 "parser_cocci_menhir.mly" ( (None, "idexpression") ) -# 27319 "parser_cocci_menhir.ml" +# 27321 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27335,9 +27337,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1404 "parser_cocci_menhir.mly" +# 1386 "parser_cocci_menhir.mly" ( (None, "initialiser") ) -# 27341 "parser_cocci_menhir.ml" +# 27343 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27357,9 +27359,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1405 "parser_cocci_menhir.mly" +# 1387 "parser_cocci_menhir.mly" ( (None, "list") ) -# 27363 "parser_cocci_menhir.ml" +# 27365 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27379,9 +27381,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1406 "parser_cocci_menhir.mly" +# 1388 "parser_cocci_menhir.mly" ( (None, "fresh") ) -# 27385 "parser_cocci_menhir.ml" +# 27387 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27401,9 +27403,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1407 "parser_cocci_menhir.mly" +# 1389 "parser_cocci_menhir.mly" ( (None, "constant") ) -# 27407 "parser_cocci_menhir.ml" +# 27409 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27423,9 +27425,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1408 "parser_cocci_menhir.mly" +# 1390 "parser_cocci_menhir.mly" ( (None, "error") ) -# 27429 "parser_cocci_menhir.ml" +# 27431 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27445,9 +27447,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1409 "parser_cocci_menhir.mly" +# 1391 "parser_cocci_menhir.mly" ( (None, "words") ) -# 27451 "parser_cocci_menhir.ml" +# 27453 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27467,9 +27469,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1410 "parser_cocci_menhir.mly" +# 1392 "parser_cocci_menhir.mly" ( (None, "pure") ) -# 27473 "parser_cocci_menhir.ml" +# 27475 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27489,9 +27491,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1411 "parser_cocci_menhir.mly" +# 1393 "parser_cocci_menhir.mly" ( (None, "context") ) -# 27495 "parser_cocci_menhir.ml" +# 27497 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27511,9 +27513,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1412 "parser_cocci_menhir.mly" +# 1394 "parser_cocci_menhir.mly" ( (None, "generated") ) -# 27517 "parser_cocci_menhir.ml" +# 27519 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27533,9 +27535,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1413 "parser_cocci_menhir.mly" +# 1395 "parser_cocci_menhir.mly" ( (None, "typedef") ) -# 27539 "parser_cocci_menhir.ml" +# 27541 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27555,9 +27557,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1414 "parser_cocci_menhir.mly" +# 1396 "parser_cocci_menhir.mly" ( (None, "declarer") ) -# 27561 "parser_cocci_menhir.ml" +# 27563 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27577,9 +27579,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1415 "parser_cocci_menhir.mly" +# 1397 "parser_cocci_menhir.mly" ( (None, "iterator") ) -# 27583 "parser_cocci_menhir.ml" +# 27585 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27599,9 +27601,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1416 "parser_cocci_menhir.mly" +# 1398 "parser_cocci_menhir.mly" ( (None, "name") ) -# 27605 "parser_cocci_menhir.ml" +# 27607 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27621,9 +27623,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1417 "parser_cocci_menhir.mly" +# 1399 "parser_cocci_menhir.mly" ( (None, "position") ) -# 27627 "parser_cocci_menhir.ml" +# 27629 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27651,13 +27653,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_optc_ in let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_ = -# 1443 "parser_cocci_menhir.mly" +# 1425 "parser_cocci_menhir.mly" ( match optc with None -> (i, Ast0.NoConstraint) | Some c -> (i, c) ) -# 27661 "parser_cocci_menhir.ml" +# 27663 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27685,13 +27687,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_c_ in let _v : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = -# 1451 "parser_cocci_menhir.mly" +# 1433 "parser_cocci_menhir.mly" ( match c with None -> (i, Ast.IdNoConstraint) | Some constraint_ -> (i,constraint_) ) -# 27695 "parser_cocci_menhir.ml" +# 27697 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27713,9 +27715,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident_with_seed = -# 1420 "parser_cocci_menhir.mly" +# 1402 "parser_cocci_menhir.mly" ( (_1,Ast.NoVal) ) -# 27719 "parser_cocci_menhir.ml" +# 27721 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27747,11 +27749,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_pure_ident_or_meta_ident_with_seed = -# 1423 "parser_cocci_menhir.mly" +# 1405 "parser_cocci_menhir.mly" ( match _3 with [Ast.SeedString s] -> (_1,Ast.StringSeed s) | _ -> (_1,Ast.ListSeed _3) ) -# 27755 "parser_cocci_menhir.ml" +# 27757 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27779,11 +27781,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_x_eq_not_ceq_ = -# 1437 "parser_cocci_menhir.mly" +# 1419 "parser_cocci_menhir.mly" ( (i, l) ) -# 27787 "parser_cocci_menhir.ml" +# 27789 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27811,11 +27813,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_x_eq_not_pos_ = -# 1437 "parser_cocci_menhir.mly" +# 1419 "parser_cocci_menhir.mly" ( (i, l) ) -# 27819 "parser_cocci_menhir.ml" +# 27821 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27837,9 +27839,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_re_ in let _endpos = _endpos_re_ in let _v : 'tv_re_or_not_eqe = -# 1495 "parser_cocci_menhir.mly" +# 1477 "parser_cocci_menhir.mly" (Ast0.NotIdCstrt (re)) -# 27843 "parser_cocci_menhir.ml" +# 27845 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27861,9 +27863,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ne_ in let _endpos = _endpos_ne_ in let _v : 'tv_re_or_not_eqe = -# 1496 "parser_cocci_menhir.mly" +# 1478 "parser_cocci_menhir.mly" (Ast0.NotExpCstrt (ne)) -# 27867 "parser_cocci_menhir.ml" +# 27869 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27885,9 +27887,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_re_ in let _endpos = _endpos_re_ in let _v : 'tv_re_or_not_eqid = -# 1458 "parser_cocci_menhir.mly" +# 1440 "parser_cocci_menhir.mly" (re) -# 27891 "parser_cocci_menhir.ml" +# 27893 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27909,9 +27911,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ne_ in let _endpos = _endpos_ne_ in let _v : 'tv_re_or_not_eqid = -# 1459 "parser_cocci_menhir.mly" +# 1441 "parser_cocci_menhir.mly" (ne) -# 27915 "parser_cocci_menhir.ml" +# 27917 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27934,21 +27936,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let re : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 27940 "parser_cocci_menhir.ml" +# 27942 "parser_cocci_menhir.ml" ) = Obj.magic re in let _startpos = _startpos__1_ in let _endpos = _endpos_re_ in let _v : 'tv_regexp_eqid = -# 1463 "parser_cocci_menhir.mly" +# 1445 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); let (s,_) = re in Ast.IdRegExp (s,Str.regexp s) ) -# 27952 "parser_cocci_menhir.ml" +# 27954 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27971,21 +27973,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let re : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 27977 "parser_cocci_menhir.ml" +# 27979 "parser_cocci_menhir.ml" ) = Obj.magic re in let _startpos = _startpos__1_ in let _endpos = _endpos_re_ in let _v : 'tv_regexp_eqid = -# 1470 "parser_cocci_menhir.mly" +# 1452 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); let (s,_) = re in Ast.IdNotRegExp (s,Str.regexp s) ) -# 27989 "parser_cocci_menhir.ml" +# 27991 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28000,13 +28002,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : ( -# 131 "parser_cocci_menhir.mly" +# 109 "parser_cocci_menhir.mly" (unit) -# 28006 "parser_cocci_menhir.ml" +# 28008 "parser_cocci_menhir.ml" ) = -# 172 "parser_cocci_menhir.mly" +# 150 "parser_cocci_menhir.mly" ( ) -# 28010 "parser_cocci_menhir.ml" +# 28012 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28028,9 +28030,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_rule_elem_statement = -# 900 "parser_cocci_menhir.mly" +# 882 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),_1)) ) -# 28034 "parser_cocci_menhir.ml" +# 28036 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28054,17 +28056,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 28060 "parser_cocci_menhir.ml" +# 28062 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_expr = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 901 "parser_cocci_menhir.mly" +# 883 "parser_cocci_menhir.mly" ( P.exp_stm _1 _2 ) -# 28068 "parser_cocci_menhir.ml" +# 28070 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28093,22 +28095,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 28099 "parser_cocci_menhir.ml" +# 28101 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 28105 "parser_cocci_menhir.ml" +# 28107 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_rule_elem_statement = -# 902 "parser_cocci_menhir.mly" +# 884 "parser_cocci_menhir.mly" ( P.ret_exp _1 _2 _3 ) -# 28112 "parser_cocci_menhir.ml" +# 28114 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28132,21 +28134,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 28138 "parser_cocci_menhir.ml" +# 28140 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 28143 "parser_cocci_menhir.ml" +# 28145 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 903 "parser_cocci_menhir.mly" +# 885 "parser_cocci_menhir.mly" ( P.ret _1 _2 ) -# 28150 "parser_cocci_menhir.ml" +# 28152 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28170,21 +28172,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 28176 "parser_cocci_menhir.ml" +# 28178 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 28181 "parser_cocci_menhir.ml" +# 28183 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 904 "parser_cocci_menhir.mly" +# 886 "parser_cocci_menhir.mly" ( P.break _1 _2 ) -# 28188 "parser_cocci_menhir.ml" +# 28190 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28208,21 +28210,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 28214 "parser_cocci_menhir.ml" +# 28216 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 28219 "parser_cocci_menhir.ml" +# 28221 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 905 "parser_cocci_menhir.mly" +# 887 "parser_cocci_menhir.mly" ( P.cont _1 _2 ) -# 28226 "parser_cocci_menhir.ml" +# 28228 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28251,26 +28253,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 28257 "parser_cocci_menhir.ml" +# 28259 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 28263 "parser_cocci_menhir.ml" +# 28265 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_rule_elem_statement = -# 907 "parser_cocci_menhir.mly" +# 889 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap (Ast0.Disj(P.clt2mcode "(" _1, List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code, mids, P.clt2mcode ")" _3)) ) -# 28274 "parser_cocci_menhir.ml" +# 28276 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28324,20 +28326,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28330 "parser_cocci_menhir.ml" +# 28332 "parser_cocci_menhir.ml" ) = let nm = # 39 "standard.mly" ( None ) -# 28335 "parser_cocci_menhir.ml" +# 28337 "parser_cocci_menhir.ml" in -# 202 "parser_cocci_menhir.mly" +# 180 "parser_cocci_menhir.mly" ( P.make_cocci_rule_name_result nm d i a e ee ) -# 28341 "parser_cocci_menhir.ml" +# 28343 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28397,21 +28399,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_x0_ in let _endpos = _endpos__8_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28403 "parser_cocci_menhir.ml" +# 28405 "parser_cocci_menhir.ml" ) = let nm = let x = x0 in # 41 "standard.mly" ( Some x ) -# 28409 "parser_cocci_menhir.ml" +# 28411 "parser_cocci_menhir.ml" in -# 202 "parser_cocci_menhir.mly" +# 180 "parser_cocci_menhir.mly" ( P.make_cocci_rule_name_result nm d i a e ee ) -# 28415 "parser_cocci_menhir.ml" +# 28417 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28469,13 +28471,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__8_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28475 "parser_cocci_menhir.ml" +# 28477 "parser_cocci_menhir.ml" ) = -# 207 "parser_cocci_menhir.mly" +# 185 "parser_cocci_menhir.mly" ( P.make_generated_rule_name_result None d i a e ee ) -# 28479 "parser_cocci_menhir.ml" +# 28481 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28515,13 +28517,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28521 "parser_cocci_menhir.ml" +# 28523 "parser_cocci_menhir.ml" ) = -# 209 "parser_cocci_menhir.mly" +# 187 "parser_cocci_menhir.mly" ( P.make_script_rule_name_result lang d ) -# 28525 "parser_cocci_menhir.ml" +# 28527 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28555,13 +28557,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28561 "parser_cocci_menhir.ml" +# 28563 "parser_cocci_menhir.ml" ) = -# 211 "parser_cocci_menhir.mly" +# 189 "parser_cocci_menhir.mly" ( P.make_initial_script_rule_name_result lang ) -# 28565 "parser_cocci_menhir.ml" +# 28567 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28595,13 +28597,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 28601 "parser_cocci_menhir.ml" +# 28603 "parser_cocci_menhir.ml" ) = -# 213 "parser_cocci_menhir.mly" +# 191 "parser_cocci_menhir.mly" ( P.make_final_script_rule_name_result lang ) -# 28605 "parser_cocci_menhir.ml" +# 28607 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28643,21 +28645,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let cocci : 'tv_pure_ident = Obj.magic cocci in let _3 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 28649 "parser_cocci_menhir.ml" +# 28651 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let py : 'tv_pure_ident = Obj.magic py in let _startpos = _startpos_py_ in let _endpos = _endpos__6_ in let _v : ( -# 159 "parser_cocci_menhir.mly" +# 137 "parser_cocci_menhir.mly" (string * (string * string)) -# 28657 "parser_cocci_menhir.ml" +# 28659 "parser_cocci_menhir.ml" ) = -# 1948 "parser_cocci_menhir.mly" +# 1930 "parser_cocci_menhir.mly" ( (P.id2name py, (_3, P.id2name cocci)) ) -# 28661 "parser_cocci_menhir.ml" +# 28663 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28676,16 +28678,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 28682 "parser_cocci_menhir.ml" +# 28684 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_seed_elem = -# 1428 "parser_cocci_menhir.mly" +# 1410 "parser_cocci_menhir.mly" ( let (x,_) = _1 in Ast.SeedString x ) -# 28689 "parser_cocci_menhir.ml" +# 28691 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28704,16 +28706,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 61 "parser_cocci_menhir.mly" +# 39 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 28710 "parser_cocci_menhir.ml" +# 28712 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_seed_elem = -# 1429 "parser_cocci_menhir.mly" +# 1411 "parser_cocci_menhir.mly" ( let (x,_,_,_) = _1 in Ast.SeedId x ) -# 28717 "parser_cocci_menhir.ml" +# 28719 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28742,18 +28744,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _3 : 'tv_pure_ident = Obj.magic _3 in let _1 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 28748 "parser_cocci_menhir.ml" +# 28750 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_seed_elem = -# 1431 "parser_cocci_menhir.mly" +# 1413 "parser_cocci_menhir.mly" ( let nm = (_1,P.id2name _3) in P.check_meta(Ast.MetaIdDecl(Ast.NONE,nm)); Ast.SeedId nm ) -# 28757 "parser_cocci_menhir.ml" +# 28759 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28772,16 +28774,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let x : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 28778 "parser_cocci_menhir.ml" +# 28780 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : 'tv_separated_nonempty_list_TComma_TString_ = # 144 "standard.mly" ( [ x ] ) -# 28785 "parser_cocci_menhir.ml" +# 28787 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28810,16 +28812,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let xs : 'tv_separated_nonempty_list_TComma_TString_ = Obj.magic xs in let x : ( -# 87 "parser_cocci_menhir.mly" +# 65 "parser_cocci_menhir.mly" (string * Data.clt) -# 28816 "parser_cocci_menhir.ml" +# 28818 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_separated_nonempty_list_TComma_TString_ = # 146 "standard.mly" ( x :: xs ) -# 28823 "parser_cocci_menhir.ml" +# 28825 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28843,7 +28845,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = # 144 "standard.mly" ( [ x ] ) -# 28847 "parser_cocci_menhir.ml" +# 28849 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28877,7 +28879,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = # 146 "standard.mly" ( x :: xs ) -# 28881 "parser_cocci_menhir.ml" +# 28883 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28901,7 +28903,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ctype_ = # 144 "standard.mly" ( [ x ] ) -# 28905 "parser_cocci_menhir.ml" +# 28907 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28935,7 +28937,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ctype_ = # 146 "standard.mly" ( x :: xs ) -# 28939 "parser_cocci_menhir.ml" +# 28941 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28959,7 +28961,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = # 144 "standard.mly" ( [ x ] ) -# 28963 "parser_cocci_menhir.ml" +# 28965 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28993,7 +28995,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = # 146 "standard.mly" ( x :: xs ) -# 28997 "parser_cocci_menhir.ml" +# 28999 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29017,7 +29019,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = # 144 "standard.mly" ( [ x ] ) -# 29021 "parser_cocci_menhir.ml" +# 29023 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29051,7 +29053,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = # 146 "standard.mly" ( x :: xs ) -# 29055 "parser_cocci_menhir.ml" +# 29057 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29075,7 +29077,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = # 144 "standard.mly" ( [ x ] ) -# 29079 "parser_cocci_menhir.ml" +# 29081 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29109,7 +29111,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = # 146 "standard.mly" ( x :: xs ) -# 29113 "parser_cocci_menhir.ml" +# 29115 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29133,7 +29135,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = # 144 "standard.mly" ( [ x ] ) -# 29137 "parser_cocci_menhir.ml" +# 29139 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29167,7 +29169,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = # 146 "standard.mly" ( x :: xs ) -# 29171 "parser_cocci_menhir.ml" +# 29173 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29191,7 +29193,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = # 144 "standard.mly" ( [ x ] ) -# 29195 "parser_cocci_menhir.ml" +# 29197 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29225,7 +29227,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = # 146 "standard.mly" ( x :: xs ) -# 29229 "parser_cocci_menhir.ml" +# 29231 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29249,7 +29251,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = # 144 "standard.mly" ( [ x ] ) -# 29253 "parser_cocci_menhir.ml" +# 29255 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29283,7 +29285,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = # 146 "standard.mly" ( x :: xs ) -# 29287 "parser_cocci_menhir.ml" +# 29289 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29307,7 +29309,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = # 144 "standard.mly" ( [ x ] ) -# 29311 "parser_cocci_menhir.ml" +# 29313 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29341,7 +29343,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = # 146 "standard.mly" ( x :: xs ) -# 29345 "parser_cocci_menhir.ml" +# 29347 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29365,7 +29367,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = # 144 "standard.mly" ( [ x ] ) -# 29369 "parser_cocci_menhir.ml" +# 29371 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29399,7 +29401,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = # 146 "standard.mly" ( x :: xs ) -# 29403 "parser_cocci_menhir.ml" +# 29405 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29423,7 +29425,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = # 144 "standard.mly" ( [ x ] ) -# 29427 "parser_cocci_menhir.ml" +# 29429 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29457,7 +29459,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = # 146 "standard.mly" ( x :: xs ) -# 29461 "parser_cocci_menhir.ml" +# 29463 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29481,7 +29483,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_pos__ = # 144 "standard.mly" ( [ x ] ) -# 29485 "parser_cocci_menhir.ml" +# 29487 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29515,7 +29517,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_pos__ = # 146 "standard.mly" ( x :: xs ) -# 29519 "parser_cocci_menhir.ml" +# 29521 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29539,7 +29541,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = # 144 "standard.mly" ( [ x ] ) -# 29543 "parser_cocci_menhir.ml" +# 29545 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29573,7 +29575,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = # 146 "standard.mly" ( x :: xs ) -# 29577 "parser_cocci_menhir.ml" +# 29579 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29597,7 +29599,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = # 144 "standard.mly" ( [ x ] ) -# 29601 "parser_cocci_menhir.ml" +# 29603 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29631,7 +29633,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = # 146 "standard.mly" ( x :: xs ) -# 29635 "parser_cocci_menhir.ml" +# 29637 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29653,9 +29655,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_single_statement = -# 915 "parser_cocci_menhir.mly" +# 897 "parser_cocci_menhir.mly" ( _1 ) -# 29659 "parser_cocci_menhir.ml" +# 29661 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29684,26 +29686,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 29690 "parser_cocci_menhir.ml" +# 29692 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_statement_statement_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 29696 "parser_cocci_menhir.ml" +# 29698 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_single_statement = -# 919 "parser_cocci_menhir.mly" +# 901 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap (Ast0.Disj(P.clt2mcode "(" _1, List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code, mids, P.clt2mcode ")" _3)) ) -# 29707 "parser_cocci_menhir.ml" +# 29709 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29725,9 +29727,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_statement = -# 842 "parser_cocci_menhir.mly" +# 824 "parser_cocci_menhir.mly" ( _1 ) -# 29731 "parser_cocci_menhir.ml" +# 29733 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29746,16 +29748,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 29752 "parser_cocci_menhir.ml" +# 29754 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_statement = -# 844 "parser_cocci_menhir.mly" +# 826 "parser_cocci_menhir.mly" ( P.meta_stm _1 ) -# 29759 "parser_cocci_menhir.ml" +# 29761 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29779,17 +29781,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 29785 "parser_cocci_menhir.ml" +# 29787 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_expr = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 846 "parser_cocci_menhir.mly" +# 828 "parser_cocci_menhir.mly" ( P.exp_stm _1 _2 ) -# 29793 "parser_cocci_menhir.ml" +# 29795 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29829,27 +29831,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _5 : 'tv_single_statement = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 29835 "parser_cocci_menhir.ml" +# 29837 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 29841 "parser_cocci_menhir.ml" +# 29843 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 29846 "parser_cocci_menhir.ml" +# 29848 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 848 "parser_cocci_menhir.mly" +# 830 "parser_cocci_menhir.mly" ( P.ifthen _1 _2 _3 _4 _5 ) -# 29853 "parser_cocci_menhir.ml" +# 29855 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29899,33 +29901,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _7 : 'tv_single_statement = Obj.magic _7 in let _6 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 29905 "parser_cocci_menhir.ml" +# 29907 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_single_statement = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 29911 "parser_cocci_menhir.ml" +# 29913 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 29917 "parser_cocci_menhir.ml" +# 29919 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 29922 "parser_cocci_menhir.ml" +# 29924 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : 'tv_statement = -# 850 "parser_cocci_menhir.mly" +# 832 "parser_cocci_menhir.mly" ( P.ifthenelse _1 _2 _3 _4 _5 _6 _7 ) -# 29929 "parser_cocci_menhir.ml" +# 29931 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29985,39 +29987,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _9 : 'tv_single_statement = Obj.magic _9 in let _8 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 29991 "parser_cocci_menhir.ml" +# 29993 "parser_cocci_menhir.ml" ) = Obj.magic _8 in let _7 : 'tv_option_eexpr_ = Obj.magic _7 in let _6 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 29997 "parser_cocci_menhir.ml" +# 29999 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_option_eexpr_ = Obj.magic _5 in let _4 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30003 "parser_cocci_menhir.ml" +# 30005 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_option_eexpr_ = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30009 "parser_cocci_menhir.ml" +# 30011 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30014 "parser_cocci_menhir.ml" +# 30016 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__9_ in let _v : 'tv_statement = -# 853 "parser_cocci_menhir.mly" +# 835 "parser_cocci_menhir.mly" ( P.forloop _1 _2 _3 _4 _5 _6 _7 _8 _9 ) -# 30021 "parser_cocci_menhir.ml" +# 30023 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30057,27 +30059,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _5 : 'tv_single_statement = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30063 "parser_cocci_menhir.ml" +# 30065 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30069 "parser_cocci_menhir.ml" +# 30071 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30074 "parser_cocci_menhir.ml" +# 30076 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 855 "parser_cocci_menhir.mly" +# 837 "parser_cocci_menhir.mly" ( P.whileloop _1 _2 _3 _4 _5 ) -# 30081 "parser_cocci_menhir.ml" +# 30083 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30126,38 +30128,38 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _7 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30132 "parser_cocci_menhir.ml" +# 30134 "parser_cocci_menhir.ml" ) = Obj.magic _7 in let _6 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30137 "parser_cocci_menhir.ml" +# 30139 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_eexpr = Obj.magic _5 in let _4 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30143 "parser_cocci_menhir.ml" +# 30145 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30148 "parser_cocci_menhir.ml" +# 30150 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_single_statement = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30154 "parser_cocci_menhir.ml" +# 30156 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : 'tv_statement = -# 857 "parser_cocci_menhir.mly" +# 839 "parser_cocci_menhir.mly" ( P.doloop _1 _2 _3 _4 _5 _6 _7 ) -# 30161 "parser_cocci_menhir.ml" +# 30163 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30197,23 +30199,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _5 : 'tv_single_statement = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30203 "parser_cocci_menhir.ml" +# 30205 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30209 "parser_cocci_menhir.ml" +# 30211 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_iter_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 859 "parser_cocci_menhir.mly" +# 841 "parser_cocci_menhir.mly" ( P.iterator _1 _2 _3 _4 _5 ) -# 30217 "parser_cocci_menhir.ml" +# 30219 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30267,39 +30269,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _8 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 30273 "parser_cocci_menhir.ml" +# 30275 "parser_cocci_menhir.ml" ) = Obj.magic _8 in let _7 : 'tv_list_case_line_ = Obj.magic _7 in let _6 : 'tv_list_decl_var_ = Obj.magic _6 in let _5 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 30280 "parser_cocci_menhir.ml" +# 30282 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30285 "parser_cocci_menhir.ml" +# 30287 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30291 "parser_cocci_menhir.ml" +# 30293 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30296 "parser_cocci_menhir.ml" +# 30298 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__8_ in let _v : 'tv_statement = -# 861 "parser_cocci_menhir.mly" +# 843 "parser_cocci_menhir.mly" ( P.switch _1 _2 _3 _4 _5 (List.concat _6) _7 _8 ) -# 30303 "parser_cocci_menhir.ml" +# 30305 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30328,22 +30330,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30334 "parser_cocci_menhir.ml" +# 30336 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30340 "parser_cocci_menhir.ml" +# 30342 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 862 "parser_cocci_menhir.mly" +# 844 "parser_cocci_menhir.mly" ( P.ret_exp _1 _2 _3 ) -# 30347 "parser_cocci_menhir.ml" +# 30349 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30367,21 +30369,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30373 "parser_cocci_menhir.ml" +# 30375 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 57 "parser_cocci_menhir.mly" +# 35 "parser_cocci_menhir.mly" (Data.clt) -# 30378 "parser_cocci_menhir.ml" +# 30380 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 863 "parser_cocci_menhir.mly" +# 845 "parser_cocci_menhir.mly" ( P.ret _1 _2 ) -# 30385 "parser_cocci_menhir.ml" +# 30387 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30405,21 +30407,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30411 "parser_cocci_menhir.ml" +# 30413 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 30416 "parser_cocci_menhir.ml" +# 30418 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 864 "parser_cocci_menhir.mly" +# 846 "parser_cocci_menhir.mly" ( P.break _1 _2 ) -# 30423 "parser_cocci_menhir.ml" +# 30425 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30443,21 +30445,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30449 "parser_cocci_menhir.ml" +# 30451 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 30454 "parser_cocci_menhir.ml" +# 30456 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 865 "parser_cocci_menhir.mly" +# 847 "parser_cocci_menhir.mly" ( P.cont _1 _2 ) -# 30461 "parser_cocci_menhir.ml" +# 30463 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30481,17 +30483,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30487 "parser_cocci_menhir.ml" +# 30489 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 866 "parser_cocci_menhir.mly" +# 848 "parser_cocci_menhir.mly" ( P.label _1 _2 ) -# 30495 "parser_cocci_menhir.ml" +# 30497 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30520,22 +30522,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30526 "parser_cocci_menhir.ml" +# 30528 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_ident = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 30532 "parser_cocci_menhir.ml" +# 30534 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 867 "parser_cocci_menhir.mly" +# 849 "parser_cocci_menhir.mly" ( P.goto _1 _2 _3 ) -# 30539 "parser_cocci_menhir.ml" +# 30541 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30564,22 +30566,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 30570 "parser_cocci_menhir.ml" +# 30572 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_fun_start = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 30576 "parser_cocci_menhir.ml" +# 30578 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 869 "parser_cocci_menhir.mly" +# 851 "parser_cocci_menhir.mly" ( P.seq _1 _2 _3 ) -# 30583 "parser_cocci_menhir.ml" +# 30585 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30604,16 +30606,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let w : 'tv_list_whenppdecs_ = Obj.magic w in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 30610 "parser_cocci_menhir.ml" +# 30612 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_w_ in let _v : 'tv_stm_dots = -# 873 "parser_cocci_menhir.mly" +# 855 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." _1, List.concat w)) ) -# 30617 "parser_cocci_menhir.ml" +# 30619 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30647,24 +30649,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 30653 "parser_cocci_menhir.ml" +# 30655 "parser_cocci_menhir.ml" ) = Obj.magic c in let b : 'tv_nest_start = Obj.magic b in let w : 'tv_list_whenppdecs_ = Obj.magic w in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 30660 "parser_cocci_menhir.ml" +# 30662 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_stm_dots = -# 875 "parser_cocci_menhir.mly" +# 857 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." _1, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 30668 "parser_cocci_menhir.ml" +# 30670 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30698,24 +30700,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 30704 "parser_cocci_menhir.ml" +# 30706 "parser_cocci_menhir.ml" ) = Obj.magic c in let b : 'tv_nest_start = Obj.magic b in let w : 'tv_list_whenppdecs_ = Obj.magic w in let _1 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 30711 "parser_cocci_menhir.ml" +# 30713 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_stm_dots = -# 878 "parser_cocci_menhir.mly" +# 860 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." _1, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 30719 "parser_cocci_menhir.ml" +# 30721 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30734,16 +30736,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) -# 30740 "parser_cocci_menhir.ml" +# 30742 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 804 "parser_cocci_menhir.mly" +# 786 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Static s ) -# 30747 "parser_cocci_menhir.ml" +# 30749 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30762,16 +30764,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) -# 30768 "parser_cocci_menhir.ml" +# 30770 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 805 "parser_cocci_menhir.mly" +# 787 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Auto s ) -# 30775 "parser_cocci_menhir.ml" +# 30777 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30790,16 +30792,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) -# 30796 "parser_cocci_menhir.ml" +# 30798 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 806 "parser_cocci_menhir.mly" +# 788 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Register s ) -# 30803 "parser_cocci_menhir.ml" +# 30805 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30818,16 +30820,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 53 "parser_cocci_menhir.mly" +# 31 "parser_cocci_menhir.mly" (Data.clt) -# 30824 "parser_cocci_menhir.ml" +# 30826 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 807 "parser_cocci_menhir.mly" +# 789 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Extern s ) -# 30831 "parser_cocci_menhir.ml" +# 30833 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30847,9 +30849,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl = -# 562 "parser_cocci_menhir.mly" +# 542 "parser_cocci_menhir.mly" ( [] ) -# 30853 "parser_cocci_menhir.ml" +# 30855 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30878,19 +30880,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30884 "parser_cocci_menhir.ml" +# 30886 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_struct_decl = -# 564 "parser_cocci_menhir.mly" +# 544 "parser_cocci_menhir.mly" ( let (id,fn) = d in [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] ) -# 30894 "parser_cocci_menhir.ml" +# 30896 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30949,42 +30951,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 30955 "parser_cocci_menhir.ml" +# 30957 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30960 "parser_cocci_menhir.ml" +# 30962 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30966 "parser_cocci_menhir.ml" +# 30968 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 30971 "parser_cocci_menhir.ml" +# 30973 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 30977 "parser_cocci_menhir.ml" +# 30979 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 30982 "parser_cocci_menhir.ml" +# 30984 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_struct_decl = -# 568 "parser_cocci_menhir.mly" +# 548 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -30992,7 +30994,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] ) -# 30996 "parser_cocci_menhir.ml" +# 30998 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31021,9 +31023,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 31027 "parser_cocci_menhir.ml" +# 31029 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -31033,15 +31035,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 31037 "parser_cocci_menhir.ml" +# 31039 "parser_cocci_menhir.ml" in -# 576 "parser_cocci_menhir.mly" +# 556 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] ) -# 31045 "parser_cocci_menhir.ml" +# 31047 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31075,9 +31077,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let pv : ( -# 107 "parser_cocci_menhir.mly" +# 85 "parser_cocci_menhir.mly" (Data.clt) -# 31081 "parser_cocci_menhir.ml" +# 31083 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -31089,15 +31091,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 31093 "parser_cocci_menhir.ml" +# 31095 "parser_cocci_menhir.ml" in -# 576 "parser_cocci_menhir.mly" +# 556 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] ) -# 31101 "parser_cocci_menhir.ml" +# 31103 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31119,9 +31121,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl_list = -# 581 "parser_cocci_menhir.mly" +# 561 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 31125 "parser_cocci_menhir.ml" +# 31127 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31143,9 +31145,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl_list_start = -# 584 "parser_cocci_menhir.mly" +# 564 "parser_cocci_menhir.mly" ( _1 ) -# 31149 "parser_cocci_menhir.ml" +# 31151 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31173,9 +31175,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_struct_decl_list_start = -# 585 "parser_cocci_menhir.mly" +# 565 "parser_cocci_menhir.mly" ( _1@_2 ) -# 31179 "parser_cocci_menhir.ml" +# 31181 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31203,9 +31205,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_struct_decl_list_start = -# 587 "parser_cocci_menhir.mly" +# 567 "parser_cocci_menhir.mly" ( (P.mkddots "..." d)::r ) -# 31209 "parser_cocci_menhir.ml" +# 31211 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31224,16 +31226,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 31230 "parser_cocci_menhir.ml" +# 31232 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_struct_or_union = -# 558 "parser_cocci_menhir.mly" +# 538 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Struct s ) -# 31237 "parser_cocci_menhir.ml" +# 31239 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31252,16 +31254,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let u : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 31258 "parser_cocci_menhir.ml" +# 31260 "parser_cocci_menhir.ml" ) = Obj.magic u in let _startpos = _startpos_u_ in let _endpos = _endpos_u_ in let _v : 'tv_struct_or_union = -# 559 "parser_cocci_menhir.mly" +# 539 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Union u ) -# 31265 "parser_cocci_menhir.ml" +# 31267 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31283,9 +31285,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_top_eexpr = -# 1202 "parser_cocci_menhir.mly" +# 1184 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))) ) -# 31289 "parser_cocci_menhir.ml" +# 31291 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31314,22 +31316,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let _3 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 31320 "parser_cocci_menhir.ml" +# 31322 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 31326 "parser_cocci_menhir.ml" +# 31328 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_top_init = -# 1726 "parser_cocci_menhir.mly" +# 1708 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 31333 "parser_cocci_menhir.ml" +# 31335 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31344,9 +31346,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_dots = -# 1714 "parser_cocci_menhir.mly" +# 1696 "parser_cocci_menhir.mly" ([]) -# 31350 "parser_cocci_menhir.ml" +# 31352 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31372,9 +31374,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1715 "parser_cocci_menhir.mly" +# 1697 "parser_cocci_menhir.mly" (_2) -# 31378 "parser_cocci_menhir.ml" +# 31380 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31402,9 +31404,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1716 "parser_cocci_menhir.mly" +# 1698 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 31408 "parser_cocci_menhir.ml" +# 31410 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31432,9 +31434,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1717 "parser_cocci_menhir.mly" +# 1699 "parser_cocci_menhir.mly" (_1@_2) -# 31438 "parser_cocci_menhir.ml" +# 31440 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31460,9 +31462,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1705 "parser_cocci_menhir.mly" +# 1687 "parser_cocci_menhir.mly" (_2) -# 31466 "parser_cocci_menhir.ml" +# 31468 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31490,9 +31492,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1706 "parser_cocci_menhir.mly" +# 1688 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 31496 "parser_cocci_menhir.ml" +# 31498 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31520,9 +31522,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1707 "parser_cocci_menhir.mly" +# 1689 "parser_cocci_menhir.mly" (_1@_2) -# 31526 "parser_cocci_menhir.ml" +# 31528 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31537,9 +31539,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_exp = -# 1710 "parser_cocci_menhir.mly" +# 1692 "parser_cocci_menhir.mly" ([]) -# 31543 "parser_cocci_menhir.ml" +# 31545 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31567,9 +31569,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_exp = -# 1711 "parser_cocci_menhir.mly" +# 1693 "parser_cocci_menhir.mly" (_1::_2) -# 31573 "parser_cocci_menhir.ml" +# 31575 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31584,9 +31586,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_stm = -# 1720 "parser_cocci_menhir.mly" +# 1702 "parser_cocci_menhir.mly" ([]) -# 31590 "parser_cocci_menhir.ml" +# 31592 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31614,9 +31616,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_stm = -# 1721 "parser_cocci_menhir.mly" +# 1703 "parser_cocci_menhir.mly" (_1::_2) -# 31620 "parser_cocci_menhir.ml" +# 31622 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31644,9 +31646,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_stm = -# 1722 "parser_cocci_menhir.mly" +# 1704 "parser_cocci_menhir.mly" (_1@_2) -# 31650 "parser_cocci_menhir.ml" +# 31652 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31674,9 +31676,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1700 "parser_cocci_menhir.mly" +# 1682 "parser_cocci_menhir.mly" ( _1::_2 ) -# 31680 "parser_cocci_menhir.ml" +# 31682 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31704,9 +31706,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1701 "parser_cocci_menhir.mly" +# 1683 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.Exp(_1)))::_2 ) -# 31710 "parser_cocci_menhir.ml" +# 31712 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31734,9 +31736,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1702 "parser_cocci_menhir.mly" +# 1684 "parser_cocci_menhir.mly" ( _1@_2 ) -# 31740 "parser_cocci_menhir.ml" +# 31742 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31767,9 +31769,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let b : 'tv_toplevel_after_dots_init = Obj.magic b in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31773 "parser_cocci_menhir.ml" +# 31775 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -31777,15 +31779,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 883 "parser_cocci_menhir.mly" +# 865 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." a, List.concat w)) ) -# 31783 "parser_cocci_menhir.ml" +# 31785 "parser_cocci_menhir.ml" in -# 1693 "parser_cocci_menhir.mly" +# 1675 "parser_cocci_menhir.mly" ( a::b ) -# 31789 "parser_cocci_menhir.ml" +# 31791 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31825,16 +31827,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_toplevel_after_dots_init = Obj.magic b in let c0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31831 "parser_cocci_menhir.ml" +# 31833 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31838 "parser_cocci_menhir.ml" +# 31840 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -31844,16 +31846,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 887 "parser_cocci_menhir.mly" +# 869 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 31851 "parser_cocci_menhir.ml" +# 31853 "parser_cocci_menhir.ml" in -# 1694 "parser_cocci_menhir.mly" +# 1676 "parser_cocci_menhir.mly" ( a::b ) -# 31857 "parser_cocci_menhir.ml" +# 31859 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31893,16 +31895,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let b : 'tv_toplevel_after_dots_init = Obj.magic b in let c0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31899 "parser_cocci_menhir.ml" +# 31901 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31906 "parser_cocci_menhir.ml" +# 31908 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -31912,16 +31914,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 890 "parser_cocci_menhir.mly" +# 872 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 31919 "parser_cocci_menhir.ml" +# 31921 "parser_cocci_menhir.ml" in -# 1694 "parser_cocci_menhir.mly" +# 1676 "parser_cocci_menhir.mly" ( a::b ) -# 31925 "parser_cocci_menhir.ml" +# 31927 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -31955,16 +31957,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31961 "parser_cocci_menhir.ml" +# 31963 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 31968 "parser_cocci_menhir.ml" +# 31970 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_c0_ in @@ -31974,16 +31976,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 887 "parser_cocci_menhir.mly" +# 869 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 31981 "parser_cocci_menhir.ml" +# 31983 "parser_cocci_menhir.ml" in -# 1695 "parser_cocci_menhir.mly" +# 1677 "parser_cocci_menhir.mly" ( [a] ) -# 31987 "parser_cocci_menhir.ml" +# 31989 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32017,16 +32019,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let c0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 32023 "parser_cocci_menhir.ml" +# 32025 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( -# 73 "parser_cocci_menhir.mly" +# 51 "parser_cocci_menhir.mly" (Data.clt) -# 32030 "parser_cocci_menhir.ml" +# 32032 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_c0_ in @@ -32036,16 +32038,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 890 "parser_cocci_menhir.mly" +# 872 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 32043 "parser_cocci_menhir.ml" +# 32045 "parser_cocci_menhir.ml" in -# 1695 "parser_cocci_menhir.mly" +# 1677 "parser_cocci_menhir.mly" ( [a] ) -# 32049 "parser_cocci_menhir.ml" +# 32051 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32073,9 +32075,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = -# 1696 "parser_cocci_menhir.mly" +# 1678 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.Exp(_1)))::_2 ) -# 32079 "parser_cocci_menhir.ml" +# 32081 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32103,9 +32105,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = -# 1697 "parser_cocci_menhir.mly" +# 1679 "parser_cocci_menhir.mly" ( _1@_2 ) -# 32109 "parser_cocci_menhir.ml" +# 32111 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32135,14 +32137,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32141 "parser_cocci_menhir.ml" +# 32143 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32146 "parser_cocci_menhir.ml" +# 32148 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32152,28 +32154,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 32158 "parser_cocci_menhir.ml" +# 32160 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32164 "parser_cocci_menhir.ml" +# 32166 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32171 "parser_cocci_menhir.ml" +# 32173 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32177 "parser_cocci_menhir.ml" +# 32179 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32203,14 +32205,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32209 "parser_cocci_menhir.ml" +# 32211 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32214 "parser_cocci_menhir.ml" +# 32216 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32220,28 +32222,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 32226 "parser_cocci_menhir.ml" +# 32228 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32232 "parser_cocci_menhir.ml" +# 32234 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32239 "parser_cocci_menhir.ml" +# 32241 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32245 "parser_cocci_menhir.ml" +# 32247 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32271,14 +32273,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32277 "parser_cocci_menhir.ml" +# 32279 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32282 "parser_cocci_menhir.ml" +# 32284 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32288,28 +32290,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 32294 "parser_cocci_menhir.ml" +# 32296 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32300 "parser_cocci_menhir.ml" +# 32302 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32307 "parser_cocci_menhir.ml" +# 32309 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32313 "parser_cocci_menhir.ml" +# 32315 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32339,14 +32341,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 32345 "parser_cocci_menhir.ml" +# 32347 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32350 "parser_cocci_menhir.ml" +# 32352 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32356,29 +32358,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 32363 "parser_cocci_menhir.ml" +# 32365 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32369 "parser_cocci_menhir.ml" +# 32371 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32376 "parser_cocci_menhir.ml" +# 32378 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32382 "parser_cocci_menhir.ml" +# 32384 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32417,19 +32419,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 32423 "parser_cocci_menhir.ml" +# 32425 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 32428 "parser_cocci_menhir.ml" +# 32430 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32433 "parser_cocci_menhir.ml" +# 32435 "parser_cocci_menhir.ml" ) = Obj.magic r1 in let _startpos = _startpos_r1_ in let _endpos = _endpos_m_ in @@ -32441,33 +32443,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 32452 "parser_cocci_menhir.ml" +# 32454 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32458 "parser_cocci_menhir.ml" +# 32460 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32465 "parser_cocci_menhir.ml" +# 32467 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32471 "parser_cocci_menhir.ml" +# 32473 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32497,14 +32499,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32503 "parser_cocci_menhir.ml" +# 32505 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32508 "parser_cocci_menhir.ml" +# 32510 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32514,28 +32516,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 32520 "parser_cocci_menhir.ml" +# 32522 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32526 "parser_cocci_menhir.ml" +# 32528 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32533 "parser_cocci_menhir.ml" +# 32535 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32539 "parser_cocci_menhir.ml" +# 32541 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32570,19 +32572,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32576 "parser_cocci_menhir.ml" +# 32578 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32581 "parser_cocci_menhir.ml" +# 32583 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32586 "parser_cocci_menhir.ml" +# 32588 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32594,31 +32596,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 32603 "parser_cocci_menhir.ml" +# 32605 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 32609 "parser_cocci_menhir.ml" +# 32611 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32616 "parser_cocci_menhir.ml" +# 32618 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32622 "parser_cocci_menhir.ml" +# 32624 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32648,14 +32650,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32654 "parser_cocci_menhir.ml" +# 32656 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32659 "parser_cocci_menhir.ml" +# 32661 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32665,28 +32667,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 32671 "parser_cocci_menhir.ml" +# 32673 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 32677 "parser_cocci_menhir.ml" +# 32679 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32684 "parser_cocci_menhir.ml" +# 32686 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32690 "parser_cocci_menhir.ml" +# 32692 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32716,14 +32718,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32722 "parser_cocci_menhir.ml" +# 32724 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32727 "parser_cocci_menhir.ml" +# 32729 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32733,28 +32735,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 32739 "parser_cocci_menhir.ml" +# 32741 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 32745 "parser_cocci_menhir.ml" +# 32747 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32752 "parser_cocci_menhir.ml" +# 32754 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32758 "parser_cocci_menhir.ml" +# 32760 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32784,14 +32786,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 32790 "parser_cocci_menhir.ml" +# 32792 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32795 "parser_cocci_menhir.ml" +# 32797 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32801,28 +32803,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 32807 "parser_cocci_menhir.ml" +# 32809 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 32813 "parser_cocci_menhir.ml" +# 32815 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32820 "parser_cocci_menhir.ml" +# 32822 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32826 "parser_cocci_menhir.ml" +# 32828 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32852,14 +32854,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 32858 "parser_cocci_menhir.ml" +# 32860 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32863 "parser_cocci_menhir.ml" +# 32865 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -32869,29 +32871,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 32876 "parser_cocci_menhir.ml" +# 32878 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 32882 "parser_cocci_menhir.ml" +# 32884 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32889 "parser_cocci_menhir.ml" +# 32891 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32895 "parser_cocci_menhir.ml" +# 32897 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -32930,19 +32932,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 32936 "parser_cocci_menhir.ml" +# 32938 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 32941 "parser_cocci_menhir.ml" +# 32943 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 32946 "parser_cocci_menhir.ml" +# 32948 "parser_cocci_menhir.ml" ) = Obj.magic r1 in let _startpos = _startpos_r1_ in let _endpos = _endpos_m_ in @@ -32954,33 +32956,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 32965 "parser_cocci_menhir.ml" +# 32967 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 32971 "parser_cocci_menhir.ml" +# 32973 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 32978 "parser_cocci_menhir.ml" +# 32980 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 32984 "parser_cocci_menhir.ml" +# 32986 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33010,14 +33012,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33016 "parser_cocci_menhir.ml" +# 33018 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 33021 "parser_cocci_menhir.ml" +# 33023 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -33027,28 +33029,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 33033 "parser_cocci_menhir.ml" +# 33035 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 33039 "parser_cocci_menhir.ml" +# 33041 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33046 "parser_cocci_menhir.ml" +# 33048 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33052 "parser_cocci_menhir.ml" +# 33054 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33083,19 +33085,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33089 "parser_cocci_menhir.ml" +# 33091 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33094 "parser_cocci_menhir.ml" +# 33096 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 33099 "parser_cocci_menhir.ml" +# 33101 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_m_ in @@ -33107,31 +33109,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 33116 "parser_cocci_menhir.ml" +# 33118 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 33122 "parser_cocci_menhir.ml" +# 33124 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33129 "parser_cocci_menhir.ml" +# 33131 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33135 "parser_cocci_menhir.ml" +# 33137 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33156,9 +33158,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33162 "parser_cocci_menhir.ml" +# 33164 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33167,28 +33169,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 33173 "parser_cocci_menhir.ml" +# 33175 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33179 "parser_cocci_menhir.ml" +# 33181 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33186 "parser_cocci_menhir.ml" +# 33188 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33192 "parser_cocci_menhir.ml" +# 33194 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33213,9 +33215,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33219 "parser_cocci_menhir.ml" +# 33221 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33224,28 +33226,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 33230 "parser_cocci_menhir.ml" +# 33232 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33236 "parser_cocci_menhir.ml" +# 33238 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33243 "parser_cocci_menhir.ml" +# 33245 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33249 "parser_cocci_menhir.ml" +# 33251 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33270,9 +33272,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33276 "parser_cocci_menhir.ml" +# 33278 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33281,28 +33283,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 33287 "parser_cocci_menhir.ml" +# 33289 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33293 "parser_cocci_menhir.ml" +# 33295 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33300 "parser_cocci_menhir.ml" +# 33302 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33306 "parser_cocci_menhir.ml" +# 33308 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33327,9 +33329,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 33333 "parser_cocci_menhir.ml" +# 33335 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let _startpos = _startpos_p00_ in let _endpos = _endpos_m_ in @@ -33338,29 +33340,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 33345 "parser_cocci_menhir.ml" +# 33347 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33351 "parser_cocci_menhir.ml" +# 33353 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33358 "parser_cocci_menhir.ml" +# 33360 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33364 "parser_cocci_menhir.ml" +# 33366 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33394,14 +33396,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 33400 "parser_cocci_menhir.ml" +# 33402 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 33405 "parser_cocci_menhir.ml" +# 33407 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_m_ in @@ -33412,33 +33414,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 33423 "parser_cocci_menhir.ml" +# 33425 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33429 "parser_cocci_menhir.ml" +# 33431 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33436 "parser_cocci_menhir.ml" +# 33438 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33442 "parser_cocci_menhir.ml" +# 33444 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33463,9 +33465,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33469 "parser_cocci_menhir.ml" +# 33471 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33474,28 +33476,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 33480 "parser_cocci_menhir.ml" +# 33482 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33486 "parser_cocci_menhir.ml" +# 33488 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33493 "parser_cocci_menhir.ml" +# 33495 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33499 "parser_cocci_menhir.ml" +# 33501 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33525,14 +33527,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33531 "parser_cocci_menhir.ml" +# 33533 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33536 "parser_cocci_menhir.ml" +# 33538 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let _startpos = _startpos_ty100_ in let _endpos = _endpos_m_ in @@ -33543,31 +33545,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 33552 "parser_cocci_menhir.ml" +# 33554 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 33558 "parser_cocci_menhir.ml" +# 33560 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33565 "parser_cocci_menhir.ml" +# 33567 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33571 "parser_cocci_menhir.ml" +# 33573 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33592,9 +33594,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 33598 "parser_cocci_menhir.ml" +# 33600 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33603,28 +33605,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 502 "parser_cocci_menhir.mly" +# 482 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) ) -# 33609 "parser_cocci_menhir.ml" +# 33611 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33615 "parser_cocci_menhir.ml" +# 33617 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33622 "parser_cocci_menhir.ml" +# 33624 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33628 "parser_cocci_menhir.ml" +# 33630 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33649,9 +33651,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33655 "parser_cocci_menhir.ml" +# 33657 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33660,28 +33662,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 504 "parser_cocci_menhir.mly" +# 484 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) ) -# 33666 "parser_cocci_menhir.ml" +# 33668 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33672 "parser_cocci_menhir.ml" +# 33674 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33679 "parser_cocci_menhir.ml" +# 33681 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33685 "parser_cocci_menhir.ml" +# 33687 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33706,9 +33708,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 33712 "parser_cocci_menhir.ml" +# 33714 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let _startpos = _startpos_ty00_ in let _endpos = _endpos_m_ in @@ -33717,28 +33719,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 506 "parser_cocci_menhir.mly" +# 486 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) ) -# 33723 "parser_cocci_menhir.ml" +# 33725 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33729 "parser_cocci_menhir.ml" +# 33731 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33736 "parser_cocci_menhir.ml" +# 33738 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33742 "parser_cocci_menhir.ml" +# 33744 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33769,9 +33771,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m : 'tv_list_TMul_ = Obj.magic m in let i00 : 'tv_ident = Obj.magic i00 in let s00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 33775 "parser_cocci_menhir.ml" +# 33777 "parser_cocci_menhir.ml" ) = Obj.magic s00 in let _startpos = _startpos_s00_ in let _endpos = _endpos_m_ in @@ -33782,28 +33784,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 508 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) ) -# 33788 "parser_cocci_menhir.ml" +# 33790 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33794 "parser_cocci_menhir.ml" +# 33796 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33801 "parser_cocci_menhir.ml" +# 33803 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33807 "parser_cocci_menhir.ml" +# 33809 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33843,28 +33845,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 510 "parser_cocci_menhir.mly" +# 490 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) ) -# 33849 "parser_cocci_menhir.ml" +# 33851 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33855 "parser_cocci_menhir.ml" +# 33857 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33862 "parser_cocci_menhir.ml" +# 33864 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33868 "parser_cocci_menhir.ml" +# 33870 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -33904,15 +33906,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 33910 "parser_cocci_menhir.ml" +# 33912 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 33916 "parser_cocci_menhir.ml" +# 33918 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : 'tv_struct_or_union = Obj.magic s00 in let _startpos = _startpos_s00_ in @@ -33931,36 +33933,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 33935 "parser_cocci_menhir.ml" +# 33937 "parser_cocci_menhir.ml" in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 33945 "parser_cocci_menhir.ml" +# 33947 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 33951 "parser_cocci_menhir.ml" +# 33953 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 33958 "parser_cocci_menhir.ml" +# 33960 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 33964 "parser_cocci_menhir.ml" +# 33966 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34005,15 +34007,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 34011 "parser_cocci_menhir.ml" +# 34013 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 34017 "parser_cocci_menhir.ml" +# 34019 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let x000 : 'tv_ident = Obj.magic x000 in let s00 : 'tv_struct_or_union = Obj.magic s00 in @@ -34036,36 +34038,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34040 "parser_cocci_menhir.ml" +# 34042 "parser_cocci_menhir.ml" in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 34050 "parser_cocci_menhir.ml" +# 34052 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 34056 "parser_cocci_menhir.ml" +# 34058 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 34063 "parser_cocci_menhir.ml" +# 34065 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34069 "parser_cocci_menhir.ml" +# 34071 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34105,20 +34107,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 34111 "parser_cocci_menhir.ml" +# 34113 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 34117 "parser_cocci_menhir.ml" +# 34119 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 34122 "parser_cocci_menhir.ml" +# 34124 "parser_cocci_menhir.ml" ) = Obj.magic s00 in let _startpos = _startpos_s00_ in let _endpos = _endpos_m_ in @@ -34133,30 +34135,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let l = l0 in let s = s0 in -# 519 "parser_cocci_menhir.mly" +# 499 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = s in let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) ) -# 34141 "parser_cocci_menhir.ml" +# 34143 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 34147 "parser_cocci_menhir.ml" +# 34149 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 34154 "parser_cocci_menhir.ml" +# 34156 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34160 "parser_cocci_menhir.ml" +# 34162 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34181,9 +34183,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 34187 "parser_cocci_menhir.ml" +# 34189 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let _startpos = _startpos_p00_ in let _endpos = _endpos_m_ in @@ -34192,28 +34194,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 523 "parser_cocci_menhir.mly" +# 503 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) ) -# 34198 "parser_cocci_menhir.ml" +# 34200 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 34204 "parser_cocci_menhir.ml" +# 34206 "parser_cocci_menhir.ml" in let cv = # 39 "standard.mly" ( None ) -# 34211 "parser_cocci_menhir.ml" +# 34213 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34217 "parser_cocci_menhir.ml" +# 34219 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34248,14 +34250,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34254 "parser_cocci_menhir.ml" +# 34256 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34259 "parser_cocci_menhir.ml" +# 34261 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34266,15 +34268,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 34272 "parser_cocci_menhir.ml" +# 34274 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34278 "parser_cocci_menhir.ml" +# 34280 "parser_cocci_menhir.ml" in let cv = @@ -34282,13 +34284,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34286 "parser_cocci_menhir.ml" +# 34288 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34292 "parser_cocci_menhir.ml" +# 34294 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34323,14 +34325,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34329 "parser_cocci_menhir.ml" +# 34331 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34334 "parser_cocci_menhir.ml" +# 34336 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34341,15 +34343,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 34347 "parser_cocci_menhir.ml" +# 34349 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34353 "parser_cocci_menhir.ml" +# 34355 "parser_cocci_menhir.ml" in let cv = @@ -34357,13 +34359,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34361 "parser_cocci_menhir.ml" +# 34363 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34367 "parser_cocci_menhir.ml" +# 34369 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34398,14 +34400,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34404 "parser_cocci_menhir.ml" +# 34406 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34409 "parser_cocci_menhir.ml" +# 34411 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34416,15 +34418,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 34422 "parser_cocci_menhir.ml" +# 34424 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34428 "parser_cocci_menhir.ml" +# 34430 "parser_cocci_menhir.ml" in let cv = @@ -34432,13 +34434,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34436 "parser_cocci_menhir.ml" +# 34438 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34442 "parser_cocci_menhir.ml" +# 34444 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34473,14 +34475,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 34479 "parser_cocci_menhir.ml" +# 34481 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34484 "parser_cocci_menhir.ml" +# 34486 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34491,16 +34493,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 34498 "parser_cocci_menhir.ml" +# 34500 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34504 "parser_cocci_menhir.ml" +# 34506 "parser_cocci_menhir.ml" in let cv = @@ -34508,13 +34510,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34512 "parser_cocci_menhir.ml" +# 34514 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34518 "parser_cocci_menhir.ml" +# 34520 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34558,19 +34560,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 34564 "parser_cocci_menhir.ml" +# 34566 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 34569 "parser_cocci_menhir.ml" +# 34571 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34574 "parser_cocci_menhir.ml" +# 34576 "parser_cocci_menhir.ml" ) = Obj.magic r1 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34583,20 +34585,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 34594 "parser_cocci_menhir.ml" +# 34596 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34600 "parser_cocci_menhir.ml" +# 34602 "parser_cocci_menhir.ml" in let cv = @@ -34604,13 +34606,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34608 "parser_cocci_menhir.ml" +# 34610 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34614 "parser_cocci_menhir.ml" +# 34616 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34645,14 +34647,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34651 "parser_cocci_menhir.ml" +# 34653 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34656 "parser_cocci_menhir.ml" +# 34658 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34663,15 +34665,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 34669 "parser_cocci_menhir.ml" +# 34671 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34675 "parser_cocci_menhir.ml" +# 34677 "parser_cocci_menhir.ml" in let cv = @@ -34679,13 +34681,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34683 "parser_cocci_menhir.ml" +# 34685 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34689 "parser_cocci_menhir.ml" +# 34691 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34725,19 +34727,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34731 "parser_cocci_menhir.ml" +# 34733 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34736 "parser_cocci_menhir.ml" +# 34738 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34741 "parser_cocci_menhir.ml" +# 34743 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34750,18 +34752,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 34759 "parser_cocci_menhir.ml" +# 34761 "parser_cocci_menhir.ml" in -# 528 "parser_cocci_menhir.mly" +# 508 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) ) -# 34765 "parser_cocci_menhir.ml" +# 34767 "parser_cocci_menhir.ml" in let cv = @@ -34769,13 +34771,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34773 "parser_cocci_menhir.ml" +# 34775 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34779 "parser_cocci_menhir.ml" +# 34781 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34810,14 +34812,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34816 "parser_cocci_menhir.ml" +# 34818 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34821 "parser_cocci_menhir.ml" +# 34823 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34828,15 +34830,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 34834 "parser_cocci_menhir.ml" +# 34836 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 34840 "parser_cocci_menhir.ml" +# 34842 "parser_cocci_menhir.ml" in let cv = @@ -34844,13 +34846,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34848 "parser_cocci_menhir.ml" +# 34850 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34854 "parser_cocci_menhir.ml" +# 34856 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34885,14 +34887,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34891 "parser_cocci_menhir.ml" +# 34893 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34896 "parser_cocci_menhir.ml" +# 34898 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34903,15 +34905,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 34909 "parser_cocci_menhir.ml" +# 34911 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 34915 "parser_cocci_menhir.ml" +# 34917 "parser_cocci_menhir.ml" in let cv = @@ -34919,13 +34921,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34923 "parser_cocci_menhir.ml" +# 34925 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 34929 "parser_cocci_menhir.ml" +# 34931 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -34960,14 +34962,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 34966 "parser_cocci_menhir.ml" +# 34968 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 34971 "parser_cocci_menhir.ml" +# 34973 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -34978,15 +34980,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 34984 "parser_cocci_menhir.ml" +# 34986 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 34990 "parser_cocci_menhir.ml" +# 34992 "parser_cocci_menhir.ml" in let cv = @@ -34994,13 +34996,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 34998 "parser_cocci_menhir.ml" +# 35000 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35004 "parser_cocci_menhir.ml" +# 35006 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35035,14 +35037,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 35041 "parser_cocci_menhir.ml" +# 35043 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 35046 "parser_cocci_menhir.ml" +# 35048 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35053,16 +35055,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 35060 "parser_cocci_menhir.ml" +# 35062 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 35066 "parser_cocci_menhir.ml" +# 35068 "parser_cocci_menhir.ml" in let cv = @@ -35070,13 +35072,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35074 "parser_cocci_menhir.ml" +# 35076 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35080 "parser_cocci_menhir.ml" +# 35082 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35120,19 +35122,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 35126 "parser_cocci_menhir.ml" +# 35128 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 35131 "parser_cocci_menhir.ml" +# 35133 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let r1 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 35136 "parser_cocci_menhir.ml" +# 35138 "parser_cocci_menhir.ml" ) = Obj.magic r1 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35145,20 +35147,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 35156 "parser_cocci_menhir.ml" +# 35158 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 35162 "parser_cocci_menhir.ml" +# 35164 "parser_cocci_menhir.ml" in let cv = @@ -35166,13 +35168,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35170 "parser_cocci_menhir.ml" +# 35172 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35176 "parser_cocci_menhir.ml" +# 35178 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35207,14 +35209,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35213 "parser_cocci_menhir.ml" +# 35215 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 35218 "parser_cocci_menhir.ml" +# 35220 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35225,15 +35227,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 35231 "parser_cocci_menhir.ml" +# 35233 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 35237 "parser_cocci_menhir.ml" +# 35239 "parser_cocci_menhir.ml" in let cv = @@ -35241,13 +35243,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35245 "parser_cocci_menhir.ml" +# 35247 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35251 "parser_cocci_menhir.ml" +# 35253 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35287,19 +35289,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35293 "parser_cocci_menhir.ml" +# 35295 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35298 "parser_cocci_menhir.ml" +# 35300 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let r0 : ( -# 51 "parser_cocci_menhir.mly" +# 29 "parser_cocci_menhir.mly" (Data.clt) -# 35303 "parser_cocci_menhir.ml" +# 35305 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35312,18 +35314,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 35321 "parser_cocci_menhir.ml" +# 35323 "parser_cocci_menhir.ml" in -# 530 "parser_cocci_menhir.mly" +# 510 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) ) -# 35327 "parser_cocci_menhir.ml" +# 35329 "parser_cocci_menhir.ml" in let cv = @@ -35331,13 +35333,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35335 "parser_cocci_menhir.ml" +# 35337 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35341 "parser_cocci_menhir.ml" +# 35343 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35367,9 +35369,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35373 "parser_cocci_menhir.ml" +# 35375 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35379,15 +35381,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 476 "parser_cocci_menhir.mly" +# 456 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) ) -# 35385 "parser_cocci_menhir.ml" +# 35387 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35391 "parser_cocci_menhir.ml" +# 35393 "parser_cocci_menhir.ml" in let cv = @@ -35395,13 +35397,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35399 "parser_cocci_menhir.ml" +# 35401 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35405 "parser_cocci_menhir.ml" +# 35407 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35431,9 +35433,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35437 "parser_cocci_menhir.ml" +# 35439 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35443,15 +35445,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 478 "parser_cocci_menhir.mly" +# 458 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) ) -# 35449 "parser_cocci_menhir.ml" +# 35451 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35455 "parser_cocci_menhir.ml" +# 35457 "parser_cocci_menhir.ml" in let cv = @@ -35459,13 +35461,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35463 "parser_cocci_menhir.ml" +# 35465 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35469 "parser_cocci_menhir.ml" +# 35471 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35495,9 +35497,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35501 "parser_cocci_menhir.ml" +# 35503 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35507,15 +35509,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 480 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) ) -# 35513 "parser_cocci_menhir.ml" +# 35515 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35519 "parser_cocci_menhir.ml" +# 35521 "parser_cocci_menhir.ml" in let cv = @@ -35523,13 +35525,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35527 "parser_cocci_menhir.ml" +# 35529 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35533 "parser_cocci_menhir.ml" +# 35535 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35559,9 +35561,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 35565 "parser_cocci_menhir.ml" +# 35567 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35571,16 +35573,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 482 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 35578 "parser_cocci_menhir.ml" +# 35580 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35584 "parser_cocci_menhir.ml" +# 35586 "parser_cocci_menhir.ml" in let cv = @@ -35588,13 +35590,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35592 "parser_cocci_menhir.ml" +# 35594 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35598 "parser_cocci_menhir.ml" +# 35600 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35633,14 +35635,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 35639 "parser_cocci_menhir.ml" +# 35641 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let r00 : ( -# 47 "parser_cocci_menhir.mly" +# 25 "parser_cocci_menhir.mly" (string) -# 35644 "parser_cocci_menhir.ml" +# 35646 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35652,20 +35654,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p = p0 in let r = r0 in -# 485 "parser_cocci_menhir.mly" +# 465 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 35663 "parser_cocci_menhir.ml" +# 35665 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35669 "parser_cocci_menhir.ml" +# 35671 "parser_cocci_menhir.ml" in let cv = @@ -35673,13 +35675,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35677 "parser_cocci_menhir.ml" +# 35679 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35683 "parser_cocci_menhir.ml" +# 35685 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35709,9 +35711,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35715 "parser_cocci_menhir.ml" +# 35717 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35721,15 +35723,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 492 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) ) -# 35727 "parser_cocci_menhir.ml" +# 35729 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35733 "parser_cocci_menhir.ml" +# 35735 "parser_cocci_menhir.ml" in let cv = @@ -35737,13 +35739,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35741 "parser_cocci_menhir.ml" +# 35743 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35747 "parser_cocci_menhir.ml" +# 35749 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35778,14 +35780,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty200 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35784 "parser_cocci_menhir.ml" +# 35786 "parser_cocci_menhir.ml" ) = Obj.magic ty200 in let ty100 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35789 "parser_cocci_menhir.ml" +# 35791 "parser_cocci_menhir.ml" ) = Obj.magic ty100 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35797,18 +35799,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty2 = ty20 in let ty1 = ty10 in -# 494 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) ) -# 35806 "parser_cocci_menhir.ml" +# 35808 "parser_cocci_menhir.ml" in -# 531 "parser_cocci_menhir.mly" +# 511 "parser_cocci_menhir.mly" ( ty ) -# 35812 "parser_cocci_menhir.ml" +# 35814 "parser_cocci_menhir.ml" in let cv = @@ -35816,13 +35818,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35820 "parser_cocci_menhir.ml" +# 35822 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35826 "parser_cocci_menhir.ml" +# 35828 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35852,9 +35854,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 35858 "parser_cocci_menhir.ml" +# 35860 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35864,15 +35866,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 502 "parser_cocci_menhir.mly" +# 482 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) ) -# 35870 "parser_cocci_menhir.ml" +# 35872 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 35876 "parser_cocci_menhir.ml" +# 35878 "parser_cocci_menhir.ml" in let cv = @@ -35880,13 +35882,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35884 "parser_cocci_menhir.ml" +# 35886 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35890 "parser_cocci_menhir.ml" +# 35892 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35916,9 +35918,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35922 "parser_cocci_menhir.ml" +# 35924 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35928,15 +35930,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 504 "parser_cocci_menhir.mly" +# 484 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) ) -# 35934 "parser_cocci_menhir.ml" +# 35936 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 35940 "parser_cocci_menhir.ml" +# 35942 "parser_cocci_menhir.ml" in let cv = @@ -35944,13 +35946,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 35948 "parser_cocci_menhir.ml" +# 35950 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 35954 "parser_cocci_menhir.ml" +# 35956 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -35980,9 +35982,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let ty00 : ( -# 49 "parser_cocci_menhir.mly" +# 27 "parser_cocci_menhir.mly" (Data.clt) -# 35986 "parser_cocci_menhir.ml" +# 35988 "parser_cocci_menhir.ml" ) = Obj.magic ty00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -35992,15 +35994,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let ty = ty0 in -# 506 "parser_cocci_menhir.mly" +# 486 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) ) -# 35998 "parser_cocci_menhir.ml" +# 36000 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36004 "parser_cocci_menhir.ml" +# 36006 "parser_cocci_menhir.ml" in let cv = @@ -36008,13 +36010,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36012 "parser_cocci_menhir.ml" +# 36014 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36018 "parser_cocci_menhir.ml" +# 36020 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36050,9 +36052,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m : 'tv_list_TMul_ = Obj.magic m in let i00 : 'tv_ident = Obj.magic i00 in let s00 : ( -# 50 "parser_cocci_menhir.mly" +# 28 "parser_cocci_menhir.mly" (Data.clt) -# 36056 "parser_cocci_menhir.ml" +# 36058 "parser_cocci_menhir.ml" ) = Obj.magic s00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -36064,15 +36066,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 508 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) ) -# 36070 "parser_cocci_menhir.ml" +# 36072 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36076 "parser_cocci_menhir.ml" +# 36078 "parser_cocci_menhir.ml" in let cv = @@ -36080,13 +36082,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36084 "parser_cocci_menhir.ml" +# 36086 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36090 "parser_cocci_menhir.ml" +# 36092 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36132,15 +36134,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = i0 in let s = s0 in -# 510 "parser_cocci_menhir.mly" +# 490 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) ) -# 36138 "parser_cocci_menhir.ml" +# 36140 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36144 "parser_cocci_menhir.ml" +# 36146 "parser_cocci_menhir.ml" in let cv = @@ -36148,13 +36150,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36152 "parser_cocci_menhir.ml" +# 36154 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36158 "parser_cocci_menhir.ml" +# 36160 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36199,15 +36201,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36205 "parser_cocci_menhir.ml" +# 36207 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36211 "parser_cocci_menhir.ml" +# 36213 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : 'tv_struct_or_union = Obj.magic s00 in let x0 : 'tv_const_vol = Obj.magic x0 in @@ -36227,23 +36229,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 36231 "parser_cocci_menhir.ml" +# 36233 "parser_cocci_menhir.ml" in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 36241 "parser_cocci_menhir.ml" +# 36243 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36247 "parser_cocci_menhir.ml" +# 36249 "parser_cocci_menhir.ml" in let cv = @@ -36251,13 +36253,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36255 "parser_cocci_menhir.ml" +# 36257 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36261 "parser_cocci_menhir.ml" +# 36263 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36307,15 +36309,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36313 "parser_cocci_menhir.ml" +# 36315 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36319 "parser_cocci_menhir.ml" +# 36321 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let x000 : 'tv_ident = Obj.magic x000 in let s00 : 'tv_struct_or_union = Obj.magic s00 in @@ -36339,23 +36341,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36343 "parser_cocci_menhir.ml" +# 36345 "parser_cocci_menhir.ml" in -# 513 "parser_cocci_menhir.mly" +# 493 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 36353 "parser_cocci_menhir.ml" +# 36355 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36359 "parser_cocci_menhir.ml" +# 36361 "parser_cocci_menhir.ml" in let cv = @@ -36363,13 +36365,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36367 "parser_cocci_menhir.ml" +# 36369 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36373 "parser_cocci_menhir.ml" +# 36375 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36414,20 +36416,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let r00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36420 "parser_cocci_menhir.ml" +# 36422 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let d00 : 'tv_struct_decl_list = Obj.magic d00 in let l00 : ( -# 101 "parser_cocci_menhir.mly" +# 79 "parser_cocci_menhir.mly" (Data.clt) -# 36426 "parser_cocci_menhir.ml" +# 36428 "parser_cocci_menhir.ml" ) = Obj.magic l00 in let s00 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 36431 "parser_cocci_menhir.ml" +# 36433 "parser_cocci_menhir.ml" ) = Obj.magic s00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -36443,17 +36445,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let l = l0 in let s = s0 in -# 519 "parser_cocci_menhir.mly" +# 499 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = s in let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) ) -# 36451 "parser_cocci_menhir.ml" +# 36453 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36457 "parser_cocci_menhir.ml" +# 36459 "parser_cocci_menhir.ml" in let cv = @@ -36461,13 +36463,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36465 "parser_cocci_menhir.ml" +# 36467 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36471 "parser_cocci_menhir.ml" +# 36473 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36497,9 +36499,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let m : 'tv_list_TMul_ = Obj.magic m in let p00 : ( -# 59 "parser_cocci_menhir.mly" +# 37 "parser_cocci_menhir.mly" (string * Data.clt) -# 36503 "parser_cocci_menhir.ml" +# 36505 "parser_cocci_menhir.ml" ) = Obj.magic p00 in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -36509,15 +36511,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty = let p = p0 in -# 523 "parser_cocci_menhir.mly" +# 503 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) ) -# 36515 "parser_cocci_menhir.ml" +# 36517 "parser_cocci_menhir.ml" in -# 532 "parser_cocci_menhir.mly" +# 512 "parser_cocci_menhir.mly" ( ty ) -# 36521 "parser_cocci_menhir.ml" +# 36523 "parser_cocci_menhir.ml" in let cv = @@ -36525,13 +36527,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 36529 "parser_cocci_menhir.ml" +# 36531 "parser_cocci_menhir.ml" in -# 549 "parser_cocci_menhir.mly" +# 529 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 36535 "parser_cocci_menhir.ml" +# 36537 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36560,24 +36562,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 36566 "parser_cocci_menhir.ml" +# 36568 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 36572 "parser_cocci_menhir.ml" +# 36574 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_rp_ in let _v : 'tv_typedef_ctype = -# 551 "parser_cocci_menhir.mly" +# 531 "parser_cocci_menhir.mly" ( let (mids,code) = t in Ast0.wrap (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) ) -# 36581 "parser_cocci_menhir.ml" +# 36583 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36599,9 +36601,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_typedef_ident = -# 1599 "parser_cocci_menhir.mly" +# 1581 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode _1)) ) -# 36605 "parser_cocci_menhir.ml" +# 36607 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36620,17 +36622,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 64 "parser_cocci_menhir.mly" +# 42 "parser_cocci_menhir.mly" (Parse_aux.info) -# 36626 "parser_cocci_menhir.ml" +# 36628 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_typedef_ident = -# 1601 "parser_cocci_menhir.mly" +# 1583 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 36634 "parser_cocci_menhir.ml" +# 36636 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36652,9 +36654,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1291 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( _1 ) -# 36658 "parser_cocci_menhir.ml" +# 36660 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36679,16 +36681,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 36685 "parser_cocci_menhir.ml" +# 36687 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1293 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 36692 "parser_cocci_menhir.ml" +# 36694 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36713,16 +36715,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 36719 "parser_cocci_menhir.ml" +# 36721 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1295 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 36726 "parser_cocci_menhir.ml" +# 36728 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36750,9 +36752,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1297 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 36756 "parser_cocci_menhir.ml" +# 36758 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36777,17 +36779,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 36783 "parser_cocci_menhir.ml" +# 36785 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1299 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 36791 "parser_cocci_menhir.ml" +# 36793 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36812,16 +36814,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 36818 "parser_cocci_menhir.ml" +# 36820 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1302 "parser_cocci_menhir.mly" +# 1284 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 36825 "parser_cocci_menhir.ml" +# 36827 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36855,29 +36857,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 36861 "parser_cocci_menhir.ml" +# 36863 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 36867 "parser_cocci_menhir.ml" +# 36869 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 36872 "parser_cocci_menhir.ml" +# 36874 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1304 "parser_cocci_menhir.mly" +# 1286 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 36881 "parser_cocci_menhir.ml" +# 36883 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36899,9 +36901,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1291 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( _1 ) -# 36905 "parser_cocci_menhir.ml" +# 36907 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36926,16 +36928,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 36932 "parser_cocci_menhir.ml" +# 36934 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1293 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 36939 "parser_cocci_menhir.ml" +# 36941 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36960,16 +36962,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 36966 "parser_cocci_menhir.ml" +# 36968 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1295 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 36973 "parser_cocci_menhir.ml" +# 36975 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -36997,9 +36999,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1297 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37003 "parser_cocci_menhir.ml" +# 37005 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37024,17 +37026,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37030 "parser_cocci_menhir.ml" +# 37032 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1299 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37038 "parser_cocci_menhir.ml" +# 37040 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37059,16 +37061,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37065 "parser_cocci_menhir.ml" +# 37067 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1302 "parser_cocci_menhir.mly" +# 1284 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 37072 "parser_cocci_menhir.ml" +# 37074 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37102,29 +37104,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 37108 "parser_cocci_menhir.ml" +# 37110 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37114 "parser_cocci_menhir.ml" +# 37116 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37119 "parser_cocci_menhir.ml" +# 37121 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1304 "parser_cocci_menhir.mly" +# 1286 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 37128 "parser_cocci_menhir.ml" +# 37130 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37146,9 +37148,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1291 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( _1 ) -# 37152 "parser_cocci_menhir.ml" +# 37154 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37173,16 +37175,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 37179 "parser_cocci_menhir.ml" +# 37181 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1293 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 37186 "parser_cocci_menhir.ml" +# 37188 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37207,16 +37209,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 37213 "parser_cocci_menhir.ml" +# 37215 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1295 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 37220 "parser_cocci_menhir.ml" +# 37222 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37244,9 +37246,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1297 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37250 "parser_cocci_menhir.ml" +# 37252 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37271,17 +37273,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37277 "parser_cocci_menhir.ml" +# 37279 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1299 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37285 "parser_cocci_menhir.ml" +# 37287 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37306,16 +37308,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37312 "parser_cocci_menhir.ml" +# 37314 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1302 "parser_cocci_menhir.mly" +# 1284 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 37319 "parser_cocci_menhir.ml" +# 37321 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37349,29 +37351,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 37355 "parser_cocci_menhir.ml" +# 37357 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37361 "parser_cocci_menhir.ml" +# 37363 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37366 "parser_cocci_menhir.ml" +# 37368 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1304 "parser_cocci_menhir.mly" +# 1286 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 37375 "parser_cocci_menhir.ml" +# 37377 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37393,9 +37395,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1291 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( _1 ) -# 37399 "parser_cocci_menhir.ml" +# 37401 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37420,16 +37422,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 37426 "parser_cocci_menhir.ml" +# 37428 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1293 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 37433 "parser_cocci_menhir.ml" +# 37435 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37454,16 +37456,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in let _1 : ( -# 85 "parser_cocci_menhir.mly" +# 63 "parser_cocci_menhir.mly" (Data.clt) -# 37460 "parser_cocci_menhir.ml" +# 37462 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1295 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 37467 "parser_cocci_menhir.ml" +# 37469 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37491,9 +37493,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1297 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37497 "parser_cocci_menhir.ml" +# 37499 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37518,17 +37520,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in let _1 : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37524 "parser_cocci_menhir.ml" +# 37526 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1299 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 37532 "parser_cocci_menhir.ml" +# 37534 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37553,16 +37555,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct } = _menhir_stack in let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in let _1 : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37559 "parser_cocci_menhir.ml" +# 37561 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1302 "parser_cocci_menhir.mly" +# 1284 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 37566 "parser_cocci_menhir.ml" +# 37568 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37596,29 +37598,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct }; } = _menhir_stack in let rp : ( -# 77 "parser_cocci_menhir.mly" +# 55 "parser_cocci_menhir.mly" (Data.clt) -# 37602 "parser_cocci_menhir.ml" +# 37604 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( -# 76 "parser_cocci_menhir.mly" +# 54 "parser_cocci_menhir.mly" (Data.clt) -# 37608 "parser_cocci_menhir.ml" +# 37610 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( -# 58 "parser_cocci_menhir.mly" +# 36 "parser_cocci_menhir.mly" (Data.clt) -# 37613 "parser_cocci_menhir.ml" +# 37615 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1304 "parser_cocci_menhir.mly" +# 1286 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 37622 "parser_cocci_menhir.ml" +# 37624 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37637,16 +37639,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 93 "parser_cocci_menhir.mly" +# 71 "parser_cocci_menhir.mly" (Data.clt) -# 37643 "parser_cocci_menhir.ml" +# 37645 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1308 "parser_cocci_menhir.mly" +# 1290 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.GetRef _1 ) -# 37650 "parser_cocci_menhir.ml" +# 37652 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37665,16 +37667,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 37671 "parser_cocci_menhir.ml" +# 37673 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1309 "parser_cocci_menhir.mly" +# 1291 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.DeRef _1 ) -# 37678 "parser_cocci_menhir.ml" +# 37680 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37693,16 +37695,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) -# 37699 "parser_cocci_menhir.ml" +# 37701 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1310 "parser_cocci_menhir.mly" +# 1292 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.UnPlus _1 ) -# 37706 "parser_cocci_menhir.ml" +# 37708 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37721,16 +37723,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 98 "parser_cocci_menhir.mly" +# 76 "parser_cocci_menhir.mly" (Data.clt) -# 37727 "parser_cocci_menhir.ml" +# 37729 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1311 "parser_cocci_menhir.mly" +# 1293 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.UnMinus _1 ) -# 37734 "parser_cocci_menhir.ml" +# 37736 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37749,16 +37751,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 99 "parser_cocci_menhir.mly" +# 77 "parser_cocci_menhir.mly" (Data.clt) -# 37755 "parser_cocci_menhir.ml" +# 37757 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1312 "parser_cocci_menhir.mly" +# 1294 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Tilde _1 ) -# 37762 "parser_cocci_menhir.ml" +# 37764 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37786,9 +37788,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_when_start = -# 1819 "parser_cocci_menhir.mly" +# 1801 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS((Ast0.wrap(Ast0.Exp(_1)))::_2)) ) -# 37792 "parser_cocci_menhir.ml" +# 37794 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37816,9 +37818,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_when_start = -# 1821 "parser_cocci_menhir.mly" +# 1803 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1@_2)) ) -# 37822 "parser_cocci_menhir.ml" +# 37824 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37840,9 +37842,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_w_ in let _endpos = _endpos_w_ in let _v : 'tv_whenppdecs = -# 894 "parser_cocci_menhir.mly" +# 876 "parser_cocci_menhir.mly" ( w ) -# 37846 "parser_cocci_menhir.ml" +# 37848 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37876,9 +37878,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = -# 1887 "parser_cocci_menhir.mly" +# 1869 "parser_cocci_menhir.mly" ( [Ast0.WhenNot w] ) -# 37882 "parser_cocci_menhir.ml" +# 37884 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37912,9 +37914,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = -# 1888 "parser_cocci_menhir.mly" +# 1870 "parser_cocci_menhir.mly" ( [Ast0.WhenAlways w] ) -# 37918 "parser_cocci_menhir.ml" +# 37920 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37944,9 +37946,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = -# 1890 "parser_cocci_menhir.mly" +# 1872 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.WhenModifier(x)) _2 ) -# 37950 "parser_cocci_menhir.ml" +# 37952 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -37980,9 +37982,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = -# 1891 "parser_cocci_menhir.mly" +# 1873 "parser_cocci_menhir.mly" ( [Ast0.WhenNotTrue e] ) -# 37986 "parser_cocci_menhir.ml" +# 37988 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -38016,9 +38018,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = -# 1892 "parser_cocci_menhir.mly" +# 1874 "parser_cocci_menhir.mly" ( [Ast0.WhenNotFalse e] ) -# 38022 "parser_cocci_menhir.ml" +# 38024 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -38040,105 +38042,105 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rec script_meta_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1794 lexer lexbuf) : ( -# 159 "parser_cocci_menhir.mly" +# 137 "parser_cocci_menhir.mly" (string * (string * string)) -# 38046 "parser_cocci_menhir.ml" +# 38048 "parser_cocci_menhir.ml" )) and rule_name = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1724 lexer lexbuf) : ( -# 153 "parser_cocci_menhir.mly" +# 131 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 38054 "parser_cocci_menhir.ml" +# 38056 "parser_cocci_menhir.ml" )) and reinit = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1722 lexer lexbuf) : ( -# 131 "parser_cocci_menhir.mly" +# 109 "parser_cocci_menhir.mly" (unit) -# 38062 "parser_cocci_menhir.ml" +# 38064 "parser_cocci_menhir.ml" )) and plus_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1686 lexer lexbuf) : ( -# 140 "parser_cocci_menhir.mly" +# 118 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 38070 "parser_cocci_menhir.ml" +# 38072 "parser_cocci_menhir.ml" )) and plus_exp_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1678 lexer lexbuf) : ( -# 143 "parser_cocci_menhir.mly" +# 121 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 38078 "parser_cocci_menhir.ml" +# 38080 "parser_cocci_menhir.ml" )) and never_used = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1672 lexer lexbuf) : ( -# 168 "parser_cocci_menhir.mly" +# 146 "parser_cocci_menhir.mly" (unit) -# 38086 "parser_cocci_menhir.ml" +# 38088 "parser_cocci_menhir.ml" )) and minus_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1592 lexer lexbuf) : ( -# 134 "parser_cocci_menhir.mly" +# 112 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 38094 "parser_cocci_menhir.ml" +# 38096 "parser_cocci_menhir.ml" )) and minus_exp_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1580 lexer lexbuf) : ( -# 137 "parser_cocci_menhir.mly" +# 115 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 38102 "parser_cocci_menhir.ml" +# 38104 "parser_cocci_menhir.ml" )) and meta_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1577 lexer lexbuf) : ( -# 157 "parser_cocci_menhir.mly" +# 135 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 38110 "parser_cocci_menhir.ml" +# 38112 "parser_cocci_menhir.ml" )) and iso_rule_name = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1573 lexer lexbuf) : ( -# 149 "parser_cocci_menhir.mly" +# 127 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 38118 "parser_cocci_menhir.ml" +# 38120 "parser_cocci_menhir.ml" )) and iso_meta_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 1338 lexer lexbuf) : ( -# 165 "parser_cocci_menhir.mly" +# 143 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 38126 "parser_cocci_menhir.ml" +# 38128 "parser_cocci_menhir.ml" )) and iso_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 18 lexer lexbuf) : ( -# 162 "parser_cocci_menhir.mly" +# 140 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 38134 "parser_cocci_menhir.ml" +# 38136 "parser_cocci_menhir.ml" )) and include_main = fun lexer lexbuf -> (Obj.magic (MenhirInterpreter.entry 0 lexer lexbuf) : ( -# 146 "parser_cocci_menhir.mly" +# 124 "parser_cocci_menhir.mly" (Data.incl_iso list) -# 38142 "parser_cocci_menhir.ml" +# 38144 "parser_cocci_menhir.ml" )) diff --git a/parsing_cocci/parser_cocci_menhir.mly b/parsing_cocci/parser_cocci_menhir.mly index 98e1858..ff0aaaf 100644 --- a/parsing_cocci/parser_cocci_menhir.mly +++ b/parsing_cocci/parser_cocci_menhir.mly @@ -1,25 +1,3 @@ -/* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - */ - - %{ (* Not clear how to allow function declarations to specify a return type @@ -273,11 +251,13 @@ metadec: { P.create_fresh_metadec kindfn ids } | ar=arity ispure=pure kindfn=metakind_atomic - ids=comma_list(pure_ident_or_meta_ident_with_idconstraint(re_or_not_eqid)) TMPtVirg + ids=comma_list(pure_ident_or_meta_ident_with_idconstraint(re_or_not_eqid)) + TMPtVirg { P.create_metadec_with_constraints ar ispure kindfn ids } | ar=arity ispure=pure kindfn=metakind_atomic_expi - ids=comma_list(pure_ident_or_meta_ident_with_econstraint(re_or_not_eqe)) TMPtVirg + ids=comma_list(pure_ident_or_meta_ident_with_econstraint(re_or_not_eqe)) + TMPtVirg { P.create_metadec_with_constraints ar ispure kindfn ids } | ar=arity ispure=pure kindfn=metakind_atomic_expe @@ -634,7 +614,8 @@ filespec: includes: TIncludeL { Ast0.wrap - (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt $1)), + (Ast0.Include(P.clt2mcode "#include" + (P.drop_pos (P.drop_aft (P.id2clt $1))), let (arity,ln,lln,offset,col,strbef,straft,pos) = P.id2clt $1 in let clt = @@ -644,7 +625,8 @@ includes: (P.drop_bef clt))) } | TIncludeNL { Ast0.wrap - (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt $1)), + (Ast0.Include(P.clt2mcode "#include" + (P.drop_pos (P.drop_aft (P.id2clt $1))), let (arity,ln,lln,offset,col,strbef,straft,pos) = P.id2clt $1 in let clt = diff --git a/parsing_cocci/plus.ml b/parsing_cocci/plus.ml index 4faa771..4f0fd91 100644 --- a/parsing_cocci/plus.ml +++ b/parsing_cocci/plus.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* The plus fragments are converted to a list of lists of lists. Innermost list: Elements have type anything. For any pair of successive elements, n and n+1, the ending line of n is the same as the starting line diff --git a/parsing_cocci/plus.mli b/parsing_cocci/plus.mli dissimilarity index 90% index 82c6d99..512f516 100644 --- a/parsing_cocci/plus.mli +++ b/parsing_cocci/plus.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val plus : - Ast_cocci.rule -> - (Ast_cocci.anything * int * int * int * int) list list list +val plus : + Ast_cocci.rule -> + (Ast_cocci.anything * int * int * int * int) list list list diff --git a/parsing_cocci/pretty_print_cocci.ml b/parsing_cocci/pretty_print_cocci.ml index 0a23553..0a7cfa5 100644 --- a/parsing_cocci/pretty_print_cocci.ml +++ b/parsing_cocci/pretty_print_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Format module Ast = Ast_cocci @@ -821,7 +799,8 @@ let rec dep in_and = function if not in_and then print_or () else (print_string "("; print_or(); print_string ")") - | Ast.NoDep -> failwith "not possible" + | Ast.NoDep -> print_string "no_dep" + | Ast.FailDep -> print_string "fail_dep" let unparse z = match z with diff --git a/parsing_cocci/pretty_print_cocci.mli b/parsing_cocci/pretty_print_cocci.mli index bd36ad8..c06c941 100644 --- a/parsing_cocci/pretty_print_cocci.mli +++ b/parsing_cocci/pretty_print_cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - val unparse : Ast_cocci.rule -> unit val unparse_to_string : Ast_cocci.rule -> string val expression : Ast_cocci.expression -> unit diff --git a/parsing_cocci/semantic_cocci.ml b/parsing_cocci/semantic_cocci.ml dissimilarity index 97% index fce6bd8..bbea4c9 100644 --- a/parsing_cocci/semantic_cocci.ml +++ b/parsing_cocci/semantic_cocci.ml @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -exception Semantic of string +exception Semantic of string diff --git a/parsing_cocci/simple_assignments.ml b/parsing_cocci/simple_assignments.ml index 789244a..e9d8f28 100644 --- a/parsing_cocci/simple_assignments.ml +++ b/parsing_cocci/simple_assignments.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 diff --git a/parsing_cocci/simple_assignments.mli b/parsing_cocci/simple_assignments.mli dissimilarity index 93% index ca5d7b4..e9d4c89 100644 --- a/parsing_cocci/simple_assignments.mli +++ b/parsing_cocci/simple_assignments.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val simple_assignments : Ast0_cocci.rule -> Ast0_cocci.rule +val simple_assignments : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/single_statement.ml b/parsing_cocci/single_statement.ml index ce72644..58f04dc 100644 --- a/parsing_cocci/single_statement.ml +++ b/parsing_cocci/single_statement.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* detect statements that are between dots in the minus code, because they may need a special treatment if they are if branches *) diff --git a/parsing_cocci/single_statement.mli b/parsing_cocci/single_statement.mli dissimilarity index 94% index 78e3644..eee3744 100644 --- a/parsing_cocci/single_statement.mli +++ b/parsing_cocci/single_statement.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val single_statement : Ast0_cocci.rule -> Ast0_cocci.rule +val single_statement : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/test.cocci b/parsing_cocci/test.cocci index 2f14029..5683b49 100644 --- a/parsing_cocci/test.cocci +++ b/parsing_cocci/test.cocci @@ -1,23 +1,3 @@ -// Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -// Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -// This file is part of Coccinelle. -// -// Coccinelle is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, according to version 2 of the License. -// -// Coccinelle is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Coccinelle. If not, see . -// -// The authors reserve the right to distribute this or future versions of -// Coccinelle under other licenses. - - @@ struct SHT sht; local function proc_info_func; diff --git a/parsing_cocci/test2.cocci b/parsing_cocci/test2.cocci index b0d3b62..62ec534 100644 --- a/parsing_cocci/test2.cocci +++ b/parsing_cocci/test2.cocci @@ -1,23 +1,3 @@ -// Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -// Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -// This file is part of Coccinelle. -// -// Coccinelle is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, according to version 2 of the License. -// -// Coccinelle is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Coccinelle. If not, see . -// -// The authors reserve the right to distribute this or future versions of -// Coccinelle under other licenses. - - @@ struct SHT sht; local function proc_info_func; diff --git a/parsing_cocci/test_exps.ml b/parsing_cocci/test_exps.ml index 3c2c139..e883496 100644 --- a/parsing_cocci/test_exps.ml +++ b/parsing_cocci/test_exps.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 diff --git a/parsing_cocci/test_exps.mli b/parsing_cocci/test_exps.mli dissimilarity index 89% index f5dcb5e..29d5ced 100644 --- a/parsing_cocci/test_exps.mli +++ b/parsing_cocci/test_exps.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val process : Ast0_cocci.rule -> Ast0_cocci.rule - -val process_anything : Ast0_cocci.anything -> Ast0_cocci.anything +val process : Ast0_cocci.rule -> Ast0_cocci.rule + +val process_anything : Ast0_cocci.anything -> Ast0_cocci.anything diff --git a/parsing_cocci/top_level.ml b/parsing_cocci/top_level.ml index dea5573..be12362 100644 --- a/parsing_cocci/top_level.ml +++ b/parsing_cocci/top_level.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* Reorganize the top level of a rule to be a list of either top-level declarations or code dots. A function declaration is always considered top level. A statement is always considered code dots. A variable declaration diff --git a/parsing_cocci/top_level.mli b/parsing_cocci/top_level.mli dissimilarity index 94% index f150d93..1829d3e 100644 --- a/parsing_cocci/top_level.mli +++ b/parsing_cocci/top_level.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val top_level : Ast0_cocci.rule -> Ast0_cocci.rule +val top_level : Ast0_cocci.rule -> Ast0_cocci.rule diff --git a/parsing_cocci/type_cocci.ml b/parsing_cocci/type_cocci.ml index b4bd0a2..1486122 100644 --- a/parsing_cocci/type_cocci.ml +++ b/parsing_cocci/type_cocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* for metavariables in general, but here because needed for metatypes *) type inherited = bool (* true if inherited *) type keep_binding = Unitary (* need no info *) diff --git a/parsing_cocci/type_cocci.mli b/parsing_cocci/type_cocci.mli index 6ebd07c..73185b0 100644 --- a/parsing_cocci/type_cocci.mli +++ b/parsing_cocci/type_cocci.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - type inherited = bool (* true if inherited *) type keep_binding = Unitary (* need no info *) | Nonunitary (* need an env entry *) | Saved (* need a witness *) diff --git a/parsing_cocci/type_infer.ml b/parsing_cocci/type_infer.ml index 5d96ce6..9f68611 100644 --- a/parsing_cocci/type_infer.ml +++ b/parsing_cocci/type_infer.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module T = Type_cocci module Ast = Ast_cocci module Ast0 = Ast0_cocci diff --git a/parsing_cocci/type_infer.mli b/parsing_cocci/type_infer.mli dissimilarity index 95% index 70d2f8a..796c6c7 100644 --- a/parsing_cocci/type_infer.mli +++ b/parsing_cocci/type_infer.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val type_infer : Ast0_cocci.rule -> unit +val type_infer : Ast0_cocci.rule -> unit diff --git a/parsing_cocci/unify_ast.ml b/parsing_cocci/unify_ast.ml index 59a14fa..4d900b1 100644 --- a/parsing_cocci/unify_ast.ml +++ b/parsing_cocci/unify_ast.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* --------------------------------------------------------------------- *) (* Given two patterns, A and B, determine whether B can match any matched subterms of A. For simplicity, this doesn't maintain an environment; it diff --git a/parsing_cocci/unify_ast.mli b/parsing_cocci/unify_ast.mli dissimilarity index 87% index e15f799..95a7d6f 100644 --- a/parsing_cocci/unify_ast.mli +++ b/parsing_cocci/unify_ast.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type res = NO | MAYBE - -val unify_statement_dots : - Ast_cocci.statement Ast_cocci.dots -> - Ast_cocci.statement Ast_cocci.dots -> res +type res = NO | MAYBE + +val unify_statement_dots : + Ast_cocci.statement Ast_cocci.dots -> + Ast_cocci.statement Ast_cocci.dots -> res diff --git a/parsing_cocci/unitary_ast0.ml b/parsing_cocci/unitary_ast0.ml index 77d3bc4..61a3847 100644 --- a/parsing_cocci/unitary_ast0.ml +++ b/parsing_cocci/unitary_ast0.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* find unitary metavariables *) module Ast0 = Ast0_cocci module Ast = Ast_cocci diff --git a/parsing_cocci/unitary_ast0.mli b/parsing_cocci/unitary_ast0.mli dissimilarity index 69% index 1ad6368..8aa5873 100644 --- a/parsing_cocci/unitary_ast0.mli +++ b/parsing_cocci/unitary_ast0.mli @@ -1,34 +1,12 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* 'iso is the return type of parse_iso, which currently is -(Ast_cocci.metavar list * Ast0_cocci.anything list list) list *) - -(* -val do_unitary : - (Ast0_cocci.rule * Ast_cocci.metavar list * 'iso) list -> - (Ast0_cocci.rule * Ast_cocci.metavar list) list -> - (Ast0_cocci.rule * Ast_cocci.metavar list * 'iso) list -*) - -val do_unitary : - Ast0_cocci.parsed_rule list -> Ast0_cocci.parsed_rule list +(* 'iso is the return type of parse_iso, which currently is +(Ast_cocci.metavar list * Ast0_cocci.anything list list) list *) + +(* +val do_unitary : + (Ast0_cocci.rule * Ast_cocci.metavar list * 'iso) list -> + (Ast0_cocci.rule * Ast_cocci.metavar list) list -> + (Ast0_cocci.rule * Ast_cocci.metavar list * 'iso) list +*) + +val do_unitary : + Ast0_cocci.parsed_rule list -> Ast0_cocci.parsed_rule list diff --git a/parsing_cocci/unparse_ast0.ml b/parsing_cocci/unparse_ast0.ml index 42e4acd..8fbd4b2 100644 --- a/parsing_cocci/unparse_ast0.ml +++ b/parsing_cocci/unparse_ast0.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Format module Ast0 = Ast0_cocci module U = Pretty_print_cocci diff --git a/parsing_cocci/unparse_ast0.mli b/parsing_cocci/unparse_ast0.mli dissimilarity index 60% index b0adbb4..6f66fc0 100644 --- a/parsing_cocci/unparse_ast0.mli +++ b/parsing_cocci/unparse_ast0.mli @@ -1,35 +1,13 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val expression_dots : Ast0_cocci.expression Ast0_cocci.dots -> unit -val parameter_list : Ast0_cocci.parameterTypeDef Ast0_cocci.dots -> unit -val statement_dots : Ast0_cocci.statement Ast0_cocci.dots -> unit -val ident : Ast0_cocci.ident -> unit -val expression : Ast0_cocci.expression -> unit -val typeC : Ast0_cocci.typeC -> unit -val parameterTypeDef : Ast0_cocci.parameterTypeDef -> unit -val declaration : Ast0_cocci.declaration -> unit -val statement : string -> Ast0_cocci.statement -> unit -val top_level : Ast0_cocci.top_level -> unit - -val unparse : Ast0_cocci.rule -> unit -val unparse_anything : Ast0_cocci.anything -> unit +val expression_dots : Ast0_cocci.expression Ast0_cocci.dots -> unit +val parameter_list : Ast0_cocci.parameterTypeDef Ast0_cocci.dots -> unit +val statement_dots : Ast0_cocci.statement Ast0_cocci.dots -> unit +val ident : Ast0_cocci.ident -> unit +val expression : Ast0_cocci.expression -> unit +val typeC : Ast0_cocci.typeC -> unit +val parameterTypeDef : Ast0_cocci.parameterTypeDef -> unit +val declaration : Ast0_cocci.declaration -> unit +val statement : string -> Ast0_cocci.statement -> unit +val top_level : Ast0_cocci.top_level -> unit + +val unparse : Ast0_cocci.rule -> unit +val unparse_anything : Ast0_cocci.anything -> unit diff --git a/parsing_cocci/visitor_ast.ml b/parsing_cocci/visitor_ast.ml index d8be92b..c21cabf 100644 --- a/parsing_cocci/visitor_ast.ml +++ b/parsing_cocci/visitor_ast.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module Ast = Ast_cocci diff --git a/parsing_cocci/visitor_ast.mli b/parsing_cocci/visitor_ast.mli index 9a4f89b..9e2060c 100644 --- a/parsing_cocci/visitor_ast.mli +++ b/parsing_cocci/visitor_ast.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - type 'a combiner = {combiner_ident : Ast_cocci.ident -> 'a; combiner_expression : Ast_cocci.expression -> 'a; diff --git a/parsing_cocci/visitor_ast0.ml b/parsing_cocci/visitor_ast0.ml index 37aac22..378696c 100644 --- a/parsing_cocci/visitor_ast0.ml +++ b/parsing_cocci/visitor_ast0.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* --------------------------------------------------------------------- *) (* Generic traversal: rebuilder *) diff --git a/parsing_cocci/visitor_ast0.mli b/parsing_cocci/visitor_ast0.mli index 9ec67ce..14b8212 100644 --- a/parsing_cocci/visitor_ast0.mli +++ b/parsing_cocci/visitor_ast0.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - val combiner_functions : 'a Visitor_ast0_types.combiner_functions val combiner : ('a -> 'a -> 'a) -> diff --git a/parsing_cocci/visitor_ast0_types.ml b/parsing_cocci/visitor_ast0_types.ml index 21a12c1..a679616 100644 --- a/parsing_cocci/visitor_ast0_types.ml +++ b/parsing_cocci/visitor_ast0_types.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast0 = Ast0_cocci module Ast = Ast_cocci diff --git a/popl/Makefile b/popl/Makefile index 326f20b..e77bc96 100644 --- a/popl/Makefile +++ b/popl/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #note: if you add a file (a .mli or .ml), dont forget to do a make depend -include ../Makefile.config diff --git a/popl/ast_popl.ml b/popl/ast_popl.ml dissimilarity index 69% index 7b128ab..cedb917 100644 --- a/popl/ast_popl.ml +++ b/popl/ast_popl.ml @@ -1,38 +1,16 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type sequence = - Seq of element * sequence - | Empty - | SExists of Ast_cocci.meta_name * sequence - -and element = - Term of Ast_cocci.rule_elem - | Or of sequence * sequence - | DInfo of dots * element list (* before *) * element list (* after *) - | EExists of Ast_cocci.meta_name * element - -and dots = - Dots - | Nest of sequence - | When of dots * sequence - | DExists of Ast_cocci.meta_name * dots +type sequence = + Seq of element * sequence + | Empty + | SExists of Ast_cocci.meta_name * sequence + +and element = + Term of Ast_cocci.rule_elem + | Or of sequence * sequence + | DInfo of dots * element list (* before *) * element list (* after *) + | EExists of Ast_cocci.meta_name * element + +and dots = + Dots + | Nest of sequence + | When of dots * sequence + | DExists of Ast_cocci.meta_name * dots diff --git a/popl/asttopopl.ml b/popl/asttopopl.ml index 21d5b92..fb85a8e 100644 --- a/popl/asttopopl.ml +++ b/popl/asttopopl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module Past = Ast_popl diff --git a/popl/asttopopl.mli b/popl/asttopopl.mli dissimilarity index 94% index d4d049f..5d8e4b1 100644 --- a/popl/asttopopl.mli +++ b/popl/asttopopl.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val top : Ast_cocci.top_level -> Ast_popl.sequence +val top : Ast_cocci.top_level -> Ast_popl.sequence diff --git a/popl/insert_befaft.ml b/popl/insert_befaft.ml index 32207d7..1119d2b 100644 --- a/popl/insert_befaft.ml +++ b/popl/insert_befaft.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Past = Ast_popl (* --------------------------------------------------------------------- *) diff --git a/popl/insert_befaft.mli b/popl/insert_befaft.mli dissimilarity index 94% index 30c4fab..eea1354 100644 --- a/popl/insert_befaft.mli +++ b/popl/insert_befaft.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val insert_befaft : Ast_popl.sequence -> Ast_popl.sequence +val insert_befaft : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl/insert_quantifiers.ml b/popl/insert_quantifiers.ml index daf21ea..a41da31 100644 --- a/popl/insert_quantifiers.ml +++ b/popl/insert_quantifiers.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module Past = Ast_popl diff --git a/popl/insert_quantifiers.mli b/popl/insert_quantifiers.mli dissimilarity index 93% index f0d7622..b8eef27 100644 --- a/popl/insert_quantifiers.mli +++ b/popl/insert_quantifiers.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence +val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl/popl.ml b/popl/popl.ml dissimilarity index 63% index 2a82247..8c4b87d 100644 --- a/popl/popl.ml +++ b/popl/popl.ml @@ -1,39 +1,17 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -let poplz (name,_,ast) = - match ast with - [ast] -> - let ast = Asttopopl.top ast in - let ba = Insert_befaft.insert_befaft ast in - let qt = Insert_quantifiers.insert_quantifiers ba in - [Popltoctl.toctl qt] - | _ -> failwith "only one rule allowed" - -let popl r = - match r with - Ast_cocci.CocciRule (a,b,c) -> poplz (a,b,c) - | _ -> [] +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +let poplz (name,_,ast) = + match ast with + [ast] -> + let ast = Asttopopl.top ast in + let ba = Insert_befaft.insert_befaft ast in + let qt = Insert_quantifiers.insert_quantifiers ba in + [Popltoctl.toctl qt] + | _ -> failwith "only one rule allowed" + +let popl r = + match r with + Ast_cocci.CocciRule (a,b,c) -> poplz (a,b,c) + | _ -> [] diff --git a/popl/popl.mli b/popl/popl.mli dissimilarity index 81% index 8b813c2..4a7fd49 100644 --- a/popl/popl.mli +++ b/popl/popl.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val popl : Ast_cocci.rule -> formula list +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val popl : Ast_cocci.rule -> formula list diff --git a/popl/popltoctl.ml b/popl/popltoctl.ml index 7941d06..ab1c71d 100644 --- a/popl/popltoctl.ml +++ b/popl/popltoctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Past = Ast_popl module Ast = Ast_cocci module V = Visitor_ast diff --git a/popl/popltoctl.mli b/popl/popltoctl.mli dissimilarity index 81% index 0ddbb6d..b1285d1 100644 --- a/popl/popltoctl.mli +++ b/popl/popltoctl.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val toctl : Ast_popl.sequence -> formula +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val toctl : Ast_popl.sequence -> formula diff --git a/popl/pretty_print_popl.ml b/popl/pretty_print_popl.ml index 3c58341..addcf39 100644 --- a/popl/pretty_print_popl.ml +++ b/popl/pretty_print_popl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Format module Past = Ast_popl diff --git a/popl/pretty_print_popl.mli b/popl/pretty_print_popl.mli dissimilarity index 91% index 5193f26..5b3399a 100644 --- a/popl/pretty_print_popl.mli +++ b/popl/pretty_print_popl.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val pretty_print : Ast_popl.sequence -> unit -val pretty_print_e : Ast_popl.element -> unit +val pretty_print : Ast_popl.sequence -> unit +val pretty_print_e : Ast_popl.element -> unit diff --git a/popl09/.depend b/popl09/.depend index 687e676..c88af14 100644 --- a/popl09/.depend +++ b/popl09/.depend @@ -11,6 +11,8 @@ asttopopl.cmo: ../parsing_cocci/pretty_print_cocci.cmi ast_popl.cmo \ ../parsing_cocci/ast_cocci.cmi asttopopl.cmi asttopopl.cmx: ../parsing_cocci/pretty_print_cocci.cmx ast_popl.cmx \ ../parsing_cocci/ast_cocci.cmx asttopopl.cmi +flag_popl.cmo: +flag_popl.cmx: insert_quantifiers.cmo: ../commons/common.cmi ast_popl.cmo \ ../parsing_cocci/ast_cocci.cmi insert_quantifiers.cmi insert_quantifiers.cmx: ../commons/common.cmx ast_popl.cmx \ diff --git a/popl09/Makefile b/popl09/Makefile index 8e7ba83..e0cf4da 100644 --- a/popl09/Makefile +++ b/popl09/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #note: if you add a file (a .mli or .ml), dont forget to do a make depend -include ../Makefile.config diff --git a/popl09/ast_popl.ml b/popl09/ast_popl.ml dissimilarity index 61% index 79bcc6b..cbefa79 100644 --- a/popl09/ast_popl.ml +++ b/popl09/ast_popl.ml @@ -1,48 +1,26 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type sequence = - Seq of element * sequence - | Empty - | SExists of Ast_cocci.meta_name * sequence - -and term = - Atomic of Ast_cocci.rule_elem - | IfThen of term * term * Ast_cocci.end_info - | TExists of Ast_cocci.meta_name * term - -and element = - Term of term * dots_bef_aft - | Or of sequence * sequence - | DInfo of dots - | EExists of Ast_cocci.meta_name * element - -and dots = - Dots - | Nest of sequence - | When of dots * sequence - -and dots_bef_aft = - NoDots - | AddingBetweenDots of term * int (*index of let var*) - | DroppingBetweenDots of term * int (*index of let var*) - +type sequence = + Seq of element * sequence + | Empty + | SExists of Ast_cocci.meta_name * sequence + +and term = + Atomic of Ast_cocci.rule_elem + | IfThen of term * term * Ast_cocci.end_info + | TExists of Ast_cocci.meta_name * term + +and element = + Term of term * dots_bef_aft + | Or of sequence * sequence + | DInfo of dots + | EExists of Ast_cocci.meta_name * element + +and dots = + Dots + | Nest of sequence + | When of dots * sequence + +and dots_bef_aft = + NoDots + | AddingBetweenDots of term * int (*index of let var*) + | DroppingBetweenDots of term * int (*index of let var*) + diff --git a/popl09/asttopopl.ml b/popl09/asttopopl.ml index 75f649c..d7ebdc0 100644 --- a/popl09/asttopopl.ml +++ b/popl09/asttopopl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module Past = Ast_popl diff --git a/popl09/asttopopl.mli b/popl09/asttopopl.mli dissimilarity index 94% index d4d049f..5d8e4b1 100644 --- a/popl09/asttopopl.mli +++ b/popl09/asttopopl.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val top : Ast_cocci.top_level -> Ast_popl.sequence +val top : Ast_cocci.top_level -> Ast_popl.sequence diff --git a/popl09/flag_popl.ml b/popl09/flag_popl.ml dissimilarity index 94% index 465d608..fedbcee 100644 --- a/popl09/flag_popl.ml +++ b/popl09/flag_popl.ml @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -let mark_all = ref false -let keep_all_wits = ref false +let mark_all = ref false +let keep_all_wits = ref false diff --git a/popl09/insert_quantifiers.ml b/popl09/insert_quantifiers.ml index df7d6f0..59b4590 100644 --- a/popl09/insert_quantifiers.ml +++ b/popl09/insert_quantifiers.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Ast = Ast_cocci module Past = Ast_popl diff --git a/popl09/insert_quantifiers.mli b/popl09/insert_quantifiers.mli dissimilarity index 93% index f0d7622..b8eef27 100644 --- a/popl09/insert_quantifiers.mli +++ b/popl09/insert_quantifiers.mli @@ -1,23 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence +val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl09/popl.ml b/popl09/popl.ml dissimilarity index 65% index e35afcf..70ac698 100644 --- a/popl09/popl.ml +++ b/popl09/popl.ml @@ -1,38 +1,16 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -let poplz (name,_,ast) = - match ast with - [ast] -> - let ast = Asttopopl.top ast in - let qt = Insert_quantifiers.insert_quantifiers ast in - [Popltoctl.toctl qt] - | _ -> failwith "only one rule allowed" - -let popl r = - match r with - Ast_cocci.CocciRule(a,b,c,_,Ast_cocci.Normal) -> poplz (a,b,c) - | _ -> [] +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +let poplz (name,_,ast) = + match ast with + [ast] -> + let ast = Asttopopl.top ast in + let qt = Insert_quantifiers.insert_quantifiers ast in + [Popltoctl.toctl qt] + | _ -> failwith "only one rule allowed" + +let popl r = + match r with + Ast_cocci.CocciRule(a,b,c,_,Ast_cocci.Normal) -> poplz (a,b,c) + | _ -> [] diff --git a/popl09/popl.mli b/popl09/popl.mli dissimilarity index 81% index 8b813c2..4a7fd49 100644 --- a/popl09/popl.mli +++ b/popl09/popl.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val popl : Ast_cocci.rule -> formula list +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val popl : Ast_cocci.rule -> formula list diff --git a/popl09/popltoctl.ml b/popl09/popltoctl.ml index 29d5696..f01887a 100644 --- a/popl09/popltoctl.ml +++ b/popl09/popltoctl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - module Past = Ast_popl module Ast = Ast_cocci module V = Visitor_ast diff --git a/popl09/popltoctl.mli b/popl09/popltoctl.mli dissimilarity index 81% index 0ddbb6d..b1285d1 100644 --- a/popl09/popltoctl.mli +++ b/popl09/popltoctl.mli @@ -1,27 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val toctl : Ast_popl.sequence -> formula +type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif +type formula = + (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl + +val toctl : Ast_popl.sequence -> formula diff --git a/popl09/pretty_print_popl.ml b/popl09/pretty_print_popl.ml index 8364ac4..92e4f55 100644 --- a/popl09/pretty_print_popl.ml +++ b/popl09/pretty_print_popl.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Format module Past = Ast_popl module Ast = Ast_cocci diff --git a/popl09/pretty_print_popl.mli b/popl09/pretty_print_popl.mli dissimilarity index 91% index 5193f26..5b3399a 100644 --- a/popl09/pretty_print_popl.mli +++ b/popl09/pretty_print_popl.mli @@ -1,24 +1,2 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -val pretty_print : Ast_popl.sequence -> unit -val pretty_print_e : Ast_popl.element -> unit +val pretty_print : Ast_popl.sequence -> unit +val pretty_print_e : Ast_popl.element -> unit diff --git a/python/Makefile b/python/Makefile index 0db70e2..7a8d9bd 100644 --- a/python/Makefile +++ b/python/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - ############################################################################# # Configuration section ############################################################################# diff --git a/python/coccilib/Makefile b/python/coccilib/Makefile index 9520e41..6b27918 100644 --- a/python/coccilib/Makefile +++ b/python/coccilib/Makefile @@ -8,3 +8,5 @@ depend: clean: set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i clean; done rm -f *.pyc + +distclean: clean diff --git a/python/coccilib/org.py b/python/coccilib/org.py dissimilarity index 72% index 23b6d38..3557af1 100644 --- a/python/coccilib/org.py +++ b/python/coccilib/org.py @@ -1,9 +1,24 @@ -def print_main(msg, p, color="ovl-face1") : - print "* TODO [[view:%s::face=%s::linb=%s::colb=%s::cole=%s][%s %s::%s]]" % (p[0].file,color,p[0].line,p[0].column,p[0].column_end,msg,p[0].file,p[0].line) - -def print_sec(msg, p, color="ovl-face2") : - print "[[view:%s::face=%s::linb=%s::colb=%s::cole=%s][%s]]" % (p[0].file,color,p[0].line,p[0].column,p[0].column_end,msg) - -def print_secs(msg, ps, color="ovl-face2") : - for i in ps: - print "[[view:%s::face=%s::linb=%s::colb=%s::cole=%s][%s]]" % (i.file,color,i.line,i.column,i.column_end,msg) +def build_link(p, msg, color) : + return "[[view:%s::face=%s::linb=%s::colb=%s::cole=%s][%s]]" % (p.file,color,p.line,p.column,p.column_end,msg) + +def print_todo(p, msg="", color="ovl-face1") : + link = build_link(p, msg, color) + print "* TODO %s" % (link) + +def print_link(p, msg="", color="ovl-face1") : + print (build_link(p, msg, color)) + +# +# print_main, print_sec and print_secs +# will be deprecated. +# +def print_main(msg, p, color="ovl-face1") : + oldmsgfmt = "%s %s::%s" % (msg,p[0].file,p[0].line) + print_todo(p[0], oldmsgfmt, color) + +def print_sec(msg, p, color="ovl-face2") : + print_link(p[0], msg, color) + +def print_secs(msg, ps, color="ovl-face2") : + for i in ps: + print_link (i, msg, color) diff --git a/python/no_pycocci.ml b/python/no_pycocci.ml index f3aa8a8..49d156e 100644 --- a/python/no_pycocci.ml +++ b/python/no_pycocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ast_c open Common open Pycocci_aux @@ -27,6 +5,8 @@ module StringMap = Map.Make (String) exception Pycocciexception +let python_support = false + let check_return_value v = failwith "no python" let check_int_return_value v = failwith "no python" diff --git a/python/no_pycocci_aux.ml b/python/no_pycocci_aux.ml index 0867b6c..9a7411e 100644 --- a/python/no_pycocci_aux.ml +++ b/python/no_pycocci_aux.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ast_c open Common diff --git a/python/yes_pycocci.ml b/python/yes_pycocci.ml index f6e272f..b507c55 100644 --- a/python/yes_pycocci.ml +++ b/python/yes_pycocci.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ast_c open Common open Pycaml @@ -28,6 +6,8 @@ module StringMap = Map.Make (String) exception Pycocciexception +let python_support = true + (* ------------------------------------------------------------------- *) (* The following definitions are from http://patches.ubuntu.com/by-release/extracted/debian/c/coccinelle/0.1.5dbs-2/01-system-pycaml diff --git a/python/yes_pycocci_aux.ml b/python/yes_pycocci_aux.ml index 3a0f0d9..d06b470 100644 --- a/python/yes_pycocci_aux.ml +++ b/python/yes_pycocci_aux.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Ast_c open Common open Pycaml diff --git a/scripts/coccicheck/Makefile b/scripts/coccicheck/Makefile index 6a03dd3..55fc0ee 100644 --- a/scripts/coccicheck/Makefile +++ b/scripts/coccicheck/Makefile @@ -1,9 +1,9 @@ -PREFIX?=/tobedefine -PROJECT?=/myproject -SPFLAGS?="-timeout 60" # -use_glimpse -D diff +PREFIX?=/home/npalix/Documents/build/coccinelle/scripts/coccicheck +PROJECT?=/ +SPFLAGS?="-timeout 60 -use_glimpse -D org" -COCCI?=/tobedefine/cocci -RESULTS?=/tobedefine/results +COCCI?=/home/npalix/Documents/build/coccinelle/scripts/coccicheck/cocci +RESULTS?=/home/npalix/Documents/build/coccinelle/scripts/coccicheck/results .PHONY:: update viewlog viewfilteredlog viewres checkcocci .PHONY:: all clean distclean depend @@ -15,7 +15,7 @@ update: ./bin/update_result_tree $(PREFIX) $(PROJECT) $(COCCI) $(RESULTS) $(SPFLAGS) viewlog: - find $(RESULTS) -name "*.log" | xargs cat | less + find $(RESULTS) -name "*.log" | xargs cat | pager viewfilteredlog: find $(RESULTS) -name "*.log" | xargs cat | \ @@ -34,10 +34,10 @@ viewfilteredlog: grep -v "not worth trying" | \ grep -v "MultiFound field:" | \ grep -ve "(ONCE) warning: I consider .* as a constant" | \ - grep -ve "TYPE: header .* not found" + grep -ve "TYPE: header .* not found" viewres: - find $(RESULTS) -name "*.out" | xargs less + find $(RESULTS) -name "*.out" | xargs pager checkcocci: for c in `find $(COCCI) -name "*.cocci"`; do spatch -parse_cocci $$c > /dev/null ; done @@ -46,7 +46,7 @@ clean: find $(RESULTS) -name "*.out" -delete find $(RESULTS) -name "*.log" -delete -distclean: +distclean: rm -rf $(RESULTS) depend: update diff --git a/scripts/coccicheck/README b/scripts/coccicheck/README index 6044c75..e604d0e 100644 --- a/scripts/coccicheck/README +++ b/scripts/coccicheck/README @@ -1,15 +1,20 @@ - Coccicheck version 0.1 + Coccicheck version 0.2.2 -*- Usage -*- 1) ./configure mode This will setup some default directories. - Check if they suit you! + Check in Makefile if they suit you! mode is either org or diff, depending on whether you want the output in Emacs org mode, or in diff format where - indicates not something to remove but an item of interest. + NB: The project directory must currently be an absolute path. + + You can overwrite the default flags on the command line: + SPFLAGS="-I my_include -timeout 30" ./configure mode + 2) make update This will create the `results` directory. It will contain all the files needed diff --git a/scripts/coccicheck/bin/update_result_tree b/scripts/coccicheck/bin/update_result_tree index 17231cd..af552c3 100755 --- a/scripts/coccicheck/bin/update_result_tree +++ b/scripts/coccicheck/bin/update_result_tree @@ -6,6 +6,13 @@ echo "Using COCCI="${COCCI:=$3} echo "Using RESULTS="${RESULTS:=$4} echo "Using SPFLAGS="${SPFLAGS:=$5} +if [ "`which spatch.opt`" ] ; then + SPATCH=spatch.opt +else + SPATCH=spatch +fi +echo "Using $SPATCH" + #echo "Using PREFIX="${PREFIX:=`pwd`} #echo "Using COCCI="${COCCI:=$PREFIX/cocci} #echo "Using PROJECT="${PROJECT:=$PREFIX/project} @@ -29,14 +36,14 @@ for s in $SMPL;do echo "FLAGS=\"`grep -E \"// +Options *:\" $COCCI/$s | cut -f2 -d\":\"`\"" >> $RESULTS/$f.sh echo "INC=$PROJECT/include" >> $RESULTS/$f.sh echo "echo \"Applying $COCCI/$s with: '\$FLAGS'\"" >> $RESULTS/$f.sh - echo "nice -19 spatch.opt $SPFLAGS \$FLAGS -I \$INC -cocci_file $COCCI/$s -dir $PROJECT/ $FLAGS \\" >> $RESULTS/$f.sh + echo "nice -19 $SPATCH $SPFLAGS \$FLAGS -I \$INC -cocci_file $COCCI/$s -dir $PROJECT/ $FLAGS \\" >> $RESULTS/$f.sh echo "> $f.out \\" >> $RESULTS/$f.sh echo "2> $f.log" >> $RESULTS/$f.sh echo "echo \"$f.out completed\"" >> $RESULTS/$f.sh chmod u+x $RESULTS/$f.sh done # s in $SMPL - + ############################################# # Fill the Makefile @@ -46,7 +53,7 @@ echo -e ".SUFFIXES: .out .sh\n" > $RESULTS/Makefile echo -e "all: out\n" >> $RESULTS/Makefile echo -e ".sh.out:" >> $RESULTS/Makefile echo -e "\t-@./\$<\n" >> $RESULTS/Makefile - + ALL_SMPL=`echo -n "out:"` for s in $SMPL;do @@ -55,14 +62,14 @@ for s in $SMPL;do # echo "$f.out:" >> $RESULTS/Makefile # echo " -./$f.sh" >> $RESULTS/Makefile ALL_SMPL="$ALL_SMPL $f.out" - + done # s - + echo "$ALL_SMPL" >> $RESULTS/Makefile ############################################# -# Cleanup dead links +# Cleanup dead links find -L $RESULTS -type l -delete # Cleanup empty dir. find results/ -depth -type d -empty -delete diff --git a/scripts/coccicheck/cocci/kc.cocci b/scripts/coccicheck/cocci/kc.cocci new file mode 100644 index 0000000..49f3500 --- /dev/null +++ b/scripts/coccicheck/cocci/kc.cocci @@ -0,0 +1,35 @@ +// +// Use kzalloc rather than kcalloc(1,...) +// +// Confidence: +// Copyright: (C) Gilles Muller, Julia Lawall, EMN, DIKU. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Options: + +virtual org,patch,diff + +@depends on patch && !org && !diff@ +@@ + +- kcalloc(1, ++ kzalloc( + ...) + +@depends on !patch && !org && diff@ +position p; +@@ + +*kcalloc@p(1,...) + +@r depends on !patch && org && !diff@ +position p; +@@ + + kcalloc@p(1,...) + +@script:python depends on org@ +p << r.p; +@@ + +msg="%s:%s" % (p[0].file, p[0].line) +cocci.print_main(msg, p) diff --git a/scripts/coccicheck/cocci/kzmem.cocci b/scripts/coccicheck/cocci/kzmem.cocci new file mode 100644 index 0000000..40e9fa3 --- /dev/null +++ b/scripts/coccicheck/cocci/kzmem.cocci @@ -0,0 +1,47 @@ +// Remove useless call to memset for zeroing memory +// after a kzalloc call. +// +// Confidence: +// Copyright: (C) Gilles Muller, Julia Lawall, EMN, DIKU. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Options: + +virtual org,patch,diff + +@depends on patch && !org && !diff@ +expression x; +statement S; +@@ + +x = kzalloc(...); +if (x == NULL) S +... when != x +-memset(x,0,...); + +@depends on !patch && !org && diff@ +expression x; +statement S; +@@ + +x = kzalloc(...); +if (x == NULL) S +... when != x +*memset(x,0,...); + +@r depends on !patch && org && !diff@ +expression x; +statement S; +position p; +@@ + +x = kzalloc(...); +if (x == NULL) S +... when != x +memset@p(x,0,...); + +@script:python depends on org@ +p << r.p; +@@ + +msg="%s:%s" % (p[0].file, p[0].line) +cocci.print_main(msg, p) diff --git a/scripts/coccicheck/cocci/noderef.cocci b/scripts/coccicheck/cocci/noderef.cocci new file mode 100644 index 0000000..6c8b654 --- /dev/null +++ b/scripts/coccicheck/cocci/noderef.cocci @@ -0,0 +1,39 @@ +// +// sizeof argument must be return the size of the +// data, no the size of the pointer to it. +// + +virtual org, patch, diff + +@ depends on patch && !org && !diff expression@ +expression *x; +@@ + +x = + <+... +-sizeof(x) ++sizeof(*x) +...+> + +@ depends on !patch && !org && diff expression@ +expression *x; +@@ + +x = + <+... +*sizeof(x) +...+> + +@r depends on !patch && org && !diff expression @ +expression *x; +position p; +@@ + +x = <+... sizeof(x@p) ...+> + +@script:python@ +x << r.x; +p << r.p; +@@ + +cocci.print_main(x, p) \ No newline at end of file diff --git a/scripts/coccicheck/cocci/noderef2.cocci b/scripts/coccicheck/cocci/noderef2.cocci new file mode 100644 index 0000000..c03234f --- /dev/null +++ b/scripts/coccicheck/cocci/noderef2.cocci @@ -0,0 +1,40 @@ +// +// sizeof argument must be return the size of the +// data, no the size of the pointer to it. +// + +virtual org, patch, diff + +@ depends on patch && !org && !diff@ +type T; +T *x; +expression E; +@@ + +memset(x, E, sizeof( ++ * + x)) + +@ depends on !patch && !org && diff@ +type T; +T *x; +expression E; +@@ + +*memset(x, E, sizeof(x)) + +@r depends on !patch && org && !diff@ +type T; +T *x; +expression E; +position p; +@@ + +memset(x, E, sizeof(x@p)) + +@script:python@ +x << r.x; +p << r.p; +@@ + +cocci.print_main(x, p) \ No newline at end of file diff --git a/scripts/coccicheck/configure b/scripts/coccicheck/configure index 9cd9ce6..ac65188 100755 --- a/scripts/coccicheck/configure +++ b/scripts/coccicheck/configure @@ -10,14 +10,40 @@ if [ "$MODE" == "" -o "$PROJECT" == "" ]; then exit 1 fi +SPATCHVER=`spatch -version 2>&1 | sed "s|spatch version \([^ ]*\) .*|\1|"` +WITHPYTHON=`spatch -version 2>&1 | sed "s|spatch version \([^ ]*\) with Python support|yes|"` +WITHPYTHON=`echo $WITHPYTHON | sed "s|spatch version \([^ ]*\) without Python support||"` + +echo "Using spatch version $SPATCHVER" +#TODO: Add version check + +if [ "$WITHPYTHON" ] ; then + echo "Your version has been build with Python support" +else + echo "Your version has no Python support" + if [ "org" == "$MODE" ] ; then + echo "org mode requires Python support." + exit 1 + fi +fi +echo + echo "Using PREFIX="${PREFIX:=`pwd`} echo "Using PROJECT="${PROJECT:=$PREFIX/project} echo "Using COCCI="${COCCI:=$PREFIX/cocci} echo "Using RESULTS="${RESULTS:=$PREFIX/results} -echo "Using SPFLAGS="${SPFLAGS:="-timeout 60 -use_glimpse -D $MODE"} + +if [ "`which glimpse`" ]; then + FLAGS=${SPFLAGS:="-timeout 60 -use_glimpse"} +else + FLAGS=${SPFLAGS:="-timeout 60"} +fi +SPFLAGS="$FLAGS -D $MODE" +echo "Using SPFLAGS="$SPFLAGS echo -e "\nFor efficiency, run \`/scripts/glimpseindex_cocci.sh\`" -echo -e "in $PROJECT\n" +echo -e "in $PROJECT" +echo -e "NB: glimpse is available at http://webglimpse.net/ but it is not under the GPL.\n" sed -i "s|^PREFIX?=.*$|PREFIX?=${PREFIX}|" Makefile sed -i "s|^PROJECT?=.*$|PROJECT?=${PROJECT}|" Makefile diff --git a/scripts/extract_c_and_res.pl b/scripts/extract_c_and_res.pl index 3be6213..4ef3f64 100755 --- a/scripts/extract_c_and_res.pl +++ b/scripts/extract_c_and_res.pl @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #!/usr/bin/perl -w use strict; diff --git a/scripts/extract_examples.pl b/scripts/extract_examples.pl dissimilarity index 66% index 23a5465..f0fed0a 100755 --- a/scripts/extract_examples.pl +++ b/scripts/extract_examples.pl @@ -1,42 +1,22 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -#!/usr/bin/perl -#usage: ./extract_examples.pl ~/week-end/working-documents/examples.tex - -my $ex = 0; -my $are_in = 0; -while(<>) { - - if(/\\section{/) { - $ex++; - open TMP, ">$ex.cocci" or die "$!"; - } - - if(/begin{verbatim}/) { - $are_in = 1; - #old: open TMP, ">$ex.cocci" or die "$!"; - } elsif(/end{verbatim}/) { - $are_in = 0; - #old: $ex++; - } else { - if($are_in) { print TMP "$_"; } - } -} +#!/usr/bin/perl +#usage: ./extract_examples.pl ~/week-end/working-documents/examples.tex + +my $ex = 0; +my $are_in = 0; +while(<>) { + + if(/\\section{/) { + $ex++; + open TMP, ">$ex.cocci" or die "$!"; + } + + if(/begin{verbatim}/) { + $are_in = 1; + #old: open TMP, ">$ex.cocci" or die "$!"; + } elsif(/end{verbatim}/) { + $are_in = 0; + #old: $ex++; + } else { + if($are_in) { print TMP "$_"; } + } +} diff --git a/scripts/extractor_README.pl b/scripts/extractor_README.pl index 6d14986..2339422 100755 --- a/scripts/extractor_README.pl +++ b/scripts/extractor_README.pl @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #!/usr/bin/perl use strict; diff --git a/scripts/gather_failed.pl b/scripts/gather_failed.pl dissimilarity index 82% index b078b01..11f32b1 100755 --- a/scripts/gather_failed.pl +++ b/scripts/gather_failed.pl @@ -1,32 +1,12 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -#!/usr/bin/perl - -# usage: gather_failed.pl **/*.failed > /tmp/big.failed - -print "-*- mode: outline; -*-\n"; - -map { - print "* FAILED FILE: $_\n"; - print "\n"; - system("cat $_"); - -} @ARGV; +#!/usr/bin/perl + +# usage: gather_failed.pl **/*.failed > /tmp/big.failed + +print "-*- mode: outline; -*-\n"; + +map { + print "* FAILED FILE: $_\n"; + print "\n"; + system("cat $_"); + +} @ARGV; diff --git a/scripts/readme.pl b/scripts/readme.pl index 0c33a07..84b7091 100755 --- a/scripts/readme.pl +++ b/scripts/readme.pl @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #!/usr/bin/perl # # ARGV: 0 = replacement text, 1 = file w. list of files diff --git a/scripts/stat_directories.pl b/scripts/stat_directories.pl index c05f9b5..10821a7 100755 --- a/scripts/stat_directories.pl +++ b/scripts/stat_directories.pl @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #!/usr/bin/perl #usage: diff --git a/scripts/stat_directories_complete.pl b/scripts/stat_directories_complete.pl dissimilarity index 63% index bfd7faa..58578ea 100755 --- a/scripts/stat_directories_complete.pl +++ b/scripts/stat_directories_complete.pl @@ -1,50 +1,30 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -#!/usr/bin/perl - -#usage: - -if(@ARGV < 1) { die "usage: stat_directories_complete.pl [M|C|B]";} -my $kind = "$ARGV[0]"; - - -my $subdirs = `make subdirs`; -#my $subdirs = "rule9"; -#my $subdirs = "rule1"; -chomp $subdirs; -@subdirs = split /\s+/, $subdirs; - - -my $i = 0; -foreach my $dir (@subdirs) { - if(-e "$dir/") { - #print "RULE: $dir\n"; - - my ($s) = - `cd $dir; ~/coccinelle/scripts/stat_directory_complete.pl | grep $kind:`; - chomp $s; - $i++; - #print "M$i.$s\n"; - $s =~ s/$kind:/$kind$i./; - print "$s\n"; - } - -} +#!/usr/bin/perl + +#usage: + +if(@ARGV < 1) { die "usage: stat_directories_complete.pl [M|C|B]";} +my $kind = "$ARGV[0]"; + + +my $subdirs = `make subdirs`; +#my $subdirs = "rule9"; +#my $subdirs = "rule1"; +chomp $subdirs; +@subdirs = split /\s+/, $subdirs; + + +my $i = 0; +foreach my $dir (@subdirs) { + if(-e "$dir/") { + #print "RULE: $dir\n"; + + my ($s) = + `cd $dir; ~/coccinelle/scripts/stat_directory_complete.pl | grep $kind:`; + chomp $s; + $i++; + #print "M$i.$s\n"; + $s =~ s/$kind:/$kind$i./; + print "$s\n"; + } + +} diff --git a/scripts/stat_directory_complete.pl b/scripts/stat_directory_complete.pl index 3be7088..a7d35d2 100755 --- a/scripts/stat_directory_complete.pl +++ b/scripts/stat_directory_complete.pl @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - #!/usr/bin/perl use strict; diff --git a/standard.iso b/standard.iso index 05c2107..a748c05 100644 --- a/standard.iso +++ b/standard.iso @@ -306,6 +306,37 @@ identifier i; for(X;Y;i++) S <=> for(X;Y;++i) S +// **************************************************************************** +// gcc specific isomorphisms +// **************************************************************************** + +// likely and unlikely are used to give hints to gcc to improve performance. + +Expression +@ likely @ +expression E; +@@ + +unlikely(E) <=> likely(E) => E + +// --------------------------------------------------------------------------- +// Parenthesis isomorphisms +// --------------------------------------------------------------------------- +//Expression +//@@ expression E; @@ +// E => (E) +//// E => ((E)) + +// todo: isomorphism avec les () around ? cf sizeof 3. +// (E) => E with some conditions. + +Expression +@ paren @ +expression E; +@@ + + (E) => E + // --------------------------------------------------------------------------- // Pointer isomorphisms // --------------------------------------------------------------------------- @@ -393,26 +424,6 @@ ArgExpression @@ 0 => '\0' -// **************************************************************************** -// gcc specific isomorphisms -// **************************************************************************** - -// likely and unlikely are used to give hints to gcc to improve performance. - -Expression -@ unlikely @ -expression E; -@@ - -unlikely(E) => E - -Expression -@ likely @ -expression E; -@@ - -likely(E) => E - // **************************************************************************** // if structure isomorphisms // **************************************************************************** @@ -560,24 +571,6 @@ return ...; => return; // They are handled in engine. // 'X = Y' should also match 'type X = Y'; -// --------------------------------------------------------------------------- -// Parenthesis isomorphisms -// --------------------------------------------------------------------------- -//Expression -//@@ expression E; @@ -// E => (E) -//// E => ((E)) - -// todo: isomorphism avec les () around ? cf sizeof 3. -// (E) => E with some conditions. - -Expression -@ paren @ -expression E; -@@ - - (E) => E - // --------------------------------------------------------------------------- // Pointer/Array isomorphisms // --------------------------------------------------------------------------- diff --git a/test.ml b/test.ml dissimilarity index 99% index 2c0c801..d1176b7 100644 --- a/test.ml +++ b/test.ml @@ -1,177 +1 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - -let foo_ctl () = failwith "there is no foo_ctl formula" +let foo_ctl () = failwith "there is no foo_ctl formula" diff --git a/testing.ml b/testing.ml index f0f1113..5d648b8 100644 --- a/testing.ml +++ b/testing.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (*****************************************************************************) @@ -454,7 +432,7 @@ let test_parse_cocci file = if not (file =~ ".*\\.cocci") then pr2 "warning: seems not a .cocci file"; - let (_,xs,_,_,_,_,grep_tokens,query,_) = + let (_,xs,_,_,_,_,grep_tokens,query) = Parse_cocci.process file (Some !Config.std_iso) false in xs +> List.iter Pretty_print_cocci.unparse; Printf.printf "grep tokens\n"; diff --git a/testing.mli b/testing.mli index 558e2f1..08909dc 100644 --- a/testing.mli +++ b/testing.mli @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (*****************************************************************************) @@ -69,8 +47,7 @@ val sp_of_file : Ast_cocci.meta_name list list list) * Ast_cocci.meta_name list list list * string list list * - string list option * - (string * bool) list + string list option (* TODO: Remove val rule_elem_of_string : string -> filename option -> Ast_cocci.rule_elem diff --git a/tests/array.cocci b/tests/array.cocci dissimilarity index 76% index 5c1530a..f9a10a9 100644 --- a/tests/array.cocci +++ b/tests/array.cocci @@ -1,7 +1,118 @@ -@@ -type T; -T[] id; -@@ - -- sizeof(id) / sizeof(T) -+ ARRAY_SIZE(id) +// Use the macro ARRAY_SIZE when possible +// +// Confidence: High +// Copyright: (C) Gilles Muller, Julia Lawall, EMN, INRIA, DIKU. GPLv2. +// URL: http://coccinelle.lip6.fr/rules/array.html +// Options: -I ... -all_includes can give more complete results +virtual org +virtual patch + +@i@ +@@ + +#include + +///////////////////////////////////// +///////////////////////////////////// +@depends on i && patch && !org@ +type T; +T[] E; +@@ + +- (sizeof(E)/sizeof(*E)) ++ ARRAY_SIZE(E) + +@depends on i && patch && !org@ +type T; +T[] E; +@@ + +- (sizeof(E)/sizeof(E[...])) ++ ARRAY_SIZE(E) + +@depends on i && patch && !org@ +type T; +T[] E; +@@ + +- (sizeof(E)/sizeof(T)) ++ ARRAY_SIZE(E) + +@n_patch depends on patch && !org@ +identifier AS,E; +@@ + +- #define AS(E) ARRAY_SIZE(E) + +@ depends on patch && !org@ +expression E; +identifier n_patch.AS; +@@ + +- AS(E) ++ ARRAY_SIZE(E) + + +///////////////////////////////////// +///////////////////////////////////// +@arr_ptr depends on i && !patch && org@ +type T; +T[] E; +position p; +@@ + + (sizeof(E@p)/sizeof(*E)) + +@arr_tab depends on i && !patch && org@ +type T; +T[] E; +position p; +@@ + + (sizeof(E@p)/sizeof(E[...])) + +@arr_typ depends on i && !patch && org@ +type T; +T[] E; +position p; +@@ + + (sizeof(E@p)/sizeof(T)) + +@n_org depends on !patch && org@ +identifier AS,E; +@@ + +#define AS(E) ARRAY_SIZE(E) + +@arr_def depends on !patch && org@ +expression E; +identifier n_org.AS; +position p; +@@ + +AS@p(E) + +@script:python@ +p << arr_ptr.p; +e << arr_ptr.E; +@@ +cocci.print_main(e,p) + +@script:python@ +p << arr_tab.p; +e << arr_tab.E; +@@ +cocci.print_main(e,p) + +@script:python@ +p << arr_typ.p; +e << arr_typ.E; +@@ +cocci.print_main(e,p) + +@script:python@ +p << arr_def.p; +e << arr_def.E; +@@ +cocci.print_main(e,p) diff --git a/tools/Makefile b/tools/Makefile index 29d487d..ba98ec0 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,23 +1,3 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix -# This file is part of Coccinelle. -# -# Coccinelle is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -include ../Makefile.config PROGS=spp gitgrep split_patch extract_c_and_res #generate_dependencies diff --git a/tools/alloc_free.ml b/tools/alloc_free.ml index eed905f..1c91280 100644 --- a/tools/alloc_free.ml +++ b/tools/alloc_free.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* The following finds out for each file, how it does deallocation for each allocator *) diff --git a/tools/bridge.ml b/tools/bridge.ml index 2afe5c2..6e3037c 100644 --- a/tools/bridge.ml +++ b/tools/bridge.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - let drop_spaces s = String.concat "" (Str.split (Str.regexp "[ ]+") s) diff --git a/tools/dir_stats.ml b/tools/dir_stats.ml index b147fae..a4f1417 100644 --- a/tools/dir_stats.ml +++ b/tools/dir_stats.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* for each marked thing, how often does it occur and in what files and directories *) diff --git a/tools/extract_c_and_res.ml b/tools/extract_c_and_res.ml index 7a3ad57..1eb3804 100644 --- a/tools/extract_c_and_res.ml +++ b/tools/extract_c_and_res.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (*****************************************************************************) diff --git a/tools/generate_dependencies.ml b/tools/generate_dependencies.ml index bcf47d2..4cf056c 100644 --- a/tools/generate_dependencies.ml +++ b/tools/generate_dependencies.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common (*****************************************************************************) diff --git a/tools/gitgrep.ml b/tools/gitgrep.ml index aba1914..0c9c59a 100644 --- a/tools/gitgrep.ml +++ b/tools/gitgrep.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* adjust as convenient *) let prefix = "/tmp/" let prefix = "" diff --git a/tools/gitsort.ml b/tools/gitsort.ml index 29c4833..4b7e256 100644 --- a/tools/gitsort.ml +++ b/tools/gitsort.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* sort a list of git codes such that the most recent comes first *) let git_home = ref "/home/julia/linux-2.6" diff --git a/tools/licensify.ml b/tools/licensify.ml index 91f59f1..f650b96 100644 --- a/tools/licensify.ml +++ b/tools/licensify.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - let lines = ["Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen"; "Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix"; diff --git a/tools/process_isoprofile.ml b/tools/process_isoprofile.ml index 9a27a83..29027db 100644 --- a/tools/process_isoprofile.ml +++ b/tools/process_isoprofile.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - (* This is for processing information created with the -profile_iso option. Runs are assumed separated with a line beginning with =. The first run is discarded *) diff --git a/tools/split_patch.ml b/tools/split_patch.ml index f6e0f73..059ba55 100644 --- a/tools/split_patch.ml +++ b/tools/split_patch.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common module CP = Classic_patch diff --git a/tools/spp.ml b/tools/spp.ml index 471a7e9..1281fba 100644 --- a/tools/spp.ml +++ b/tools/spp.ml @@ -1,25 +1,3 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Common exception WrongArguments -- 2.20.1