Beispiel #1
0
        private static string CreateArg(CliArgAttribute arg, string argStyle, string valueStyle, string delimiterStyle, bool useOptionalDelimiters = true)
        {
            var name = arg.Names.First();

            if (!string.IsNullOrEmpty(arg.ValueName))
            {
                return(string.Format(
                           "{10}{6}{11}{0}{1}{2} {10}{8}{11}{3}{4}{5}{10}{9}{11}{10}{7}{11}",
                           argStyle,
                           name,
                           GetReset(argStyle),
                           valueStyle,
                           arg.ValueName,
                           GetReset(valueStyle),
                           arg.IsRequired || !useOptionalDelimiters ? "" : Cli.Escape(_optionalDelimterLeft),
                           arg.IsRequired || !useOptionalDelimiters ? "" : Cli.Escape(_optionalDelimterRight),
                           Cli.Escape(_valueDelimterLeft),
                           Cli.Escape(_valueDelimterRight),
                           delimiterStyle,
                           GetReset(delimiterStyle)));
            }
            else
            {
                return(string.Format(
                           "{5}{3}{6}{0}{1}{2}{5}{4}{6}",
                           argStyle,
                           name,
                           GetReset(argStyle),
                           arg.IsRequired || !useOptionalDelimiters ? "" : Cli.Escape(_optionalDelimterLeft),
                           arg.IsRequired || !useOptionalDelimiters ? "" : Cli.Escape(_optionalDelimterRight),
                           delimiterStyle,
                           GetReset(delimiterStyle)));
            }
        }
Beispiel #2
0
        public string EscapeTest(string value)
        {
            string result = Cli.Escape(value);

            return(result);
            // TODO: add assertions to method CliTest.EscapeTest(String)
        }
Beispiel #3
0
        public override void Main(Z80DasmArgs args)
        {
            WriteInfoMessage("Disassembling ~Cyan~{0}~R~", args.InputBinaryFile);


            var symbolFile = Path.ChangeExtension(
                Path.GetFullPath(args.InputBinaryFile.FullName),
                "symbols");

            Dictionary <ushort, string> symbols;

            if (File.Exists(symbolFile))
            {
                WriteSuccessMessage("Found symbol file ~Cyan~{0}~R~", symbolFile);
                symbols = SymbolFileReader.Read(symbolFile);
            }
            else
            {
                WriteInfoMessage("Could not find symbol file for binary");
                symbols = new Dictionary <ushort, string>();
            }

            string dasm;

            using (var reader = new BinaryReader(args.InputBinaryFile.OpenRead()))
            {
                var disassembler = new Z80Disassembler(reader, symbols);
                var instructions = disassembler.Disassemble();
                dasm = new Z80AssemblyFormatter(symbols).Format(instructions);
            }

            if (!string.IsNullOrEmpty(args.OutputDisassemblyFile))
            {
                WriteInfoMessage(
                    "Writing disassembled instructions to ~Cyan~{0}~R~",
                    args.OutputDisassemblyFile);

                File.WriteAllText(args.OutputDisassemblyFile, dasm);
            }
            else
            {
                Cli.WriteLine(Cli.Escape(dasm));
            }

            WriteSuccessMessage("Done");
        }
Beispiel #4
0
        private List <AphidExpression> ParseCode(string filename)
        {
            var code = File.ReadAllText(filename);

            try
            {
                return(AphidParser.Parse(code, isTextDocument: _isText));
            }
            catch (AphidParserException exception)
            {
                var msg = ParserErrorMessage.Create(code, exception, true);
                Cli.WriteCriticalErrorMessage("~Yellow~Error parsing code~R~\r\n\r\n{0}", Cli.Escape(msg));
                Environment.Exit(100);
                throw;
            }
        }