]> andersk Git - splint.git/blame - src/mtreader.c
Added usleep to unix.h in library.
[splint.git] / src / mtreader.c
CommitLineData
28bf4b0b 1/*
2** LCLint - annotation-assisted static program checker
3** Copyright (C) 1994-2001 University of Virginia,
4** Massachusetts Institute of Technology
5**
6** This program is free software; you can redistribute it and/or modify it
7** under the terms of the GNU General Public License as published by the
8** Free Software Foundation; either version 2 of the License, or (at your
9** option) any later version.
10**
11** This program is distributed in the hope that it will be useful, but
12** WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14** General Public License for more details.
15**
16** The GNU General Public License is available from http://www.gnu.org/ or
17** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18** MA 02111-1307, USA.
19**
20** For information on lclint: lclint-request@cs.virginia.edu
21** To report a bug: lclint-bug@cs.virginia.edu
22** For more information: http://lclint.cs.virginia.edu
23*/
24/*
25** mtreader.c
26**
27** Controls reading of .mts files.
28*/
29
30# include "lclintMacros.nf"
31# include "llbasic.h"
32# include "mtgrammar.h"
33# include "mtscanner.h"
34
35void mtreader_readFile (cstring infile)
36{
37 inputStream sourceFile;
38 fileId fid;
39 cstring fname;
40
41 sourceFile = inputStream_create (infile, cstring_undefined, FALSE);
42
43 if (!inputStream_getPath (context_getLarchPath (), sourceFile))
44 {
45 lldiagmsg
46 (message ("Metastate definition: can't find file %s",
47 inputStream_fileName (sourceFile)));
48 inputStream_free (sourceFile);
49 return;
50 }
51
52 if (!inputStream_open (sourceFile))
53 {
54 lldiagmsg
55 (message ("Cannot open metastate file: %s",
56 inputStream_fileName (sourceFile)));
57 inputStream_free (sourceFile);
58
59 return;
60 }
61
62
63 fname = inputStream_fileName (sourceFile);
64
65 if (fileTable_exists (context_fileTable (), fname))
66 {
67 fid = fileTable_lookup (context_fileTable (), fname);
68 }
69 else
70 {
71 fid = fileTable_addMetastateFile (context_fileTable (), fname);
72 }
73
74 context_setFileId (fid);
75
76 if (context_getFlag (FLG_SHOWSCAN))
77 {
78 lldiagmsg (message ("< reading metastate %s >", fname));
79 }
80
81 mtscanner_reset (sourceFile);
82 context_enterMTfile ();
83 (void) mtparse ();
84 context_exitMTfile ();
85
dfd82dce 86 inputStream_close (sourceFile);
28bf4b0b 87 inputStream_free (sourceFile);
88}
89
90void mtreader_processDeclaration (mtDeclarationNode decl)
91{
92 DPRINTF (("Processing state %s", mtDeclarationNode_unparse (decl)));
93 mtDeclarationNode_process (decl, FALSE);
94 mtDeclarationNode_free (decl);
95}
96
97void mtreader_processGlobalDeclaration (mtDeclarationNode decl)
98{
99 DPRINTF (("Processing state %s", mtDeclarationNode_unparse (decl)));
100 mtDeclarationNode_process (decl, TRUE);
101 mtDeclarationNode_free (decl);
102}
This page took 0.05672 seconds and 5 git commands to generate.