blob: 7f69fdda6215a4f8464f461f40a09d7be0183941 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#!/usr/bin/python
# python script to generate an overview of the staes based on the input lex file.
#
# Copyright (C) 1997-2019 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
# granted. No representations are made about the suitability of this software
# for any purpose. It is provided "as is" without express or implied warranty.
# See the GNU General Public License for more details.
#
# Documents produced by Doxygen are derivative works derived from the
# input used in their production; they are not affected by this license.
#
import sys
import os
import re
def main():
if len(sys.argv)!=2:
sys.exit('Usage: %s <lex_file>' % sys.argv[0])
lex_file = sys.argv[1]
if (os.path.exists(lex_file)):
#write preamble
print("#define scanStateToString(x) case x: resultString = #x; break;");
print("static const char *stateToString(int state)");
print("{");
print(" const char *resultString;");
print(" switch(state)");
print(" {");
print(" scanStateToString(INITIAL)");
with open(lex_file) as f:
for line in f:
if re.search(r'^%x', line) or re.search(r'^%s', line):
print(" scanStateToString(%s)"%line.split()[1]);
elif re.search(r'^%%', line):
break
else:
pass
f.close()
#write post
print(" default: resultString = \"Unknown\"; break;")
print(" }")
print(" return resultString;")
print("}")
if __name__ == '__main__':
main()
|