Bulletproofing operator overloads using generated data
This commit is contained in:
@@ -14,14 +14,12 @@ print(f'l->interns.last_keyword = keyword_{meta.keywords[-1].lower()}.str;')
|
||||
for i in meta.interns:
|
||||
print(f'intern_{i.lower()} = l->intern("{i}"_s);')
|
||||
|
||||
index = 0
|
||||
for i in meta.token_simple_expr:
|
||||
if i[1] != "SPECIAL":
|
||||
print("op_" + meta.pascal_to_snake(i[0]) + f' = l->intern("{i[1]}"_s);')
|
||||
print(f'op_info_table[{index}].op = l->intern("{i[1]}"_s);')
|
||||
index += 1
|
||||
|
||||
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};")
|
||||
*/
|
||||
keyword_struct = l->intern("struct"_s);
|
||||
keyword_union = l->intern("union"_s);
|
||||
@@ -48,32 +46,26 @@ intern_strict = l->intern("strict"_s);
|
||||
intern_void = l->intern("void"_s);
|
||||
intern_flag = l->intern("flag"_s);
|
||||
intern_it = l->intern("it"_s);
|
||||
op_mul = l->intern("*"_s);
|
||||
op_div = l->intern("/"_s);
|
||||
op_mod = l->intern("%"_s);
|
||||
op_left_shift = l->intern("<<"_s);
|
||||
op_right_shift = l->intern(">>"_s);
|
||||
op_add = l->intern("+"_s);
|
||||
op_sub = l->intern("-"_s);
|
||||
op_equals = l->intern("=="_s);
|
||||
op_lesser_then_or_equal = l->intern("<="_s);
|
||||
op_greater_then_or_equal = l->intern(">="_s);
|
||||
op_lesser_then = l->intern("<"_s);
|
||||
op_greater_then = l->intern(">"_s);
|
||||
op_not_equals = l->intern("!="_s);
|
||||
op_bit_and = l->intern("&"_s);
|
||||
op_bit_or = l->intern("|"_s);
|
||||
op_bit_xor = l->intern("^"_s);
|
||||
op_and = l->intern("&&"_s);
|
||||
op_or = l->intern("||"_s);
|
||||
op_neg = l->intern("~"_s);
|
||||
op_not = l->intern("!"_s);
|
||||
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;
|
||||
op_info_table[0].op = l->intern("*"_s);
|
||||
op_info_table[1].op = l->intern("/"_s);
|
||||
op_info_table[2].op = l->intern("%"_s);
|
||||
op_info_table[3].op = l->intern("<<"_s);
|
||||
op_info_table[4].op = l->intern(">>"_s);
|
||||
op_info_table[5].op = l->intern("+"_s);
|
||||
op_info_table[6].op = l->intern("-"_s);
|
||||
op_info_table[7].op = l->intern("=="_s);
|
||||
op_info_table[8].op = l->intern("<="_s);
|
||||
op_info_table[9].op = l->intern(">="_s);
|
||||
op_info_table[10].op = l->intern("<"_s);
|
||||
op_info_table[11].op = l->intern(">"_s);
|
||||
op_info_table[12].op = l->intern("!="_s);
|
||||
op_info_table[13].op = l->intern("&"_s);
|
||||
op_info_table[14].op = l->intern("|"_s);
|
||||
op_info_table[15].op = l->intern("^"_s);
|
||||
op_info_table[16].op = l->intern("&&"_s);
|
||||
op_info_table[17].op = l->intern("||"_s);
|
||||
op_info_table[18].op = l->intern("~"_s);
|
||||
op_info_table[19].op = l->intern("!"_s);
|
||||
/*END*/
|
||||
|
||||
}
|
||||
@@ -333,4 +325,4 @@ compile_file(String filename, U32 compile_flags = COMPILE_NULL){
|
||||
}
|
||||
|
||||
destroy_compiler();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user