Skip to content
Snippets Groups Projects
Commit 3a24754b authored by FlorianKrull's avatar FlorianKrull
Browse files

Added identifier

parent 82de390e
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,8 @@
struct mcc_tac *mcc_tac_build(struct mcc_ast_program *program, struct mcc_symbol_table *st);
void parse_params(struct mcc_ast_parameter *parameter, struct mcc_tac *tac);
void mcc_tac_parse_statement(struct mcc_ast_statement *statement, struct mcc_tac *tac);
void mcc_tac_parse_statement_list(struct mcc_ast_statement_list *stl, struct mcc_tac *tac);
......
This diff is collapsed.
......@@ -345,24 +345,24 @@ void mcc_tac_parse_statement(struct mcc_ast_statement *statement, struct mcc_tac
// -------------------------------- parse function
// TODO: check if not used when assembly code is generated (probably not) -> then kick this out
//void parse_params(struct mcc_ast_parameter *parameter, struct mcc_tac *tac) {
// // parse params from right to left
// for(int i = 0; i < parameter->parameters->size; i++) {
// struct mcc_ast_declaration *param_decl = (struct mcc_ast_declaration *) parameter->parameters->arr[i];
// bool is_array = param_decl->arr_literal != NULL;
// enum mcc_tac_operation tac_op = mcc_convert_ast_type_to_tac_param(param_decl->type, is_array);
//
// // save array size in first argument
// int number_of_digits = mcc_get_number_of_digits(param_decl->arr_literal->i_value);
// char *arg1 = NULL;
//
// if(is_array) {
// snprintf(arg1, sizeof(char) * number_of_digits, "%d", param_decl->arr_literal->i_value);
// }
//
// mcc_tac_create_and_add_new_entry(tac_op, arg1, NULL, param_decl->ident->i_value, tac);
// }
//}
void parse_params(struct mcc_ast_parameter *parameter, struct mcc_tac *tac) {
// parse params from right to left
for(int i = 0; i < parameter->parameters->size; i++) {
struct mcc_ast_declaration *param_decl = (struct mcc_ast_declaration *) parameter->parameters->arr[i];
bool is_array = param_decl->arr_literal != NULL;
enum mcc_tac_operation tac_op = mcc_convert_ast_type_to_tac_param_pop(param_decl->type, is_array);
// save array size in first argument
int number_of_digits = mcc_get_number_of_digits(param_decl->arr_literal->i_value);
char *arg1 = NULL;
if(is_array) {
snprintf(arg1, sizeof(char) * number_of_digits, "%d", param_decl->arr_literal->i_value);
}
mcc_tac_create_and_add_new_entry(tac_op, arg1, NULL, param_decl->ident->i_value, tac);
}
}
void mcc_tac_parse_function(struct mcc_ast_function *f, struct mcc_tac *tac) {
assert(f);
......@@ -377,6 +377,9 @@ void mcc_tac_parse_function(struct mcc_ast_function *f, struct mcc_tac *tac) {
sprintf(arg1, "%d", tac -> funcion_counter);
mcc_tac_create_and_add_new_entry(MCC_TAC_FUNCTION_START, arg1, f -> identifier -> i_value, NULL, tac);
// if(f->parameter){
// parse_params(f->parameter,tac);
// }
if(f->statement != NULL) {
mcc_tac_parse_statement(f->statement, tac);
......
......@@ -3,7 +3,7 @@ int is_prime(int n)
int i;
i = 2;
int mod;
while (i < n / 2) {
while (i < (n / 2)) {
mod = n - (n / i) * i;
if (mod == 0) {
return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment