blob: ef159feb37568a8a853c77cd1b7806389d10254e (
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
|
#!/usr/bin/env python
# python script to generate an overview of the states 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("static const char *stateToString(int state)")
print("{")
print(" switch(state)")
print(" {")
print(" case INITIAL: return \"INITIAL\";")
with open(lex_file) as f:
for line in f:
if re.search(r'^%x', line) or re.search(r'^%s', line):
state = line.split()[1]
print(" case %s: return \"%s\";" % (state,state))
elif re.search(r'^%%', line):
break
else:
pass
f.close()
#write post
print(" }")
print(" return \"Unknown\";")
print("}")
if __name__ == '__main__':
main()
|