<> <> <> <<>> DIRECTORY Commander USING [CommandProc, Register], IO USING [EndOfStream, IDProc, GetTokenRope, RIS, STREAM], RobotDefs USING [Robot], RobotEvaluator USING [SymbolTable], RobotIO USING [WriteRobot], RobotTParser USING [AssembleRobot], Rope USING [ROPE]; RobotAssembleCommand: CEDAR PROGRAM IMPORTS Commander, IO, RobotIO, RobotTParser ~ { Assemble: Commander.CommandProc ~ { s: IO.STREAM _ IO.RIS[cmd.commandLine]; root: Rope.ROPE _ IO.GetTokenRope[s, IO.IDProc ! IO.EndOfStream => GOTO NoName].token; robot: RobotDefs.Robot; sym: RobotEvaluator.SymbolTable; valid: BOOL; [robot, valid, sym] _ RobotTParser.AssembleRobot[root, cmd.err]; IF valid THEN { result_sym; RobotIO.WriteRobot[root, robot]; } ELSE result_$Failure; EXITS NoName => RETURN[result: $Failure, msg: "File name needed\n"] }; <> Commander.Register[key: "Robot", proc: Assemble, doc: "Assemble Robot for RobotWar"]; }.