X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/b072092f32623dab70e6ffe1613740542ea66748..aa9c16018c05551094b01617f312d52735a8ddd9:/src/mtgrammar.y diff --git a/src/mtgrammar.y b/src/mtgrammar.y index 082c4fd..4ccf1f9 100644 --- a/src/mtgrammar.y +++ b/src/mtgrammar.y @@ -1,20 +1,25 @@ /*;-*-C-*-; -** Copyright (c) Massachusetts Institute of Technology 1994-1998. -** All Rights Reserved. -** Unpublished rights reserved under the copyright laws of -** the United States. +** Splint - annotation-assisted static program checker +** Copyright (C) 1994-2002 University of Virginia, +** Massachusetts Institute of Technology ** -** THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED -** OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +** This program 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; either version 2 of the License, or (at your +** option) any later version. +** +** This program 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. +** +** The GNU General Public License is available from http://www.gnu.org/ or +** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +** MA 02111-1307, USA. ** -** This code is distributed freely and may be used freely under the -** following conditions: -** -** 1. This notice may not be removed or altered. -** -** 2. Works derived from this code are not distributed for -** commercial gain without explicit permission from MIT -** (for permission contact lclint-request@sds.lcs.mit.edu). +** For information on splint: splint@cs.virginia.edu +** To report a bug: splint-bug@cs.virginia.edu +** For more information: http://www.splint.org */ /* ** mtgrammar.y @@ -25,13 +30,22 @@ %{ # include "bison.reset" -# include "lclintMacros.nf" +# include "splintMacros.nf" # include "llbasic.h" -# include "mtincludes.h" -static /*@exits@*/ void mterror (char *); +# ifndef S_SPLINT_S +extern ctype mtscanner_lookupType (mttok p_tok) /*@modifies p_tok@*/ ; +# endif + + /*@i523@*/ /* can't include these here + # include "mtgrammar.h" + # include "mtscanner.h" + */ + +static /*@noreturn@*/ void mterror (char *); /*@-noparams@*/ /* Can't list params since YYSTYPE isn't defined yet. */ +extern int mtlex () ; static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); /*@=noparams@*/ @@ -83,7 +97,7 @@ static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); %token MT_ONEOF %token MT_DEFAULTS MT_DEFAULT -%token MT_REFERENCE MT_PARAMETER MT_RESULT MT_CLAUSE +%token MT_REFERENCE MT_PARAMETER MT_RESULT MT_CLAUSE MT_LITERAL MT_NULL %token MT_ANNOTATIONS %token MT_ARROW @@ -184,6 +198,8 @@ contextSelection | MT_REFERENCE optType { $$ = mtContextNode_createReference ($2); } | MT_RESULT optType { $$ = mtContextNode_createResult ($2); } | MT_CLAUSE optType { $$ = mtContextNode_createClause ($2); } +| MT_LITERAL optType { $$ = mtContextNode_createLiteral ($2); } +| MT_NULL optType { $$ = mtContextNode_createNull ($2); } /* ** Wish I could share the C grammar here...cut-and-paste instead.