Implement support for multiple math expressions

The MuParser supports the concept of multiple expressions separated by
commas. This implements support for that so that you can do things like
this:

    set results (math '1+1, 4*2, 9^2')
This commit is contained in:
Kurtis Rader 2017-08-23 17:14:54 -07:00
parent 41a7b9457c
commit 24d251ff4b
3 changed files with 97 additions and 88 deletions

View file

@ -979,38 +979,42 @@ v = $(V$(V))
# DO NOT DELETE THIS LINE -- `make depend` depends on it.
obj/autoload.o: config.h src/autoload.h src/common.h src/fallback.h
obj/autoload.o: src/signal.h src/lru.h src/env.h src/exec.h src/wutil.h
obj/autoload.o: src/signal.h src/env.h src/lru.h src/exec.h src/wutil.h
obj/builtin.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin.o: src/signal.h src/builtin_bg.h src/builtin_bind.h
obj/builtin.o: src/builtin_block.h src/builtin_builtin.h src/builtin_cd.h
obj/builtin.o: src/builtin_command.h src/builtin_commandline.h
obj/builtin.o: src/builtin_complete.h src/builtin_contains.h
obj/builtin.o: src/builtin_disown.h src/builtin_echo.h src/builtin_emit.h
obj/builtin.o: src/builtin_exit.h src/builtin_fg.h src/builtin_functions.h
obj/builtin.o: src/builtin_argparse.h src/builtin_history.h src/builtin_jobs.h
obj/builtin.o: src/builtin_math.h src/builtin_printf.h src/builtin_pwd.h src/builtin_random.h
obj/builtin.o: src/builtin_read.h src/builtin_realpath.h src/builtin_return.h
obj/builtin.o: src/builtin_set.h src/builtin_set_color.h src/builtin_source.h
obj/builtin.o: src/signal.h src/builtin_argparse.h src/builtin_bg.h
obj/builtin.o: src/builtin_bind.h src/builtin_block.h src/builtin_builtin.h
obj/builtin.o: src/builtin_cd.h src/builtin_command.h
obj/builtin.o: src/builtin_commandline.h src/builtin_complete.h
obj/builtin.o: src/builtin_contains.h src/builtin_disown.h src/builtin_echo.h
obj/builtin.o: src/builtin_emit.h src/builtin_exit.h src/builtin_fg.h
obj/builtin.o: src/builtin_functions.h src/builtin_history.h
obj/builtin.o: src/builtin_jobs.h src/builtin_math.h src/builtin_printf.h
obj/builtin.o: src/builtin_pwd.h src/builtin_random.h src/builtin_read.h
obj/builtin.o: src/builtin_realpath.h src/builtin_return.h src/builtin_set.h
obj/builtin.o: src/builtin_set_color.h src/builtin_source.h
obj/builtin.o: src/builtin_status.h src/builtin_string.h src/builtin_test.h
obj/builtin.o: src/builtin_ulimit.h src/complete.h src/exec.h src/intern.h
obj/builtin.o: src/io.h src/parse_constants.h src/parse_util.h
obj/builtin.o: src/io.h src/env.h src/parse_constants.h src/parse_util.h
obj/builtin.o: src/tokenizer.h src/parser.h src/event.h src/expand.h
obj/builtin.o: src/parse_tree.h src/proc.h src/reader.h src/highlight.h
obj/builtin.o: src/color.h src/env.h src/wgetopt.h src/wutil.h
obj/builtin.o: src/color.h src/wgetopt.h src/wutil.h
obj/builtin_argparse.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_argparse.o: src/signal.h src/builtin_argparse.h src/env.h
obj/builtin_argparse.o: src/exec.h src/io.h src/wgetopt.h src/wutil.h
obj/builtin_bg.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_bg.o: src/signal.h src/builtin_bg.h src/io.h src/proc.h
obj/builtin_bg.o: src/signal.h src/builtin_bg.h src/io.h src/env.h src/proc.h
obj/builtin_bg.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
obj/builtin_bg.o: src/wutil.h
obj/builtin_bind.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_bind.o: src/signal.h src/builtin_bind.h src/input.h src/io.h
obj/builtin_bind.o: src/wgetopt.h src/wutil.h
obj/builtin_bind.o: src/env.h src/wgetopt.h src/wutil.h
obj/builtin_block.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_block.o: src/signal.h src/builtin_block.h src/event.h src/io.h
obj/builtin_block.o: src/parser.h src/expand.h src/parse_constants.h
obj/builtin_block.o: src/parse_tree.h src/tokenizer.h src/proc.h
obj/builtin_block.o: src/wgetopt.h src/wutil.h
obj/builtin_block.o: src/env.h src/parser.h src/expand.h
obj/builtin_block.o: src/parse_constants.h src/parse_tree.h src/tokenizer.h
obj/builtin_block.o: src/proc.h src/wgetopt.h src/wutil.h
obj/builtin_builtin.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_builtin.o: src/signal.h src/builtin_builtin.h src/io.h
obj/builtin_builtin.o: src/signal.h src/builtin_builtin.h src/io.h src/env.h
obj/builtin_builtin.o: src/wgetopt.h src/wutil.h
obj/builtin_cd.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_cd.o: src/signal.h src/builtin_cd.h src/env.h src/io.h
@ -1018,15 +1022,15 @@ obj/builtin_cd.o: src/parser.h src/event.h src/expand.h src/parse_constants.h
obj/builtin_cd.o: src/parse_tree.h src/tokenizer.h src/proc.h src/path.h
obj/builtin_cd.o: src/wutil.h
obj/builtin_command.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_command.o: src/signal.h src/builtin_command.h src/io.h src/path.h
obj/builtin_command.o: src/env.h src/wgetopt.h src/wutil.h
obj/builtin_command.o: src/signal.h src/builtin_command.h src/io.h src/env.h
obj/builtin_command.o: src/path.h src/wgetopt.h src/wutil.h
obj/builtin_commandline.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_commandline.o: src/signal.h src/input.h src/builtin_bind.h
obj/builtin_commandline.o: src/io.h src/parse_util.h src/parse_constants.h
obj/builtin_commandline.o: src/tokenizer.h src/proc.h src/parse_tree.h
obj/builtin_commandline.o: src/reader.h src/complete.h src/highlight.h
obj/builtin_commandline.o: src/color.h src/env.h src/util.h src/wgetopt.h
obj/builtin_commandline.o: src/wutil.h
obj/builtin_commandline.o: src/io.h src/env.h src/parse_util.h
obj/builtin_commandline.o: src/parse_constants.h src/tokenizer.h src/proc.h
obj/builtin_commandline.o: src/parse_tree.h src/reader.h src/complete.h
obj/builtin_commandline.o: src/highlight.h src/color.h src/util.h
obj/builtin_commandline.o: src/wgetopt.h src/wutil.h
obj/builtin_complete.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_complete.o: src/signal.h src/complete.h src/env.h src/io.h
obj/builtin_complete.o: src/parse_constants.h src/parse_util.h
@ -1035,23 +1039,23 @@ obj/builtin_complete.o: src/parse_tree.h src/proc.h src/reader.h
obj/builtin_complete.o: src/highlight.h src/color.h src/wgetopt.h src/wutil.h
obj/builtin_contains.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_contains.o: src/signal.h src/builtin_contains.h src/io.h
obj/builtin_contains.o: src/wgetopt.h src/wutil.h
obj/builtin_contains.o: src/env.h src/wgetopt.h src/wutil.h
obj/builtin_disown.o: config.h src/signal.h src/builtin.h src/common.h
obj/builtin_disown.o: src/fallback.h src/builtin_disown.h src/io.h
obj/builtin_disown.o: src/fallback.h src/builtin_disown.h src/io.h src/env.h
obj/builtin_disown.o: src/parser.h src/event.h src/expand.h
obj/builtin_disown.o: src/parse_constants.h src/parse_tree.h src/tokenizer.h
obj/builtin_disown.o: src/proc.h src/wutil.h
obj/builtin_echo.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_echo.o: src/signal.h src/builtin_echo.h src/io.h src/wgetopt.h
obj/builtin_echo.o: src/wutil.h
obj/builtin_echo.o: src/signal.h src/builtin_echo.h src/io.h src/env.h
obj/builtin_echo.o: src/wgetopt.h src/wutil.h
obj/builtin_emit.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_emit.o: src/signal.h src/builtin_emit.h src/event.h src/io.h
obj/builtin_emit.o: src/wutil.h
obj/builtin_emit.o: src/env.h src/wutil.h
obj/builtin_exit.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_exit.o: src/signal.h src/builtin_exit.h src/io.h src/proc.h
obj/builtin_exit.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
obj/builtin_exit.o: src/reader.h src/complete.h src/highlight.h src/color.h
obj/builtin_exit.o: src/env.h src/wgetopt.h src/wutil.h
obj/builtin_exit.o: src/signal.h src/builtin_exit.h src/io.h src/env.h
obj/builtin_exit.o: src/proc.h src/parse_tree.h src/parse_constants.h
obj/builtin_exit.o: src/tokenizer.h src/reader.h src/complete.h
obj/builtin_exit.o: src/highlight.h src/color.h src/wgetopt.h src/wutil.h
obj/builtin_fg.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_fg.o: src/signal.h src/builtin_fg.h src/env.h src/io.h src/proc.h
obj/builtin_fg.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
@ -1069,41 +1073,40 @@ obj/builtin_functions.o: src/event.h src/function.h src/io.h
obj/builtin_functions.o: src/parser_keywords.h src/proc.h src/parse_tree.h
obj/builtin_functions.o: src/parse_constants.h src/tokenizer.h src/wgetopt.h
obj/builtin_functions.o: src/wutil.h
obj/builtin_argparse.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_argparse.o: src/signal.h src/builtin_argparse.h src/env.h
obj/builtin_argparse.o: src/expand.h src/parse_constants.h src/io.h
obj/builtin_argparse.o: src/wgetopt.h src/wutil.h
obj/builtin_history.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_history.o: src/signal.h src/builtin_history.h src/history.h
obj/builtin_history.o: src/wutil.h src/io.h src/reader.h src/complete.h
obj/builtin_history.o: src/highlight.h src/color.h src/env.h
obj/builtin_history.o: src/wutil.h src/io.h src/env.h src/reader.h
obj/builtin_history.o: src/complete.h src/highlight.h src/color.h
obj/builtin_history.o: src/parse_constants.h src/wgetopt.h
obj/builtin_jobs.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_jobs.o: src/signal.h src/io.h src/proc.h src/parse_tree.h
obj/builtin_jobs.o: src/parse_constants.h src/tokenizer.h src/wgetopt.h
obj/builtin_jobs.o: src/wutil.h
obj/builtin_math.o: config.h src/builtin.h src/common.h
obj/builtin_math.o: src/builtin_math.h src/io.h src/wutil.h
obj/builtin_jobs.o: src/signal.h src/io.h src/env.h src/proc.h
obj/builtin_jobs.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
obj/builtin_jobs.o: src/wgetopt.h src/wutil.h
obj/builtin_math.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_math.o: src/signal.h src/builtin_math.h src/io.h src/env.h
obj/builtin_math.o: src/wgetopt.h src/wutil.h
obj/builtin_printf.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_printf.o: src/signal.h src/io.h src/wutil.h
obj/builtin_printf.o: src/signal.h src/io.h src/env.h src/wutil.h
obj/builtin_pwd.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_pwd.o: src/signal.h src/builtin_pwd.h src/io.h src/wutil.h
obj/builtin_pwd.o: src/signal.h src/builtin_pwd.h src/io.h src/env.h
obj/builtin_pwd.o: src/wutil.h
obj/builtin_random.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_random.o: src/signal.h src/builtin_random.h src/io.h src/wutil.h
obj/builtin_random.o: src/signal.h src/builtin_random.h src/io.h src/env.h
obj/builtin_random.o: src/wutil.h
obj/builtin_read.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_read.o: src/signal.h src/builtin_read.h src/complete.h src/env.h
obj/builtin_read.o: src/event.h src/expand.h src/parse_constants.h
obj/builtin_read.o: src/highlight.h src/color.h src/history.h src/wutil.h
obj/builtin_read.o: src/io.h src/proc.h src/parse_tree.h src/tokenizer.h
obj/builtin_read.o: src/reader.h src/wcstringutil.h src/wgetopt.h
obj/builtin_read.o: src/event.h src/highlight.h src/color.h src/history.h
obj/builtin_read.o: src/wutil.h src/io.h src/proc.h src/parse_tree.h
obj/builtin_read.o: src/parse_constants.h src/tokenizer.h src/reader.h
obj/builtin_read.o: src/wcstringutil.h src/wgetopt.h
obj/builtin_realpath.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_realpath.o: src/signal.h src/builtin_realpath.h src/io.h
obj/builtin_realpath.o: src/wutil.h
obj/builtin_realpath.o: src/env.h src/wutil.h
obj/builtin_return.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_return.o: src/signal.h src/builtin_return.h src/io.h src/parser.h
obj/builtin_return.o: src/event.h src/expand.h src/parse_constants.h
obj/builtin_return.o: src/parse_tree.h src/tokenizer.h src/proc.h
obj/builtin_return.o: src/wgetopt.h src/wutil.h
obj/builtin_return.o: src/signal.h src/builtin_return.h src/io.h src/env.h
obj/builtin_return.o: src/parser.h src/event.h src/expand.h
obj/builtin_return.o: src/parse_constants.h src/parse_tree.h src/tokenizer.h
obj/builtin_return.o: src/proc.h src/wgetopt.h src/wutil.h
obj/builtin_set.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_set.o: src/signal.h src/env.h src/expand.h src/parse_constants.h
obj/builtin_set.o: src/io.h src/proc.h src/parse_tree.h src/tokenizer.h
@ -1118,26 +1121,27 @@ obj/builtin_source.o: src/expand.h src/parse_constants.h src/parse_tree.h
obj/builtin_source.o: src/tokenizer.h src/proc.h src/reader.h src/complete.h
obj/builtin_source.o: src/highlight.h src/color.h src/wutil.h
obj/builtin_status.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_status.o: src/signal.h src/builtin_status.h src/io.h src/parser.h
obj/builtin_status.o: src/event.h src/expand.h src/parse_constants.h
obj/builtin_status.o: src/parse_tree.h src/tokenizer.h src/proc.h
obj/builtin_status.o: src/wgetopt.h src/wutil.h
obj/builtin_status.o: src/signal.h src/builtin_status.h src/io.h src/env.h
obj/builtin_status.o: src/parser.h src/event.h src/expand.h
obj/builtin_status.o: src/parse_constants.h src/parse_tree.h src/tokenizer.h
obj/builtin_status.o: src/proc.h src/wgetopt.h src/wutil.h
obj/builtin_string.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_string.o: src/signal.h src/io.h src/parse_util.h
obj/builtin_string.o: src/parse_constants.h src/tokenizer.h src/wgetopt.h
obj/builtin_string.o: src/wildcard.h src/complete.h src/expand.h src/wutil.h
obj/builtin_string.o: src/signal.h src/io.h src/env.h src/parse_util.h
obj/builtin_string.o: src/parse_constants.h src/tokenizer.h
obj/builtin_string.o: src/wcstringutil.h src/wgetopt.h src/wildcard.h
obj/builtin_string.o: src/complete.h src/expand.h src/wutil.h
obj/builtin_test.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_test.o: src/signal.h src/io.h src/wutil.h
obj/builtin_test.o: src/signal.h src/io.h src/env.h src/wutil.h
obj/builtin_ulimit.o: config.h src/builtin.h src/common.h src/fallback.h
obj/builtin_ulimit.o: src/signal.h src/io.h src/util.h src/wgetopt.h
obj/builtin_ulimit.o: src/wutil.h
obj/builtin_ulimit.o: src/signal.h src/io.h src/env.h src/util.h
obj/builtin_ulimit.o: src/wgetopt.h src/wutil.h
obj/color.o: config.h src/color.h src/common.h src/fallback.h src/signal.h
obj/common.o: config.h src/common.h src/fallback.h src/signal.h src/env.h
obj/common.o: src/expand.h src/parse_constants.h src/proc.h src/io.h
obj/common.o: src/parse_tree.h src/tokenizer.h src/wildcard.h src/complete.h
obj/common.o: src/wutil.h
obj/complete.o: config.h src/autoload.h src/common.h src/fallback.h
obj/complete.o: src/signal.h src/lru.h src/builtin.h src/complete.h src/env.h
obj/complete.o: src/signal.h src/env.h src/lru.h src/builtin.h src/complete.h
obj/complete.o: src/exec.h src/expand.h src/parse_constants.h src/function.h
obj/complete.o: src/event.h src/iothread.h src/parse_tree.h src/tokenizer.h
obj/complete.o: src/parse_util.h src/parser.h src/proc.h src/io.h src/path.h
@ -1153,7 +1157,7 @@ obj/env_universal_common.o: config.h src/common.h src/fallback.h src/signal.h
obj/env_universal_common.o: src/env.h src/env_universal_common.h src/wutil.h
obj/env_universal_common.o: src/path.h src/utf8.h src/util.h
obj/event.o: config.h src/signal.h src/common.h src/fallback.h src/event.h
obj/event.o: src/input_common.h src/io.h src/parser.h src/expand.h
obj/event.o: src/input_common.h src/io.h src/env.h src/parser.h src/expand.h
obj/event.o: src/parse_constants.h src/parse_tree.h src/tokenizer.h
obj/event.o: src/proc.h src/wutil.h
obj/exec.o: config.h src/signal.h src/builtin.h src/common.h src/fallback.h
@ -1165,7 +1169,7 @@ obj/expand.o: config.h src/common.h src/fallback.h src/signal.h
obj/expand.o: src/complete.h src/env.h src/exec.h src/expand.h
obj/expand.o: src/parse_constants.h src/iothread.h src/parse_util.h
obj/expand.o: src/tokenizer.h src/path.h src/proc.h src/io.h src/parse_tree.h
obj/expand.o: src/util.h src/wildcard.h src/wutil.h
obj/expand.o: src/wildcard.h src/wutil.h
obj/fallback.o: config.h src/signal.h src/common.h src/fallback.h src/util.h
obj/fish.o: config.h src/builtin.h src/common.h src/fallback.h src/signal.h
obj/fish.o: src/env.h src/event.h src/expand.h src/parse_constants.h
@ -1195,7 +1199,7 @@ obj/fish_tests.o: src/parse_util.h src/parser.h src/proc.h src/path.h
obj/fish_tests.o: src/utf8.h src/util.h src/wcstringutil.h src/wildcard.h
obj/fish_version.o: src/fish_version.h
obj/function.o: config.h src/autoload.h src/common.h src/fallback.h
obj/function.o: src/signal.h src/lru.h src/env.h src/event.h src/function.h
obj/function.o: src/signal.h src/env.h src/lru.h src/event.h src/function.h
obj/function.o: src/intern.h src/parser_keywords.h src/reader.h
obj/function.o: src/complete.h src/highlight.h src/color.h
obj/function.o: src/parse_constants.h src/wutil.h
@ -1220,7 +1224,7 @@ obj/input_common.o: src/env.h src/env_universal_common.h src/wutil.h
obj/input_common.o: src/input_common.h src/iothread.h src/util.h
obj/intern.o: config.h src/common.h src/fallback.h src/signal.h src/intern.h
obj/io.o: config.h src/common.h src/fallback.h src/signal.h src/exec.h
obj/io.o: src/io.h src/wutil.h
obj/io.o: src/io.h src/env.h src/wutil.h
obj/iothread.o: config.h src/signal.h src/common.h src/fallback.h
obj/iothread.o: src/iothread.h src/wutil.h
obj/kill.o: config.h src/common.h src/fallback.h src/signal.h
@ -1243,7 +1247,7 @@ obj/parse_productions.o: src/parse_tree.h src/tokenizer.h
obj/parse_tree.o: config.h src/common.h src/fallback.h src/signal.h
obj/parse_tree.o: src/parse_constants.h src/parse_productions.h
obj/parse_tree.o: src/parse_tree.h src/tokenizer.h src/proc.h src/io.h
obj/parse_tree.o: src/wutil.h
obj/parse_tree.o: src/env.h src/wutil.h
obj/parse_util.o: config.h src/builtin.h src/common.h src/fallback.h
obj/parse_util.o: src/signal.h src/expand.h src/parse_constants.h
obj/parse_util.o: src/parse_tree.h src/tokenizer.h src/parse_util.h
@ -1259,15 +1263,15 @@ obj/parser_keywords.o: src/parser_keywords.h
obj/path.o: config.h src/common.h src/fallback.h src/signal.h src/env.h
obj/path.o: src/expand.h src/parse_constants.h src/path.h src/wutil.h
obj/postfork.o: config.h src/signal.h src/common.h src/fallback.h src/exec.h
obj/postfork.o: src/io.h src/iothread.h src/postfork.h src/proc.h
obj/postfork.o: src/io.h src/env.h src/iothread.h src/postfork.h src/proc.h
obj/postfork.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
obj/postfork.o: src/wutil.h
obj/print_help.o: config.h src/common.h src/fallback.h src/signal.h
obj/print_help.o: src/print_help.h
obj/proc.o: config.h src/signal.h src/common.h src/fallback.h src/event.h
obj/proc.o: src/io.h src/output.h src/color.h src/parse_tree.h
obj/proc.o: src/io.h src/env.h src/output.h src/color.h src/parse_tree.h
obj/proc.o: src/parse_constants.h src/tokenizer.h src/parser.h src/expand.h
obj/proc.o: src/proc.h src/reader.h src/complete.h src/highlight.h src/env.h
obj/proc.o: src/proc.h src/reader.h src/complete.h src/highlight.h
obj/proc.o: src/sanity.h src/util.h src/wutil.h
obj/reader.o: config.h src/signal.h src/color.h src/common.h src/fallback.h
obj/reader.o: src/complete.h src/env.h src/event.h src/exec.h src/expand.h
@ -1278,18 +1282,18 @@ obj/reader.o: src/kill.h src/output.h src/pager.h src/reader.h src/screen.h
obj/reader.o: src/parse_tree.h src/tokenizer.h src/parse_util.h src/parser.h
obj/reader.o: src/proc.h src/sanity.h src/util.h
obj/sanity.o: config.h src/common.h src/fallback.h src/signal.h src/history.h
obj/sanity.o: src/wutil.h src/kill.h src/proc.h src/io.h src/parse_tree.h
obj/sanity.o: src/parse_constants.h src/tokenizer.h src/reader.h
obj/sanity.o: src/complete.h src/highlight.h src/color.h src/env.h
obj/sanity.o: src/wutil.h src/kill.h src/proc.h src/io.h src/env.h
obj/sanity.o: src/parse_tree.h src/parse_constants.h src/tokenizer.h
obj/sanity.o: src/reader.h src/complete.h src/highlight.h src/color.h
obj/sanity.o: src/sanity.h
obj/screen.o: config.h src/common.h src/fallback.h src/signal.h src/env.h
obj/screen.o: src/highlight.h src/color.h src/output.h src/pager.h
obj/screen.o: src/complete.h src/reader.h src/parse_constants.h src/screen.h
obj/screen.o: src/util.h
obj/signal.o: config.h src/signal.h src/common.h src/fallback.h src/event.h
obj/signal.o: src/proc.h src/io.h src/parse_tree.h src/parse_constants.h
obj/signal.o: src/tokenizer.h src/reader.h src/complete.h src/highlight.h
obj/signal.o: src/color.h src/env.h src/wutil.h
obj/signal.o: src/proc.h src/io.h src/env.h src/parse_tree.h
obj/signal.o: src/parse_constants.h src/tokenizer.h src/reader.h
obj/signal.o: src/complete.h src/highlight.h src/color.h src/wutil.h
obj/tokenizer.o: config.h src/common.h src/fallback.h src/signal.h
obj/tokenizer.o: src/tokenizer.h src/wutil.h
obj/utf8.o: config.h src/common.h src/fallback.h src/signal.h src/utf8.h

View file

@ -11,6 +11,8 @@ math [-sN | --scale=N] [--] EXPRESSION
Keep in mind that parameter expansion takes place on any expressions before they are evaluated. This can be very useful in order to perform calculations involving shell variables or the output of command substitutions, but it also means that parenthesis and the asterisk glob character have to be escaped.
The `math` command can evaluate multiple expressions separated by commas. The result of each expression is written on a separate line. This means you can evaluate multiple expressions and capture the results in a single invocation just like you can with commands like `string`. See the examples below.
The following options are available:
- `-sN` or `--scale=N` sets the scale of the result. `N` must be an integer and defaults to zero (rounded to the nearest integer).
@ -31,6 +33,8 @@ If the expression is successfully evaluated the return `status` is zero (success
`math -s3 10 / 6` outputs `1.666`.
Capture the result of three expressions: `set results (math '1+1, 5*3, 10^2')` sets `$results` to 2, 15, and 100.
\subsection math-cautions Cautions
You don't need to use `--` before the expression even if it begins with a minus sign which might otherwise be interpreted as an invalid option.

View file

@ -3,12 +3,8 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <wchar.h>
#include <algorithm>
#include <iostream>
#include <random>
#include <string>
#include "builtin.h"
@ -134,7 +130,12 @@ static int evaluate_expression(wchar_t *cmd, parser_t &parser, io_streams_t &str
p.DefineOprt(L"%", moduloOperator, mu::prINFIX);
p.SetExpr(expression);
streams.out.append_format(L"%.*lf\n", opts.scale, p.Eval());
int nNum;
mu::value_type *v = p.Eval(nNum);
for (int i = 0; i < nNum; ++i) {
streams.out.append_format(L"%.*lf\n", opts.scale, v[i]);
}
return STATUS_CMD_OK;
} catch (mu::Parser::exception_type &e) {
streams.err.append_format(_(L"%ls: Invalid expression: %ls\n"), cmd, e.GetMsg().c_str());