HyriseSQLParser/src/parser/keywordlist_generator.py
2014-11-26 12:19:33 +01:00

46 lines
987 B
Python

import math
with open("sql_keywords.txt", 'r') as fh:
keywords = [line.strip() for line in fh.readlines() if not line.strip().startswith("//") and len(line.strip()) > 0]
keywords = sorted(set(keywords)) # Sort by name
keywords = sorted(keywords, key=lambda x: len(x), reverse=True) # Sort by length
#################
# Flex
max_len = len(max(keywords, key=lambda x: len(x))) + 1
max_len = 4 * int(math.ceil(max_len / 4.0))
for keyword in keywords:
len_diff = (max_len) - len(keyword)
num_tabs = int(math.floor(len_diff / 4.0))
if len_diff % 4 != 0: num_tabs += 1
tabs = ''.join(['\t' for _ in range(num_tabs)])
print "%s%sTOKEN(%s)" % (keyword, tabs, keyword)
#
#################
#################
# Bison
line = "%token"
max_len = 60
print "/* SQL Keywords */"
for keyword in keywords:
if len(line + " " + keyword) > max_len:
print line
line = "%token " + keyword
else:
line = line + " " + keyword
print line
#
#################