Turn on the new "ast" parser by default for execution.

This change replaces fish's execution model, and obviates much of
parser_t. Instead of parsing fish code into a sequence of
commands-arguments, this reifies syntactic constructs into a grammar,
builds a parse tree, and executes that. This provides a big
simplification and (sometimes) performance boost. fish while loops
become C++ while loops, etc.

There are some known regressions in error reporting, which ought to be
fixed in the soon-to-be-merged parser_cleanup branch. There's also
legitimate changes in edge cases. For example, `command builtin ...` now
executes a command called "builtin" instead of doing something else
weird. The most significant change is that syntactic elements must be
unexpected: for example, single quoting 'command' will now cause it to
not be recognized. This should be fixed soon.

Please open issues for any regressions you find!
This commit is contained in:
ridiculousfish 2014-03-25 00:34:22 -07:00
parent 0d64bbed46
commit a4cafaad2e

View file

@ -3145,7 +3145,7 @@ bool parser_use_ast(void)
env_var_t var = env_get_string(L"fish_new_parser");
if (var.missing_or_empty())
{
return 0;
return 1;
}
else
{