diff options
Diffstat (limited to 'src/pre_parser.mly')
| -rw-r--r-- | src/pre_parser.mly | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/pre_parser.mly b/src/pre_parser.mly new file mode 100644 index 00000000..5d56738b --- /dev/null +++ b/src/pre_parser.mly @@ -0,0 +1,86 @@ +/**************************************************************************/ +/* Lem */ +/* */ +/* Dominic Mulligan, University of Cambridge */ +/* Francesco Zappa Nardelli, INRIA Paris-Rocquencourt */ +/* Gabriel Kerneis, University of Cambridge */ +/* Kathy Gray, University of Cambridge */ +/* Peter Boehm, University of Cambridge (while working on Lem) */ +/* Peter Sewell, University of Cambridge */ +/* Scott Owens, University of Kent */ +/* Thomas Tuerk, University of Cambridge */ +/* */ +/* The Lem sources are copyright 2010-2013 */ +/* by the UK authors above and Institut National de Recherche en */ +/* Informatique et en Automatique (INRIA). */ +/* */ +/* All files except ocaml-lib/pmap.{ml,mli} and ocaml-libpset.{ml,mli} */ +/* are distributed under the license below. The former are distributed */ +/* under the LGPLv2, as in the LICENSE file. */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* 1. Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* 2. Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the distribution. */ +/* 3. The names of the authors may not be used to endorse or promote */ +/* products derived from this software without specific prior written */ +/* permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS */ +/* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */ +/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE */ +/* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY */ +/* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL */ +/* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ +/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS */ +/* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER */ +/* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ +/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN */ +/* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/**************************************************************************/ + +%{ + +let r = fun x -> x (* Ulib.Text.of_latin1 *) + +%} + +/*Terminals with no content*/ + +%token Scattered Typedef Other Eof + +%token <string> Id +%start file +%type <list string> file + +%% + +id: + | Id + { $1 } + +scan: + | Typedef id + { $2 } + | Scattered Typedef id + { $3 } + | id scan + { $2 } + | Other scan + { $2 } + +scan_file: + | scan + { [$1] } + | scan scan_file + { $1::$2 } + +file: + | scan_file Eof + { $1 } + |
