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])
last = "op_" + meta.pascal_to_snake(meta.token_simple_expr[-1][0])
print(f"l->first_op = {first}")
print(f"l->last_op = {last}")
print(f"l->first_op = {first};")
print(f"l->last_op = {last};")
*/
op_mul = l->intern("*"_s);
op_div = l->intern("/"_s);
@@ -68,8 +68,8 @@ op_decrement = l->intern("--"_s);
op_increment = l->intern("++"_s);
op_post_decrement = l->intern("--"_s);
op_post_increment = l->intern("++"_s);
l->first_op = op_mul
l->last_op = op_post_increment
l->first_op = op_mul;
l->last_op = op_post_increment;
/*END*/
}

View File

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

View File

@@ -35,28 +35,38 @@ Intern_String intern_it;
Intern_String intern_strict;
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_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_and;
Intern_String op_bitand;
Intern_String op_or;
Intern_String op_bitor;
Intern_String op_xor;
Intern_String op_equals;
Intern_String op_not_equals;
Intern_String op_lesser_then_or_equal;
Intern_String op_greater_then_or_equal;
Intern_String op_lesser_then;
Intern_String op_greater_then;
Intern_String op_left_shift;
Intern_String op_right_shift;
Intern_String op_not;
Intern_String op_not_equals;
Intern_String op_bit_and;
Intern_String op_bit_or;
Intern_String op_bit_xor;
Intern_String op_and;
Intern_String op_or;
Intern_String op_neg;
Intern_String op_not;
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

View File

@@ -863,10 +863,10 @@ map_operator_to_intern(Token_Kind op){
case TK_Div: return op_div; break;
case TK_Sub: return op_sub; 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_BitOr: return op_bitor; break;
case TK_BitXor: return op_xor; break;
case TK_BitOr: return op_bit_or; break;
case TK_BitXor: return op_bit_xor; break;
case TK_Equals: return op_equals; break;
case TK_NotEquals: return op_not_equals; 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_sub.str) return "SUB"_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_bitor.str) return "BITOR"_s;
if(op.str == op_xor.str) return "XOR"_s;
if(op.str == op_bit_or.str) return "BITOR"_s;
if(op.str == op_bit_xor.str) return "XOR"_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_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 = [
["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]"],
["OpenParen", "("],
["CloseParen", ")"],
["OpenBrace", "{"],
["CloseBrace", "}"],
["OpenBracket", "["],
["CloseBracket", "]"],
["Comma", ","],
["Pound", "#"],
["Question", "?"],
["ThreeDots", "..."],
["Semicolon", ";"],
["Dot", "."],
["TwoDots", ".."],
["NewLine", "[NewLine]"],
["Colon", ":"],
["DoubleColon", "::"],
["At", "@"],
["Arrow", "->"],
["ExprSizeof", "[SizeOf]"],
["DocComment", "[///]"],
["Comment", "//"],
["Identifier", "[Ident]"],
["UnicodeLit", "[Unicode]"],
["StringLit", "[String]"],
["Error", "[Error]"],
["Float", "[Float]"],
["Integer", "[Int]"],
["Keyword", "[Keyword]"],
]
token_kinds = token_simple_expr + token_assign_expr + token_rest

View File

@@ -3,7 +3,7 @@ import sys
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:
fd = open(file_to_modify, "r+")