Meta generated data working
This commit is contained in:
@@ -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*/
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
56
meta.py
@@ -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
|
||||
@@ -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+")
|
||||
|
||||
Reference in New Issue
Block a user