Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Генерация дерева по опз
- // Используемые процедуры и структуры данных
- // get_token() - получаем очередной символ из опз, например '*', '+'
- // token_node* - узел дерева
- // token_node_stack - стек из элементов token_node*
- // push_node(), pop_node() - помещение, выталкивания узла дерева из стека
- token_node *tree_from_polish(const char *polish_expr)
- {
- token_node *head;
- token tkn;
- int pos = 0;
- token_node_stack *s = NULL;
- while ((tkn = get_token(polish_expr, &pos)).type != tkn_end) {
- token_node *tmp = malloc(sizeof (*tmp));
- tmp->name = tkn.name;
- if (tkn.type == tkn_op) {
- tmp->left = pop_node(&s);
- tmp->right = pop_node(&s);
- } else {
- tmp->left = tmp->right = NULL;
- }
- push_node(&s, tmp);
- }
- token_node *ret = pop_node(&s);
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement