Generating meta data

This commit is contained in:
Krzosa Karol
2022-09-29 19:14:42 +02:00
parent 256eaf8640
commit 3601e83032
5 changed files with 248 additions and 78 deletions

92
meta.py Normal file
View File

@@ -0,0 +1,92 @@
import re
snake_case_pattern = re.compile(r'(?<!^)(?=[A-Z])')
def pascal_to_snake(v):
name = snake_case_pattern.sub('_', v).lower()
return name
token_simple_expr = [
["Mul", "*"],
["Div", "/"],
["Mod", "%"],
["LeftShift", "<<"],
["RightShift", ">>"],
["FirstMul = TK_Mul", "SPECIAL"],
["LastMul = TK_RightShift", "SPECIAL"],
["Add", "+"],
["Sub", "-"],
["FirstAdd = TK_Add", "SPECIAL"],
["LastAdd = TK_Sub", "SPECIAL"],
["Equals", "=="],
["LesserThenOrEqual", "<="],
["GreaterThenOrEqual", ">="],
["LesserThen", "<"],
["GreaterThen", ">"],
["NotEquals", "!="],
["FirstCompare = TK_Equals", "SPECIAL"],
["LastCompare = TK_NotEquals", "SPECIAL"],
["BitAnd", "&"],
["BitOr", "|"],
["BitXor", "^"],
["And", "&&"],
["Or", "||"],
["FirstLogical = TK_BitAnd", "SPECIAL"],
["LastLogical = TK_Or", "SPECIAL"],
["Neg", "~"],
["Not", "!"],
["Decrement", "--"],
["Increment", "++"],
["PostDecrement", "--"],
["PostIncrement", "++"],
]
token_assign_expr = [
["Assign", "="],
["ColonAssign", ":="],
["DivAssign", "/="],
["MulAssign", "*="],
["ModAssign", "%="],
["SubAssign", "-="],
["AddAssign", "+="],
["AndAssign", "&="],
["OrAssign", "|="],
["XorAssign", "^="],
["LeftShiftAssign", "<<="],
["RightShiftAssign", ">>="],
["FirstAssign = TK_Assign", "SPECIAL"],
["LastAssign = TK_RightShiftAssign", "SPECIAL"],
]
token_rest = [
["TK_OpenParen", "("],
["TK_CloseParen", ")"],
["TK_OpenBrace", "{"],
["TK_CloseBrace", "}"],
["TK_OpenBracket", "["],
["TK_CloseBracket", "]"],
["TK_Comma", ","],
["TK_Pound", "#"],
["TK_Question", "?"],
["TK_ThreeDots", "..."],
["TK_Semicolon", ";"],
["TK_Dot", "."],
["TK_TwoDots", ".."],
["TK_NewLine", "[NewLine]"],
["TK_Colon", ":"],
["TK_DoubleColon", "::"],
["TK_At", "@"],
["TK_Arrow", "->"],
["TK_ExprSizeof", "[SizeOf]"],
["TK_DocComment", "[///]"],
["TK_Comment", "//"],
["TK_Identifier", "[Ident]"],
["TK_UnicodeLit", "[Unicode]"],
["TK_StringLit", "[String]"],
["TK_Error", "[Error]"],
["TK_Float", "[Float]"],
["TK_Integer", "[Int]"],
["TK_Keyword", "[Keyword]"],
]
token_kinds = token_simple_expr + token_assign_expr + token_rest