Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tree_t), | intent(inout) | :: | self |
pure recursive subroutine tree_graph__suffix_op(self) implicit none class(tree_t), intent(inout) :: self type(tree_node_t) :: node, left, right call self%primary() left = self%get_top() select case (self%tape%current_token) case (tk_star) node = make_tree_node(op_closure) call self%register_connector(node, left, terminal) call self%tape%get_token() case (tk_plus) node = make_tree_node(op_closure) call self%register_connector(node, left, terminal) right = self%get_top() node = make_tree_node(op_concat) call self%register_connector(node, left, right) call self%tape%get_token() case (tk_question) node = make_tree_node(op_empty) call self%register_connector(node, left, terminal) right = self%get_top() node = make_tree_node(op_union) call self%register_connector(node, left, right) call self%tape%get_token() case (tk_lcurlybrace) call self%range() call self%tape%get_token() end select end subroutine tree_graph__suffix_op