Make expression parsing parse more valid syntax.
This commit is contained in:
		
							parent
							
								
									c8ec93880e
								
							
						
					
					
						commit
						1d0ea602a5
					
				| @ -368,6 +368,10 @@ int _parser_can_postfix_follow(enum parser_expression_type type) { | ||||
|     return type == EXPR_CLOSE_PARENTH || type == EXPR_ATOM || type == EXPR_OP_POSTFIX; | ||||
| } | ||||
| 
 | ||||
| int _parser_can_atom_follow(enum parser_expression_type type) { | ||||
|     return !(type == EXPR_CLOSE_PARENTH || type == EXPR_OP_POSTFIX || type == EXPR_ATOM); | ||||
| } | ||||
| 
 | ||||
| libab_operator* _parser_find_operator(struct parser_state* state, libab_lexer_match* match) { | ||||
|     char op_buffer[8]; | ||||
|     size_t token_size = match->to - match->from; | ||||
| @ -496,7 +500,7 @@ libab_result _parse_expression(struct parser_state* state, libab_tree** store_in | ||||
|             } | ||||
|             new_type = EXPR_OP_INFIX; | ||||
|         } else { | ||||
|             if(last_type == EXPR_ATOM) break; | ||||
|             if(!_parser_can_atom_follow(last_type)) break; | ||||
|             result = _parser_append_atom(state, &out_stack); | ||||
|             new_type = EXPR_ATOM; | ||||
|         } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user