aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parse_util.h
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-02-28 00:44:20 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-02-28 00:44:20 -0800
commit3633c51ad8aee79add7727457c998c42a1638f72 (patch)
tree79f762b29062e13f95648ffb0a7833949da64af1 /src/parse_util.h
parente3970f9cbbd00289c551f947db0f4644654bd8d9 (diff)
Re-use the parse tree generated during error detection for execution
Prior to this fix, read_ni would use parse_util_detect_errors to lint the script to run, and then parser_t::eval() to execute it. Both functions would parse the script into a parse tree. This allows us to re-use the parse tree, improving perfomance.
Diffstat (limited to 'src/parse_util.h')
-rw-r--r--src/parse_util.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/parse_util.h b/src/parse_util.h
index 9bafd8e0..26f47268 100644
--- a/src/parse_util.h
+++ b/src/parse_util.h
@@ -171,8 +171,9 @@ wcstring parse_util_escape_string_with_quote(const wcstring &cmd, wchar_t quote)
/** Given a string, parse it as fish code and then return the indents. The return value has the same size as the string */
std::vector<int> parse_util_compute_indents(const wcstring &src);
-/** Given a string, detect parse errors in it. If allow_incomplete is set, then if the string is incomplete (e.g. an unclosed quote), an error is not returned and the PARSER_TEST_INCOMPLETE bit is set in the return value. If allow_incomplete is not set, then incomplete strings result in an error. */
-parser_test_error_bits_t parse_util_detect_errors(const wcstring &buff_src, parse_error_list_t *out_errors = NULL, bool allow_incomplete = true);
+/** Given a string, detect parse errors in it. If allow_incomplete is set, then if the string is incomplete (e.g. an unclosed quote), an error is not returned and the PARSER_TEST_INCOMPLETE bit is set in the return value. If allow_incomplete is not set, then incomplete strings result in an error. If out_tree is not NULL, the resulting tree is returned by reference. */
+class parse_node_tree_t;
+parser_test_error_bits_t parse_util_detect_errors(const wcstring &buff_src, parse_error_list_t *out_errors = NULL, bool allow_incomplete = true, parse_node_tree_t *out_tree = NULL);
/**
Test if this argument contains any errors. Detected errors include syntax errors in command substitutions, improperly escaped characters and improper use of the variable expansion operator.