]> andersk Git - splint.git/blobdiff - src/lslinit.c
Committed to enable merge.
[splint.git] / src / lslinit.c
diff --git a/src/lslinit.c b/src/lslinit.c
deleted file mode 100644 (file)
index 01fbdad..0000000
+++ /dev/null
@@ -1,1555 +0,0 @@
-/*
-** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
-**         Massachusetts Institute of Technology
-**
-** 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.
-**
-** For information on splint: info@splint.org
-** To report a bug: splint-bug@splint.org
-** For more information: http://www.splint.org
-*/
-/*
-** lslinit.c
-**
-** Processor for Larch Shared Language Init Files
-*/
-
-# include "splintMacros.nf"
-# include "llbasic.h"
-# include "signature.h"
-# include "signature2.h"
-# include "scan.h"
-# include "scanline.h"
-# include "tokentable.h"
-# include "syntable.h"
-# include "lslinit.h"
-
-/* needed to parse init files */
-# include "shift.h"
-#if TRACING == 1
-/*@notfunction@*/
-# define LTRACE(rule) printf ("Reducing: %s\n", rule)
-#else
-/*@notfunction@*/
-# define LTRACE(rule)
-#endif
-
-static void LocalUserError (ltoken p_t, /*@temp@*/ char *p_msg)
-  /*@modifies *g_warningstream@*/;
-
-static /*@only@*/ ltoken nextToken;
-
-static void InitFile (void) /*@modifies nextToken@*/ ;
-static void InitLines (void) /*@modifies nextToken@*/ ;
-static void InitLine (void) /*@modifies nextToken@*/ ;
-static void Classification (void) /*@modifies nextToken@*/ ;
-static void CharClass (void) /*@modifies nextToken@*/ ;
-
-static void EndCommentChars (void) /*@modifies nextToken@*/ ;
-static void IdChars (void) /*@modifies nextToken@*/ ;
-static void OpChars (void) /*@modifies nextToken@*/ ;
-static void ExtensionChar (void) /*@modifies nextToken@*/ ;
-static void SingChars (void) /*@modifies nextToken@*/ ;
-static void WhiteChars (void) /*@modifies nextToken@*/ ;
-static void EndCommentChar (void) /*@modifies nextToken@*/ ;
-static void IdChar (void) /*@modifies nextToken@*/ ;
-static void OpChar (void) /*@modifies nextToken@*/ ;
-static void SingChar (void) /*@modifies nextToken@*/ ;
-static void WhiteChar (void) /*@modifies nextToken@*/ ;
-
-static void TokenClass (void) /*@modifies nextToken@*/ ;
-static void QuantifierSymToks (void) /*@modifies nextToken@*/ ;
-static void LogicalOpToks (void) /*@modifies nextToken@*/ ;
-static void EqOpToks (void) /*@modifies nextToken@*/ ;
-static void EquationSymToks (void) /*@modifies nextToken@*/ ;
-static void EqSepSymToks (void) /*@modifies nextToken@*/ ;
-static void SelectSymToks (void) /*@modifies nextToken@*/ ;
-static void OpenSymToks (void) /*@modifies nextToken@*/ ;
-static void SepSymToks (void) /*@modifies nextToken@*/ ;
-static void CloseSymToks (void) /*@modifies nextToken@*/ ;
-static void SimpleIdToks (void) /*@modifies nextToken@*/ ;
-static void MapSymToks (void) /*@modifies nextToken@*/ ;
-static void MarkerSymToks (void) /*@modifies nextToken@*/ ;
-static void CommentSymToks (void) /*@modifies nextToken@*/ ;
-static void QuantifierSymTok (void) /*@modifies nextToken@*/ ;
-static void LogicalOpTok (void) /*@modifies nextToken@*/ ;
-static void EqOpTok (void) /*@modifies nextToken@*/ ;
-static void EquationSymTok (void) /*@modifies nextToken@*/ ;
-static void EqSepSymTok (void) /*@modifies nextToken@*/ ;
-static void SelectSymTok (void) /*@modifies nextToken@*/ ;
-static void OpenSymTok (void) /*@modifies nextToken@*/ ;
-static void SepSymTok (void) /*@modifies nextToken@*/ ;
-static void CloseSymTok (void) /*@modifies nextToken@*/ ;
-static void SimpleIdTok (void) /*@modifies nextToken@*/ ;
-static void MapSymTok (void) /*@modifies nextToken@*/ ;
-static void MarkerSymTok (void) /*@modifies nextToken@*/ ;
-static void CommentSymTok (void) /*@modifies nextToken@*/ ;
-static void SynClass (void) /*@modifies nextToken@*/ ;
-static void OldToken (void) /*@modifies nextToken@*/ ;
-static void NewToken (void) /*@modifies nextToken@*/ ;
-static void Token (void) /*@modifies nextToken@*/ ;
-
-static void InitReduce (LSLInitRuleCode p_rule) /*@modifies nextToken@*/ ;
-static void UpdateXCharKeywords (charCode) /*@modifies nextToken@*/ ;
-static void ProcessExtensionChar (void) /*@modifies nextToken@*/ ;
-static void ProcessEndCommentChar (void) /*@modifies nextToken@*/ ;
-static void ProcessSingleChar (charCode p_code) /*@modifies nextToken@*/ ;
-static void ProcessToken (ltokenCode p_code) /*@modifies nextToken@*/ ;
-static void ProcessSynonym (void) /*@modifies nextToken@*/ ;
-
-/* If TRUE character has been redefined as a singleChar. */
-static bool defineSingleChar[LASTCHAR + 1];
-
-static charCode currentExtensionChar;
-
-/* LSL init file keyword tokens.  */
-
-static /*@dependent@*/ ltoken endCommentCharToken;
-static /*@dependent@*/ ltoken idCharToken;
-static /*@dependent@*/ ltoken opCharToken;
-static /*@dependent@*/ ltoken extensionCharToken;
-static /*@dependent@*/ ltoken singleCharToken;
-static /*@dependent@*/ ltoken whiteCharToken;
-static /*@dependent@*/ ltoken quantifierSymToken;
-static /*@dependent@*/ ltoken logicalOpToken;
-static /*@dependent@*/ ltoken eqOpToken;
-static /*@dependent@*/ ltoken equationSymToken;
-static /*@dependent@*/ ltoken eqSepSymToken;
-static /*@dependent@*/ ltoken selectSymToken;
-static /*@dependent@*/ ltoken openSymToken;
-static /*@dependent@*/ ltoken sepSymToken;
-static /*@dependent@*/ ltoken closeSymToken;
-static /*@dependent@*/ ltoken simpleIdToken;
-static /*@dependent@*/ ltoken mapSymToken;
-static /*@dependent@*/ ltoken markerSymToken;
-static /*@dependent@*/ ltoken commentSymToken;
-static /*@dependent@*/ ltoken synonymToken;
-
-static bool
-hasFirstChar (ltoken tok)
-{
-  return (ltoken_isChar (tok)
-         && lscanCharClass (cstring_firstChar (ltoken_unparse (tok))) == SINGLECHAR);
-}
-
-void
-LSLProcessInitFile (void)
-{
-  InitFile ();
-}
-
-/*
-**
-**  Parsing functions for init file processing, in the same order as the
-**  grammar file lslinit.cfg.  This is top-down order, as much as possible.
-**
-*/
-
-static void
-InitFile (void)
-{
-  InitLines ();
-  InitReduce (INITFILE1);
-
-  if (ltoken_getCode (nextToken) != LEOFTOKEN)
-    {
-      LocalUserError (nextToken, "unexpected tokens after end-of-file");
-    }
-}
-
-static void
-InitLines (void)
-{
-  InitReduce (INITLINES1);
-
-  if (ltoken_getCode (nextToken) != LEOFTOKEN)
-    {
-      InitLine ();
-      InitReduce (INITLINES2);
-    }
-
-  while (ltoken_getCode (nextToken) != LEOFTOKEN)
-    {
-      InitLine ();
-      InitReduce (INITLINES3);
-    }
-
-}
-
-static void
-InitLine (void)
-{
-  if (ltoken_getCode (nextToken) == LST_EOL)
-    {
-     /* Nothing on line. */
-      InitReduce (INITLINE1);
-    }
-  else
-    {
-      Classification ();
-      InitReduce (INITLINE2);
-    }
-
-  if (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      LocalUserError (nextToken, "Unexpected tokens on line");
-    }
-
-  ltoken_free (nextToken);
-  nextToken = LSLScanNextToken ();            
-}
-
-static void
-Classification (void)
-{
-  if (ltoken_getRawText (nextToken) == ltoken_getText (endCommentCharToken)
-      || ltoken_getRawText (nextToken) == ltoken_getText (idCharToken)
-      || ltoken_getRawText (nextToken) == ltoken_getText (opCharToken)
-      || ltoken_getRawText (nextToken) == ltoken_getText (extensionCharToken)
-      || ltoken_getRawText (nextToken) == ltoken_getText (singleCharToken)
-      || ltoken_getRawText (nextToken) == ltoken_getText (whiteCharToken))
-    {
-      CharClass ();
-      InitReduce (CLASSIFICATION1);
-    }
-  else if (ltoken_getRawText (nextToken) == ltoken_getText (quantifierSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (logicalOpToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (eqOpToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (equationSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (eqSepSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (selectSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (openSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (sepSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (closeSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (simpleIdToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (mapSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (markerSymToken)
-          || ltoken_getRawText (nextToken) == ltoken_getText (commentSymToken))
-    {
-      TokenClass ();
-      InitReduce (CLASSIFICATION2);
-    }
-  else if (ltoken_getRawText (nextToken) == ltoken_getText (synonymToken))
-    {
-      SynClass ();
-      InitReduce (CLASSIFICATION3);
-    }
-  else
-    {
-      LocalUserError (nextToken,
-                     "expected character, token, or synonym classification");
-    }
-}
-
-static void
-CharClass (void)
-{
-  ltoken charClassToken;
-
-  charClassToken = nextToken;
-
-  nextToken = LSLScanNextToken ();             /* Discard char class keyword. */
-
-  if (ltoken_getRawText (charClassToken) == ltoken_getText (endCommentCharToken))
-    {
-      EndCommentChars ();
-      InitReduce (CHARCLASS1);
-    }
-  else if (ltoken_getRawText (charClassToken) == ltoken_getText (idCharToken))
-    {
-      IdChars ();
-      InitReduce (CHARCLASS2);
-    }
-  else if (ltoken_getRawText (charClassToken) == ltoken_getText (opCharToken))
-    {
-      OpChars ();
-      InitReduce (CHARCLASS3);
-    }
-  else if (ltoken_getRawText (charClassToken)
-          == ltoken_getText (extensionCharToken))
-    {
-      ExtensionChar ();
-      InitReduce (CHARCLASS4);
-    }
-  else if (ltoken_getRawText (charClassToken) == ltoken_getText (singleCharToken))
-    {
-      SingChars ();
-      InitReduce (CHARCLASS5);
-    }
-  else if (ltoken_getRawText (charClassToken) == ltoken_getText (whiteCharToken))
-    {
-      WhiteChars ();
-      InitReduce (CHARCLASS6);
-    }
-  else
-    {
-      LocalUserError (nextToken, "expected character classification");
-    }
-
-  ltoken_free (charClassToken);
-}
-
-static void
-EndCommentChars (void)
-{
-  EndCommentChar ();
-  InitReduce (LRC_ENDCOMMENT1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      EndCommentChar ();
-      InitReduce (LRC_ENDCOMMENT2);
-    }
-
-}
-
-static void
-IdChars (void)
-{
-  IdChar ();
-  InitReduce (IDCHARS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      IdChar ();
-      InitReduce (IDCHARS2);
-    }
-}
-
-static void
-OpChars (void)
-{
-  OpChar ();
-  InitReduce (OPCHARS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      OpChar ();
-      InitReduce (OPCHARS2);
-    }
-}
-
-static void
-ExtensionChar (void)
-{
-  if (ltoken_isChar (nextToken)
-      && lscanCharClass (cstring_firstChar (ltoken_unparse (nextToken))) == SINGLECHAR)
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (LRC_EXTENSIONCHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "expected only one character");
-    }
-}
-
-static void
-SingChars (void)
-{
-  SingChar ();
-  InitReduce (SINGCHARS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      SingChar ();
-      InitReduce (SINGCHARS2);
-    }
-}
-
-static void
-WhiteChars (void)
-{
-  WhiteChar ();
-  InitReduce (WHITECHARS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      WhiteChar ();
-      InitReduce (WHITECHARS2);
-    }
-}
-
-static void
-EndCommentChar (void)
-{
-  if (ltoken_isChar (nextToken))
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (LRC_ENDCOMMENTCHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "expected only one character");
-    }
-}
-
-static void
-IdChar (void)
-{
-  if (hasFirstChar (nextToken))
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (IDCHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "character is already defined, cannot redefine");
-    }
-}
-
-static void
-OpChar (void)
-{
-  if (hasFirstChar (nextToken))
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (OPCHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "character is already defined, cannot redefine");
-    }
-}
-
-static void
-SingChar (void)
-{
-  if (hasFirstChar (nextToken))
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (SINGCHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "character is already defined, cannot redefine");
-    }
-}
-
-static void
-WhiteChar (void)
-{
-  if (hasFirstChar (nextToken))
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-      InitReduce (WHITECHAR1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "character is already defined, cannot redefine");
-    }
-}
-
-static void
-TokenClass (void)
-{
-  ltoken tokenClassToken;
-
-  tokenClassToken = nextToken;
-
-  nextToken = LSLScanNextToken ();
-
-  if (ltoken_getRawText (tokenClassToken) == ltoken_getText (quantifierSymToken))
-    {
-      QuantifierSymToks ();
-      InitReduce (TOKENCLASS1);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (logicalOpToken))
-    {
-      LogicalOpToks ();
-      InitReduce (TOKENCLASS2);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (eqOpToken))
-    {
-      EqOpToks ();
-      InitReduce (TOKENCLASS3);
-    }
-  else if (ltoken_getRawText (tokenClassToken)
-          == ltoken_getText (equationSymToken))
-    {
-      EquationSymToks ();
-      InitReduce (TOKENCLASS4);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (eqSepSymToken))
-    {
-      EqSepSymToks ();
-      InitReduce (TOKENCLASS5);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (selectSymToken))
-    {
-      SelectSymToks ();
-      InitReduce (TOKENCLASS6);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (openSymToken))
-    {
-      OpenSymToks ();
-      InitReduce (TOKENCLASS7);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (sepSymToken))
-    {
-      SepSymToks ();
-      InitReduce (TOKENCLASS8);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (closeSymToken))
-    {
-      CloseSymToks ();
-      InitReduce (TOKENCLASS9);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (simpleIdToken))
-    {
-      SimpleIdToks ();
-      InitReduce (TOKENCLASS10);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (mapSymToken))
-    {
-      MapSymToks ();
-      InitReduce (TOKENCLASS11);
-    }
-  else if (ltoken_getRawText (tokenClassToken) == ltoken_getText (markerSymToken))
-    {
-      MarkerSymToks ();
-      InitReduce (TOKENCLASS12);
-    }
-  else if (ltoken_getRawText (tokenClassToken)
-          == ltoken_getText (commentSymToken))
-    {
-      CommentSymToks ();
-      InitReduce (TOKENCLASS13);
-    }
-  else
-    {
-      LocalUserError (nextToken, "expected token classification");
-    }
-
-  ltoken_free (tokenClassToken);
-}
-
-static void
-QuantifierSymToks (void)
-{
-  QuantifierSymTok ();
-  InitReduce (QUANTIFIERSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      QuantifierSymTok ();
-      InitReduce (QUANTIFIERSYMTOKS2);
-    }
-}
-
-static void
-LogicalOpToks (void)
-{
-  LogicalOpTok ();
-  InitReduce (LOGICALOPTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      LogicalOpTok ();
-      InitReduce (LOGICALOPTOKS2);
-    }
-}
-
-static void
-EqOpToks (void)
-{
-  EqOpTok ();
-  InitReduce (LRC_EQOPTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      EqOpTok ();
-      InitReduce (LRC_EQOPTOKS2);
-    }
-}
-
-static void
-EquationSymToks (void)
-{
-  EquationSymTok ();
-  InitReduce (LRC_EQUATIONSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      EquationSymTok ();
-      InitReduce (LRC_EQUATIONSYMTOKS2);
-    }
-}
-
-static void
-EqSepSymToks (void)
-{
-  EqSepSymTok ();
-  InitReduce (LRC_EQSEPSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      EqSepSymTok ();
-      InitReduce (LRC_EQSEPSYMTOKS2);
-    }
-}
-
-static void
-SelectSymToks (void)
-{
-  SelectSymTok ();
-  InitReduce (SELECTSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      SelectSymTok ();
-      InitReduce (SELECTSYMTOKS2);
-    }
-}
-
-static void
-OpenSymToks (void)
-{
-  OpenSymTok ();
-  InitReduce (OPENSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      OpenSymTok ();
-      InitReduce (OPENSYMTOKS2);
-    }
-}
-
-static void
-SepSymToks (void)
-{
-  SepSymTok ();
-  InitReduce (SEPSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      SepSymTok ();
-      InitReduce (SEPSYMTOKS2);
-    }
-}
-
-static void
-CloseSymToks (void)
-{
-  CloseSymTok ();
-  InitReduce (CLOSESYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      CloseSymTok ();
-      InitReduce (CLOSESYMTOKS2);
-    }
-}
-
-static void
-SimpleIdToks (void)
-{
-  SimpleIdTok ();
-  InitReduce (SIMPLEIDTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      SimpleIdTok ();
-      InitReduce (SIMPLEIDTOKS2);
-    }
-}
-
-static void
-MapSymToks (void)
-{
-  MapSymTok ();
-  InitReduce (MAPSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      MapSymTok ();
-      InitReduce (MAPSYMTOKS2);
-    }
-}
-
-static void
-MarkerSymToks (void)
-{
-  MarkerSymTok ();
-  InitReduce (MARKERSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      MarkerSymTok ();
-      InitReduce (MARKERSYMTOKS2);
-    }
-}
-
-static void
-CommentSymToks (void)
-{
-  CommentSymTok ();
-  InitReduce (COMMENTSYMTOKS1);
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      CommentSymTok ();
-      InitReduce (COMMENTSYMTOKS2);
-    }
-}
-
-static void
-QuantifierSymTok (void)
-{
-  Token ();
-  InitReduce (QUANTIFIERSYMTOK1);
-}
-
-static void
-LogicalOpTok (void)
-{
-  Token ();
-  InitReduce (LOGICALOPTOK1);
-}
-
-static void
-EqOpTok (void)
-{
-  Token ();
-  InitReduce (LRC_EQOPTOK1);
-}
-
-static void
-EquationSymTok (void)
-{
- /* ### EquationSymTok (); ### */
-  Token ();
-  InitReduce (LRC_EQUATIONSYMTOK1);
-}
-
-static void
-EqSepSymTok (void)
-{
-  Token ();
-  InitReduce (LRC_EQSEPSYMTOK1);
-
-}
-
-static void
-SelectSymTok (void)
-{
-  Token ();
-  InitReduce (SELECTSYMTOK1);
-}
-
-static void
-OpenSymTok (void)
-{
-  Token ();
-  InitReduce (OPENSYMTOK1);
-}
-
-static void
-SepSymTok (void)
-{
-  Token ();
-  InitReduce (SEPSYMTOK1);
-}
-
-static void
-CloseSymTok (void)
-{
-  Token ();
-  InitReduce (CLOSESYMTOK1);
-}
-
-static void
-SimpleIdTok (void)
-{
-  Token ();
-  InitReduce (SIMPLEIDTOK1);
-}
-
-static void
-MapSymTok (void)
-{
-  Token ();
-  InitReduce (MAPSYMTOK1);
-}
-
-static void
-MarkerSymTok (void)
-{
-  Token ();
-  InitReduce (MARKERSYMTOK1);
-
-}
-
-static void
-CommentSymTok (void)
-{
-  Token ();
-  InitReduce (COMMENTSYMTOK1);
-}
-
-
-static void
-SynClass (void)
-{
-  if (ltoken_getRawText (nextToken) == ltoken_getText (synonymToken))
-    {
-      ltoken_free (nextToken);
-      nextToken = LSLScanNextToken ();
-
-      OldToken ();
-      NewToken ();
-
-      InitReduce (SYNCLASS1);
-    }
-  else
-    {
-      LocalUserError (nextToken, "expected synonym classification");
-    }
-
-}
-
-static void
-OldToken (void)
-{
-  Token ();
-  InitReduce (OLDTOKEN1);
-
-}
-
-static void
-NewToken (void)
-{
-  Token ();
-  InitReduce (NEWTOKEN1);
-
-}
-
-static void
-Token (void)
-{
-  if (ltoken_getCode (nextToken) == LST_EOL
-      || ltoken_getCode (nextToken) == LEOFTOKEN)
-    {
-      LocalUserError (nextToken, "unexpected end-of-line or end-of-file");
-    }
-  else
-    {
-      LSLGenShiftOnly (nextToken);
-      nextToken = LSLScanNextToken ();
-    }
-}
-
-/*
-** Init File Processing Routines, these routines use the shift-reduce sequence
-** produced by the init file parser and update the necessary tables for the
-** scanner.
-**
-** The same shift stack is used that LSL parser uses.  A different reduce
-** procedure is used because the init file grammar is different from the LSL
-** grammar.
-**
-*/
-
-static void
-InitReduce (LSLInitRuleCode rule)
-{
-  switch (rule)
-    {
-      case INITFILE1:
-      LTRACE ("INITFILE1");
-      break;
-
-    case INITLINES1:
-      LTRACE ("INITLINES1");
-      break;
-
-    case INITLINES2:
-      LTRACE ("INITLINES2");
-      break;
-
-    case INITLINES3:
-      LTRACE ("INITLINES3");
-      break;
-
-    case INITLINE1:
-      LTRACE ("INITLINE1");
-      break;
-
-    case INITLINE2:
-      LTRACE ("INITLINE2");
-      break;
-
-    case CLASSIFICATION1:
-      LTRACE ("CLASSIFICATION1");
-      break;
-
-    case CLASSIFICATION2:
-      LTRACE ("CLASSIFICATION2");
-      break;
-
-    case CLASSIFICATION3:
-      LTRACE ("CLASSIFICATION3");
-      break;
-
-    case CHARCLASS1:
-      LTRACE ("CHARCLASS1");
-      break;
-
-    case CHARCLASS2:
-      LTRACE ("CHARCLASS2");
-      break;
-
-    case CHARCLASS3:
-      LTRACE ("CHARCLASS3");
-      break;
-
-    case CHARCLASS4:
-      LTRACE ("CHARCLASS4");
-      break;
-
-    case CHARCLASS5:
-      LTRACE ("CHARCLASS5");
-      break;
-
-    case CHARCLASS6:
-      LTRACE ("CHARCLASS6");
-      break;
-
-    case LRC_ENDCOMMENT1:
-      LTRACE ("LRC_ENDCOMMENT1");
-      break;
-
-    case LRC_ENDCOMMENT2:
-      LTRACE ("LRC_ENDCOMMENT2");
-      break;
-
-    case IDCHARS1:
-      LTRACE ("IDCHARS1");
-      break;
-
-    case IDCHARS2:
-      LTRACE ("IDCHARS2");
-      break;
-
-    case OPCHARS1:
-      LTRACE ("OPCHARS1");
-      break;
-
-    case OPCHARS2:
-      LTRACE ("OPCHARS2");
-      break;
-
-    case LRC_EXTENSIONCHAR1:
-      LTRACE ("LRC_EXTENSIONCHAR1");
-      ProcessExtensionChar ();
-      break;
-
-    case SINGCHARS1:
-      LTRACE ("SINGCHARS1");
-      break;
-
-    case SINGCHARS2:
-      LTRACE ("SINGCHARS2");
-      break;
-
-    case WHITECHARS1:
-      LTRACE ("WHITECHARS1");
-      break;
-
-    case WHITECHARS2:
-      LTRACE ("WHITECHARS2");
-      break;
-
-    case LRC_ENDCOMMENTCHAR1:
-      LTRACE ("LRC_ENDCOMMENTCHAR1");
-      ProcessEndCommentChar ();
-      break;
-
-    case IDCHAR1:
-      LTRACE ("IDCHAR1");
-      ProcessSingleChar (IDCHAR);
-      break;
-
-    case OPCHAR1:
-      LTRACE ("OPCHAR1");
-      ProcessSingleChar (OPCHAR);
-      break;
-
-    case SINGCHAR1:
-      LTRACE ("SINGCHAR1");
-      ProcessSingleChar (SINGLECHAR);
-      break;
-
-    case WHITECHAR1:
-      LTRACE ("CHAR1");
-      ProcessSingleChar (WHITECHAR);
-      break;
-
-    case TOKENCLASS1:
-      LTRACE ("TOKENCLASS1");
-      break;
-
-    case TOKENCLASS2:
-      LTRACE ("TOKENCLASS2");
-      break;
-
-    case TOKENCLASS3:
-      LTRACE ("TOKENCLASS3");
-      break;
-
-    case TOKENCLASS4:
-      LTRACE ("TOKENCLASS4");
-      break;
-
-    case TOKENCLASS5:
-      LTRACE ("TOKENCLASS5");
-      break;
-
-    case TOKENCLASS6:
-      LTRACE ("TOKENCLASS6");
-      break;
-
-    case TOKENCLASS7:
-      LTRACE ("TOKENCLASS7");
-      break;
-
-    case TOKENCLASS8:
-      LTRACE ("TOKENCLASS8");
-      break;
-
-    case TOKENCLASS9:
-      LTRACE ("TOKENCLASS9");
-      break;
-
-    case TOKENCLASS10:
-      LTRACE ("TOKENCLASS10");
-      break;
-
-    case TOKENCLASS11:
-      LTRACE ("TOKENCLASS11");
-      break;
-
-    case TOKENCLASS12:
-      LTRACE ("TOKENCLASS12");
-      break;
-
-    case TOKENCLASS13:
-      LTRACE ("TOKENCLASS13");
-      break;
-
-    case QUANTIFIERSYMTOKS1:
-      LTRACE ("QUALIFERSYMTOKS1");
-      break;
-
-    case QUANTIFIERSYMTOKS2:
-      LTRACE ("QUANTIFIERSYMTOKS2");
-      break;
-
-    case LOGICALOPTOKS1:
-      LTRACE ("LOGICALOPTOKS1");
-      break;
-
-    case LOGICALOPTOKS2:
-      LTRACE ("LOGICALOPTOKS2");
-      break;
-
-    case LRC_EQOPTOKS1:
-      LTRACE ("LRC_EQOPTOKS1");
-      break;
-
-    case LRC_EQOPTOKS2:
-      LTRACE ("LRC_EQOPTOKS2");
-      break;
-
-    case LRC_EQUATIONSYMTOKS1:
-      LTRACE ("LRC_EQUATIONSYMTOKS1");
-      break;
-
-    case LRC_EQUATIONSYMTOKS2:
-      LTRACE ("LRC_EQUATIONSYMTOKS2");
-      break;
-
-    case LRC_EQSEPSYMTOKS1:
-      LTRACE ("LRC_EQSEPSYMTOKS1");
-      break;
-
-    case LRC_EQSEPSYMTOKS2:
-      LTRACE ("LRC_EQSEPSYMTOKS2");
-      break;
-
-    case SELECTSYMTOKS1:
-      LTRACE ("SELECTSYMTOKS1");
-      break;
-
-    case SELECTSYMTOKS2:
-      LTRACE ("SELECTSYMTOKS2");
-      break;
-
-    case OPENSYMTOKS1:
-      LTRACE ("OPENSYMTOKS1");
-      break;
-
-    case OPENSYMTOKS2:
-      LTRACE ("OPENSYMTOKS2");
-      break;
-
-    case SEPSYMTOKS1:
-      LTRACE ("SEPSYMTOKS1");
-      break;
-
-    case SEPSYMTOKS2:
-      LTRACE ("SEPSYMTOKS2");
-      break;
-
-    case CLOSESYMTOKS1:
-      LTRACE ("CLOSESYMTOKS1");
-      break;
-
-    case CLOSESYMTOKS2:
-      LTRACE ("CLOSESYMTOKS2");
-      break;
-
-    case SIMPLEIDTOKS1:
-      LTRACE ("SIMPLEIDTOKS1");
-      break;
-
-    case SIMPLEIDTOKS2:
-      LTRACE ("SIMPLEIDTOKS2");
-      break;
-
-    case MAPSYMTOKS1:
-      LTRACE ("MAPSYMTOKS1");
-      break;
-
-    case MAPSYMTOKS2:
-      LTRACE ("MAPSYMTOKS2");
-      break;
-
-    case MARKERSYMTOKS1:
-      LTRACE ("MARKERSYMTOKS1");
-      break;
-
-    case MARKERSYMTOKS2:
-      LTRACE ("MARKERSYMTOKS2");
-      break;
-
-    case COMMENTSYMTOKS1:
-      LTRACE ("COMMENTSYMTOKS1");
-      break;
-
-    case COMMENTSYMTOKS2:
-      LTRACE ("COMMENTSYMTOKS2");
-      break;
-
-    case QUANTIFIERSYMTOK1:
-      LTRACE ("QUANTIFERSYMTOK1");
-      ProcessToken (LST_QUANTIFIERSYM);
-      break;
-
-    case LOGICALOPTOK1:
-      LTRACE ("LOGICALOPTOK1");
-      ProcessToken (LST_LOGICALOP);
-      break;
-
-    case LRC_EQOPTOK1:
-      LTRACE ("LRC_EQOPTOK1");
-      ProcessToken (LST_EQOP);
-      break;
-
-    case LRC_EQUATIONSYMTOK1:
-      LTRACE ("LRC_EQUATIONSYMTOK1");
-      ProcessToken (LST_EQUATIONSYM);
-      break;
-
-    case LRC_EQSEPSYMTOK1:
-      LTRACE ("LRC_EQSEPSYMTOK1");
-      ProcessToken (LST_EQSEPSYM);
-      break;
-
-    case SELECTSYMTOK1:
-      LTRACE ("SELECTSYMTOK1");
-      ProcessToken (LST_SELECTSYM);
-      break;
-
-    case OPENSYMTOK1:
-      LTRACE ("OPENSYMTOK1");
-      ProcessToken (LST_OPENSYM);
-      break;
-
-    case SEPSYMTOK1:
-      LTRACE ("SEPSYMTOK1");
-      ProcessToken (LST_SEPSYM);
-      break;
-
-    case CLOSESYMTOK1:
-      LTRACE ("CLOSESYMTOK1");
-      ProcessToken (LST_CLOSESYM);
-      break;
-
-    case SIMPLEIDTOK1:
-      LTRACE ("SIMPLEIDTOK1");
-      ProcessToken (LST_SIMPLEID);
-      break;
-
-    case MAPSYMTOK1:
-      LTRACE ("MAPSYMTOK1");
-      ProcessToken (LST_MAPSYM);
-      break;
-
-    case MARKERSYMTOK1:
-      LTRACE ("MARKERSYMTOK1");
-      ProcessToken (LST_MARKERSYM);
-      break;
-
-    case COMMENTSYMTOK1:
-      LTRACE ("COMMENTSYMTOK1");
-      ProcessToken (LST_COMMENTSYM);
-      break;
-
-    case SYNCLASS1:
-      LTRACE ("SYNCLASS1");
-      ProcessSynonym ();
-      break;
-
-    case OLDTOKEN1:
-      LTRACE ("OLDTOKEN1");
-      break;
-
-    case NEWTOKEN1:
-      LTRACE ("NEWTOKEN1");
-      break;
-
-    default:
-      llcontbuglit ("InitReduce: bad switch");
-      break;
-
-    }                          /* end switch       */
-}                              /* end InitReduce () */
-
-
-
-/* Reset the first character of the predefined extensionChar keywords when  */
-/* the extensionChar changes.  e.g. "extensionChar @" changes "forall" to   */
-/* "@forall".                                                              */
-
-static void
-UpdateXCharKeywords (charCode xCharCode)
-{
-  char xChar = (char) xCharCode;
-  char *str;
-
-  str = ltoken_getTextChars (ltoken_forall);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_and);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_or);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_implies);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_eq);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_neq);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_equals);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_eqsep);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_select);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_open);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_sep);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_close);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_id);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_arrow);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_marker);
-  *str = xChar;
-
-  str = ltoken_getTextChars (ltoken_comment);
-  *str = xChar;
-
-}
-
-/* Different from ProcessCharClass because only allow one extension        */
-/* character. Therefore, the present extension character must be set to a   */
-/* singleChar.                                                             */
-
-static void
-ProcessExtensionChar (void)
-{
-  ltoken stackToken = LSLGenTopPopShiftStack ();
-  char firstChar = cstring_firstChar (ltoken_unparse (stackToken));
-
-  if (!defineSingleChar[(int)firstChar]
-      && lscanCharClass (firstChar) == SINGLECHAR)
-    {
-     /* Is a single character that has not been defined before.            */
-     /* Can only have one extension char.  Release old one. */
-      lsetCharClass (firstChar, CHC_EXTENSION);
-      
-      /* this is a (bogus) type bug! caught by splint */
-      /* lsetCharClass (currentExtensionChar, SINGLECHAR); */
-
-      lsetCharClass ((char) currentExtensionChar, SINGLECHAR);
-
-      currentExtensionChar = (charCode) firstChar;
-      UpdateXCharKeywords (currentExtensionChar);
-    }
-  else
-    {
-     /* Already redefined.  Don't allow to be redefined. */
-      LocalUserError (stackToken, "character is already defined, cannot redefine");
-    }
-  ltoken_free (stackToken);
-}
-
-/* Different from ProcessSingleChar because allow any characters to be     */
-/* endCommentChar and also set a different part of the scanner structure.   */
-
-static void
-ProcessEndCommentChar (void)
-{
-  ltoken stackToken = LSLGenTopPopShiftStack ();
-  char firstChar = cstring_firstChar (ltoken_unparse (stackToken));
-
-  if (LSLIsEndComment (firstChar))
-    {
-      LocalUserError (stackToken,
-                   "already defined as a endCommentChar, cannot redefine");
-    }
-  else
-    {
-      lsetEndCommentChar (firstChar, TRUE);
-    }
-  ltoken_free (stackToken);
-}
-
-static void
-ProcessSingleChar (charCode code)
-{
-  ltoken stackToken = LSLGenTopPopShiftStack ();
-  char firstChar = cstring_firstChar (ltoken_unparse (stackToken));
-
-  if (!defineSingleChar[(int)firstChar]
-      && lscanCharClass (firstChar) == SINGLECHAR)
-    {
-      /* Is a single character that has not been defined before.           */
-      /* It's OK to redefine once. */
-      lsetCharClass (firstChar, code);
-      /* OK to mark as a defined singleChar even if not.  Only check       */
-      /* defineSingleChar[] if defining a singleChar.                      */
-      defineSingleChar[(int)firstChar] = TRUE;
-    }
-  else
-    {
-      LocalUserError (stackToken, "character is already defined, cannot redefine");
-    }
-  ltoken_free (stackToken);
-}
-
-static void
-ProcessToken (ltokenCode code)
-{
-  ltoken stackToken, temp;
-  lsymbol sym;
-
-  stackToken = LSLGenTopPopShiftStack ();
-  sym = ltoken_getText (stackToken);
-
-  if (LSLIsSyn (sym))
-    {
-      LocalUserError (stackToken,
-                     "already defined as a synonym, cannot redefine");
-    }
-
-  /* Get the token from the token table, so can check if the token    */
-  /* was updated by a previous token.                              */
-  temp = LSLGetToken (sym);
-  
-  if (ltoken_isStateDefined (temp))
-    {
-      if ((code == LST_OPENSYM && sym == lsymbol_fromChars ("[")) ||
-         (code == LST_CLOSESYM && sym == lsymbol_fromChars ("]")))
-       {
-         /* ignore "openSym [" and "closeSym ]" TokenClass */
-         ltoken_free (stackToken);
-         return;
-       }
-      else
-       {
-         LocalUserError (stackToken, "already defined, cannot redefine");
-         PrintToken (temp);
-       }
-    }
-  
-  LSLUpdateToken (code, ltoken_getText (stackToken), TRUE);
-  ltoken_free (stackToken);
-}
-
-
-static void
-ProcessSynonym (void)
-{
-  ltoken newtok;
-  ltoken oldtok;
-
-  newtok = LSLGenTopPopShiftStack ();
-  oldtok = LSLGenTopPopShiftStack ();
-
-  if (ltoken_wasSyn (newtok))
-    {
-     /* The token has a synonym.  This means that the synonym was in the */
-     /* init file, so complain about redefining as a synonym again         */
-      LocalUserError (newtok, "newtok already is a synonym, cannot redefine");
-    }
-
-  if (ltoken_hasSyn (newtok))
-    {
-      /*
-      ** newtok already has a synonym defined for it.  Do not allow        
-      ** synonyms to be chained.                                           
-      */
-
-      LocalUserError (newtok,
-                     "newtok already has a synonym, cannot chain synonyms");
-    }
-
-  if (ltoken_isStateDefined (newtok))
-    {
-      LocalUserError (newtok, "newtok already defined, cannot redefine");
-    }
-
-  LSLAddSyn (ltoken_getText (newtok), ltoken_getText (oldtok));
-  ltoken_free (oldtok);
-  ltoken_free (newtok);
-}
-
-
-/*
- * Utilities, in alphabetical order
- */
-
-static void
-LocalUserError (ltoken t, /*@temp@*/ char *msg)
-{
-  lldiagmsg (message ("%s %s in the LSL init file:", 
-                     ltoken_unparse (t), cstring_fromChars (msg)));
-
-  ltoken_free (nextToken);
-  nextToken = LSLScanNextToken ();            
-
-  while (ltoken_getCode (nextToken) != LST_EOL)
-    {
-      ltoken_free (nextToken);
-      nextToken = LSLScanNextToken ();
-    }
-}
-
-/*
-**  Required initialization and cleanup routines
-*/
-
-static /*@exposed@*/ ltoken insertSimpleToken (char *text) 
-  /*@modifies internalState@*/
-{
-  return (LSLInsertToken (LST_SIMPLEID, lsymbol_fromChars (text), 0, FALSE));
-}
-
-void
-LSLProcessInitFileInit (void)
-{
-  int i;
-
-  LSLGenInit (TRUE);           /* parsing LSLinit not LCLinit */
-
-  /*
-  ** Insert the init file keywords into the token table as undefined       
-  ** SIMPLEIDs.  They are defined as simpleIds since they must be treated 
-  ** that way if they do not appear as the first token on a line, and      
-  ** they must be treated that way for the actual LSL parsing. Save the   
-  ** tokens so can recognize as init file keywords when necessary.      
-  */
-
-  endCommentCharToken = insertSimpleToken ("endCommentChar");
-  idCharToken = insertSimpleToken ("idChar");                       
-  opCharToken = insertSimpleToken ("opChar");                       
-  extensionCharToken = insertSimpleToken ("extensionChar");    
-  singleCharToken = insertSimpleToken ("singleChar");  
-  whiteCharToken = insertSimpleToken ("whiteChar");
-
-  quantifierSymToken = insertSimpleToken ("quantifierSym");
-  logicalOpToken = insertSimpleToken ("logicalOp");
-  eqOpToken = insertSimpleToken ("eqOp");                         
-  equationSymToken = insertSimpleToken ("equationSym");
-  eqSepSymToken = insertSimpleToken ("eqSepSym");                             
-  selectSymToken = insertSimpleToken ("selectSym");
-  openSymToken = insertSimpleToken ("openSym");                              
-  sepSymToken = insertSimpleToken ("sepSym");                       
-  closeSymToken = insertSimpleToken ("closeSym");                             
-  simpleIdToken = insertSimpleToken ("simpleId");                             
-  mapSymToken = insertSimpleToken ("mapSym");                       
-  markerSymToken = insertSimpleToken ("markerSym");
-  commentSymToken = insertSimpleToken ("commentSym"); 
-  synonymToken = insertSimpleToken ("synonym");                              
-
-  for (i = 0; i <= LASTCHAR; i++)
-    {
-      defineSingleChar[i] = FALSE;
-    }
-  
-  /*
-  ** Record the current extension character so can redefine back to        
-  ** singleChar if a new extension character is redefined.                 
-  */
-
-  currentExtensionChar = (charCode) CHAREXTENDER;
-
-  LSLReportEolTokens (TRUE);
-  ltoken_free (nextToken);
-  nextToken = LSLScanNextToken ();            
-}
-
-
-
-
-
-
-
-
This page took 0.095123 seconds and 4 git commands to generate.