Meta generated data working

This commit is contained in:
Krzosa Karol
2022-09-29 19:17:53 +02:00
parent 3601e83032
commit e46d936c38
6 changed files with 108 additions and 98 deletions

View File

@@ -41,8 +41,8 @@ for i in meta.token_simple_expr:
first = "op_" + meta.pascal_to_snake(meta.token_simple_expr[0][0]) first = "op_" + meta.pascal_to_snake(meta.token_simple_expr[0][0])
last = "op_" + meta.pascal_to_snake(meta.token_simple_expr[-1][0]) last = "op_" + meta.pascal_to_snake(meta.token_simple_expr[-1][0])
print(f"l->first_op = {first}") print(f"l->first_op = {first};")
print(f"l->last_op = {last}") print(f"l->last_op = {last};")
*/ */
op_mul = l->intern("*"_s); op_mul = l->intern("*"_s);
op_div = l->intern("/"_s); op_div = l->intern("/"_s);
@@ -68,8 +68,8 @@ op_decrement = l->intern("--"_s);
op_increment = l->intern("++"_s); op_increment = l->intern("++"_s);
op_post_decrement = l->intern("--"_s); op_post_decrement = l->intern("--"_s);
op_post_increment = l->intern("++"_s); op_post_increment = l->intern("++"_s);
l->first_op = op_mul l->first_op = op_mul;
l->last_op = op_post_increment l->last_op = op_post_increment;
/*END*/ /*END*/
} }

View File

@@ -14,54 +14,54 @@ enum Token_Kind{
/*# /*#
import meta import meta
for i in meta.token_kinds: for i in meta.token_kinds:
print(" " + i[0] + ",") print(" TK_" + i[0] + ",")
*/ */
Mul, TK_Mul,
Div, TK_Div,
Mod, TK_Mod,
LeftShift, TK_LeftShift,
RightShift, TK_RightShift,
FirstMul = TK_Mul, TK_FirstMul = TK_Mul,
LastMul = TK_RightShift, TK_LastMul = TK_RightShift,
Add, TK_Add,
Sub, TK_Sub,
FirstAdd = TK_Add, TK_FirstAdd = TK_Add,
LastAdd = TK_Sub, TK_LastAdd = TK_Sub,
Equals, TK_Equals,
LesserThenOrEqual, TK_LesserThenOrEqual,
GreaterThenOrEqual, TK_GreaterThenOrEqual,
LesserThen, TK_LesserThen,
GreaterThen, TK_GreaterThen,
NotEquals, TK_NotEquals,
FirstCompare = TK_Equals, TK_FirstCompare = TK_Equals,
LastCompare = TK_NotEquals, TK_LastCompare = TK_NotEquals,
BitAnd, TK_BitAnd,
BitOr, TK_BitOr,
BitXor, TK_BitXor,
And, TK_And,
Or, TK_Or,
FirstLogical = TK_BitAnd, TK_FirstLogical = TK_BitAnd,
LastLogical = TK_Or, TK_LastLogical = TK_Or,
Neg, TK_Neg,
Not, TK_Not,
Decrement, TK_Decrement,
Increment, TK_Increment,
PostDecrement, TK_PostDecrement,
PostIncrement, TK_PostIncrement,
Assign, TK_Assign,
ColonAssign, TK_ColonAssign,
DivAssign, TK_DivAssign,
MulAssign, TK_MulAssign,
ModAssign, TK_ModAssign,
SubAssign, TK_SubAssign,
AddAssign, TK_AddAssign,
AndAssign, TK_AndAssign,
OrAssign, TK_OrAssign,
XorAssign, TK_XorAssign,
LeftShiftAssign, TK_LeftShiftAssign,
RightShiftAssign, TK_RightShiftAssign,
FirstAssign = TK_Assign, TK_FirstAssign = TK_Assign,
LastAssign = TK_RightShiftAssign, TK_LastAssign = TK_RightShiftAssign,
TK_OpenParen, TK_OpenParen,
TK_CloseParen, TK_CloseParen,
TK_OpenBrace, TK_OpenBrace,

View File

@@ -35,28 +35,38 @@ Intern_String intern_it;
Intern_String intern_strict; Intern_String intern_strict;
Intern_String intern_flag; Intern_String intern_flag;
Intern_String op_add; // first /*#
import meta
for i in meta.token_simple_expr:
if i[1] != "SPECIAL":
print("Intern_String op_" + meta.pascal_to_snake(i[0]) + ";")
*/
Intern_String op_mul; Intern_String op_mul;
Intern_String op_div; Intern_String op_div;
Intern_String op_mod;
Intern_String op_left_shift;
Intern_String op_right_shift;
Intern_String op_add;
Intern_String op_sub; Intern_String op_sub;
Intern_String op_and;
Intern_String op_bitand;
Intern_String op_or;
Intern_String op_bitor;
Intern_String op_xor;
Intern_String op_equals; Intern_String op_equals;
Intern_String op_not_equals;
Intern_String op_lesser_then_or_equal; Intern_String op_lesser_then_or_equal;
Intern_String op_greater_then_or_equal; Intern_String op_greater_then_or_equal;
Intern_String op_lesser_then; Intern_String op_lesser_then;
Intern_String op_greater_then; Intern_String op_greater_then;
Intern_String op_left_shift; Intern_String op_not_equals;
Intern_String op_right_shift; Intern_String op_bit_and;
Intern_String op_bit_or;
Intern_String op_not; Intern_String op_bit_xor;
Intern_String op_and;
Intern_String op_or;
Intern_String op_neg; Intern_String op_neg;
Intern_String op_not;
Intern_String op_decrement; Intern_String op_decrement;
Intern_String op_increment; // last Intern_String op_increment;
Intern_String op_post_decrement;
Intern_String op_post_increment;
/*END*/
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Type globals // Type globals

View File

@@ -863,10 +863,10 @@ map_operator_to_intern(Token_Kind op){
case TK_Div: return op_div; break; case TK_Div: return op_div; break;
case TK_Sub: return op_sub; break; case TK_Sub: return op_sub; break;
case TK_And: return op_and; break; case TK_And: return op_and; break;
case TK_BitAnd: return op_bitand; break; case TK_BitAnd: return op_bit_and; break;
case TK_Or: return op_or; break; case TK_Or: return op_or; break;
case TK_BitOr: return op_bitor; break; case TK_BitOr: return op_bit_or; break;
case TK_BitXor: return op_xor; break; case TK_BitXor: return op_bit_xor; break;
case TK_Equals: return op_equals; break; case TK_Equals: return op_equals; break;
case TK_NotEquals: return op_not_equals; break; case TK_NotEquals: return op_not_equals; break;
case TK_LesserThenOrEqual: return op_lesser_then_or_equal; break; case TK_LesserThenOrEqual: return op_lesser_then_or_equal; break;
@@ -890,10 +890,10 @@ map_operator_intern_to_identifier_name(Intern_String op){
if(op.str == op_div.str) return "DIV"_s; if(op.str == op_div.str) return "DIV"_s;
if(op.str == op_sub.str) return "SUB"_s; if(op.str == op_sub.str) return "SUB"_s;
if(op.str == op_and.str) return "AND"_s; if(op.str == op_and.str) return "AND"_s;
if(op.str == op_bitand.str) return "BITAND"_s; if(op.str == op_bit_and.str) return "BITAND"_s;
if(op.str == op_or.str) return "OR"_s; if(op.str == op_or.str) return "OR"_s;
if(op.str == op_bitor.str) return "BITOR"_s; if(op.str == op_bit_or.str) return "BITOR"_s;
if(op.str == op_xor.str) return "XOR"_s; if(op.str == op_bit_xor.str) return "XOR"_s;
if(op.str == op_equals.str) return "EQUALS"_s; if(op.str == op_equals.str) return "EQUALS"_s;
if(op.str == op_not_equals.str) return "NOT_EQUALS"_s; if(op.str == op_not_equals.str) return "NOT_EQUALS"_s;
if(op.str == op_lesser_then_or_equal.str) return "LESSER_THEN_OR_EQUAL"_s; if(op.str == op_lesser_then_or_equal.str) return "LESSER_THEN_OR_EQUAL"_s;

56
meta.py
View File

@@ -59,34 +59,34 @@ token_assign_expr = [
] ]
token_rest = [ token_rest = [
["TK_OpenParen", "("], ["OpenParen", "("],
["TK_CloseParen", ")"], ["CloseParen", ")"],
["TK_OpenBrace", "{"], ["OpenBrace", "{"],
["TK_CloseBrace", "}"], ["CloseBrace", "}"],
["TK_OpenBracket", "["], ["OpenBracket", "["],
["TK_CloseBracket", "]"], ["CloseBracket", "]"],
["TK_Comma", ","], ["Comma", ","],
["TK_Pound", "#"], ["Pound", "#"],
["TK_Question", "?"], ["Question", "?"],
["TK_ThreeDots", "..."], ["ThreeDots", "..."],
["TK_Semicolon", ";"], ["Semicolon", ";"],
["TK_Dot", "."], ["Dot", "."],
["TK_TwoDots", ".."], ["TwoDots", ".."],
["TK_NewLine", "[NewLine]"], ["NewLine", "[NewLine]"],
["TK_Colon", ":"], ["Colon", ":"],
["TK_DoubleColon", "::"], ["DoubleColon", "::"],
["TK_At", "@"], ["At", "@"],
["TK_Arrow", "->"], ["Arrow", "->"],
["TK_ExprSizeof", "[SizeOf]"], ["ExprSizeof", "[SizeOf]"],
["TK_DocComment", "[///]"], ["DocComment", "[///]"],
["TK_Comment", "//"], ["Comment", "//"],
["TK_Identifier", "[Ident]"], ["Identifier", "[Ident]"],
["TK_UnicodeLit", "[Unicode]"], ["UnicodeLit", "[Unicode]"],
["TK_StringLit", "[String]"], ["StringLit", "[String]"],
["TK_Error", "[Error]"], ["Error", "[Error]"],
["TK_Float", "[Float]"], ["Float", "[Float]"],
["TK_Integer", "[Int]"], ["Integer", "[Int]"],
["TK_Keyword", "[Keyword]"], ["Keyword", "[Keyword]"],
] ]
token_kinds = token_simple_expr + token_assign_expr + token_rest token_kinds = token_simple_expr + token_assign_expr + token_rest

View File

@@ -3,7 +3,7 @@ import sys
import os import os
files = ["core_compiler.cpp", "core_compiler.h"] files = ["core_compiler.cpp", "core_compiler.h", "core_globals.cpp"]
for file_to_modify in files: for file_to_modify in files:
fd = open(file_to_modify, "r+") fd = open(file_to_modify, "r+")