- (* Parse the command line anon args. Each parameter has the
- * form "name=<expr>" to assign a value to a variable, or
- * "<expr>" to indicate a target to build.
- *)
- let targets = ref [] in
- let env = ref env in
- List.iter (
- fun arg ->
- if Str.string_match var_regexp arg 0 then (
- (* assignment *)
- let name = Str.matched_group 1 arg in
- let expr = Parse.parse_cli_expr (Str.matched_group 2 arg) in
- env := Ast.StringMap.add name expr !env
- )
- else (
- (* target *)
- let expr = Parse.parse_cli_expr arg in
- targets := expr :: !targets
- )
- ) !args;
- let targets = List.rev !targets and env = !env in
+ (* Parse the target expressions. *)
+ let targets = List.map Parse.parse_cli_expr Cmdline.targets in