Exemplo n.º 1
0
 public override void Execute
 (
     PftContext context
 )
 {
     context.Output.RemoveEmptyLine();
 }
Exemplo n.º 2
0
 public override void Execute
 (
     PftContext context
 )
 {
     context.FieldOutputMode = OutputMode;
     context.UpperMode       = UpperMode;
 }
Exemplo n.º 3
0
 public override void Execute
 (
     PftContext context
 )
 {
     context = context.Push();
     base.Execute(context);
 }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: FormatBenchmark <rootPath> <format>");

                return;
            }

            string rootPath = args[0];
            string format   = args[1];

            try
            {
                IrbisEncoding.RelaxUtf8();

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();

                using (LocalProvider provider = new LocalProvider(rootPath))
                {
                    provider.Database = "IBIS";
                    int maxMfn = provider.GetMaxMfn();
                    Console.WriteLine("Max MFN={0}", maxMfn);

                    PftContext context = new PftContext(null);
                    context.SetProvider(provider);
                    PftFormatter formatter = new PftFormatter(context);
                    formatter.ParseProgram(format);

                    for (int mfn = 1; mfn <= maxMfn; mfn++)
                    {
                        MarcRecord record = provider.ReadRecord(mfn);
                        if (ReferenceEquals(record, null))
                        {
                            continue;
                        }

                        string text = formatter.FormatRecord(record);
                        Console.WriteLine(text);
                    }
                }

                stopwatch.Stop();

                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine
                (
                    "Elapsed: {0} sec",
                    stopwatch.Elapsed.ToSecondString()
                );
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
 public PftDebugEventArgs
 (
     PftContext context,
     PftAst node
 )
 {
     Context = context;
     Node    = node;
 }
Exemplo n.º 6
0
        public void Call
        (
            PftContext context,
            List <PftAst> argValues
        )
        {
            OnBeforeExecution(context);

            OnAfterExecution(context);
        }
Exemplo n.º 7
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            base.Execute(context);

            OnAfterExecution(context);
        }
Exemplo n.º 8
0
 public override void Execute
 (
     PftContext context
 )
 {
     context.Write
     (
         this,
         Text
     );
 }
Exemplo n.º 9
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            context.WriteLine(this);

            OnAfterExecution(context);
        }
Exemplo n.º 10
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            string text = context.Evaluate(Children);

            context.Output.Error.WriteLine(text);

            OnAfterExecution(context);
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                return;
            }

            string rootPath = args[0];
            string format   = args[1];

            // Log.ApplyDefaultsForConsoleApplication();

            try
            {
                using (LocalProvider provider = new LocalProvider(rootPath))
                {
                    FileSpecification specification = new FileSpecification
                                                      (
                        IrbisPath.MasterFile,
                        provider.Database,
                        format
                                                      );
                    string source = provider.ReadFile(specification);
                    if (string.IsNullOrEmpty(source))
                    {
                        Console.WriteLine("No file: {0}", format);
                    }
                    else
                    {
                        PftContext context = new PftContext(null);
                        context.SetProvider(provider);
                        PftFormatter formatter = new PftFormatter(context);
                        formatter.ParseProgram(source);

                        PftProgram       program = formatter.Program;
                        AbstractOutput   console = new ConsoleOutput();
                        PftPrettyPrinter printer = new PftPrettyPrinter();
                        console.WriteLine(string.Empty);
                        console.WriteLine(new string('=', 60));
                        console.WriteLine(string.Empty);
                        console.WriteLine(string.Empty);
                        program.PrettyPrint(printer);
                        console.WriteLine(printer.ToString());
                    }
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
Exemplo n.º 12
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            if (!context.Output.HaveEmptyLine())
            {
                context.WriteLine(this);
            }

            OnAfterExecution(context);
        }
Exemplo n.º 13
0
        // ReSharper restore UnusedParameter.Local

        #endregion

        #region Private members

        #endregion

        #region Public methods

        #endregion

        #region PftAst members

        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            context.Write
            (
                this,
                Environment.NewLine
            );

            OnAfterExecution(context);
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: ParseBenchmark <format>");

                return;
            }

            string formatFile  = args[0];
            string programText = File.ReadAllText(formatFile, IrbisEncoding.Ansi);

            try
            {
                IrbisEncoding.RelaxUtf8();

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();

                using (NullProvider provider = new NullProvider())
                {
                    provider.Database = "IBIS";

                    PftContext context = new PftContext(null);
                    context.SetProvider(provider);

                    for (int i = 0; i < 10000; i++)
                    {
                        PftFormatter formatter = new PftFormatter(context);
                        formatter.ParseProgram(programText);
                    }
                }

                stopwatch.Stop();

                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine
                (
                    "Elapsed: {0} sec",
                    stopwatch.Elapsed.ToSecondString()
                );
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
Exemplo n.º 15
0
 private void _Printer
 (
     PftContext context,
     PftNode node,
     PftNode[] arguments
 )
 {
     for (int i = 0; i < arguments.Length; i++)
     {
         string text = context.GetStringArgument(arguments, i);
         if (!string.IsNullOrEmpty(text))
         {
             context.Write(node, text);
         }
     }
 }
Exemplo n.º 16
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            if (Shift > 0)
            {
                context.Write
                (
                    this,
                    new string(' ', Shift)
                );
            }

            OnAfterExecution(context);
        }
Exemplo n.º 17
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            string     argument = context.Evaluate(Children);
            NumberText text     = new NumberText(argument);
            string     result   = text.Increment().ToString();

            context.Write
            (
                this,
                result
            );

            OnAfterExecution(context);
        }
Exemplo n.º 18
0
        public string[] Execute
        (
            PftContext context
        )
        {
            string text = context.Evaluate(Program);

            if (string.IsNullOrEmpty(text))
            {
                return(new string[0]);
            }
            string[] lines  = text.SplitLines();
            string[] result =
                (
                    from line in lines
                    where !string.IsNullOrEmpty(line)
                    select line.Trim()
                )
                .ToArray();
            return(result);
        }
Exemplo n.º 19
0
        public bool Execute
        (
            PftContext context,
            IrbisRecord record
        )
        {
            bool result = false;

            string[] lines = Execute(context);
            foreach (string line in lines)
            {
                // TODO реализовать разные методы построения поля из результата
                RecordField field = RecordField.Parse
                                    (
                    Tag,
                    line
                                    );
                record.Fields.Add(field);
                result = true;
            }
            return(result);
        }
Exemplo n.º 20
0
        public override void Execute
        (
            PftContext context
        )
        {
            OnBeforeExecution(context);

            int desired = NewPosition * 8;
            int current = context.Output.GetCaretPosition();
            int delta   = desired - current;

            if (delta > 0)
            {
                context.Write
                (
                    this,
                    new string(' ', delta)
                );
            }

            OnAfterExecution(context);
        }
Exemplo n.º 21
0
        private void CompileAndRun()
        {
            DatabaseInfo database = _databaseBox.SelectedItem
                                    as DatabaseInfo;

            if (!ReferenceEquals(database, null))
            {
                _provider.Database = database.Name
                                     .ThrowIfNull("database.Name");
            }

            PftContext context = new PftContext(null);

            context.SetProvider(_provider);
            PftProgram program = (PftProgram)_program.Clone();

            program.Optimize();

            if (!Directory.Exists("Out"))
            {
                Directory.CreateDirectory("Out");
            }

            PftCompiler compiler = new PftCompiler
            {
                Debug      = true,
                KeepSource = true,
                OutputPath = "Out"
            };

            compiler.SetProvider(_provider);
            string         className    = compiler.CompileProgram(program);
            AbstractOutput output       = new TextOutput();
            string         assemblyPath = compiler.CompileToDll
                                          (
                output,
                className
                                          );
            string result = output.ToString();

            if (!ReferenceEquals(assemblyPath, null))
            {
                Assembly assembly
                    = Assembly.LoadFile(assemblyPath);
                Func <PftContext, PftPacket> creator
                    = CompilerUtility.GetEntryPoint(assembly);
                PftPacket packet = creator(context);
                result = packet.Execute(_record);
            }

            _resutlBox.Text = result;
            try
            {
                _rtfBox.Rtf = result;
            }
            catch
            {
                _rtfBox.Text = result;
            }

            if (ReferenceEquals(_htmlBox.Document, null))
            {
                _htmlBox.Navigate("about:blank");
                while (_htmlBox.IsBusy)
                {
                    Application.DoEvents();
                }
            }
            if (!ReferenceEquals(_htmlBox.Document, null))
            {
                _htmlBox.Document.Write(result);
            }
            try
            {
                _htmlBox.DocumentText =
                    "<html>"
                    + result
                    + "</html>";
            }
            // ReSharper disable once EmptyGeneralCatchClause
            catch
            {
                // Nothing to do
            }

            _recordGrid.SetRecord(_record);
        }
Exemplo n.º 22
0
 /// <summary>
 /// Вычисление истинности условия.
 /// Реализации см. в потомках.
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public abstract bool Evaluate
 (
     PftContext context
 );
Exemplo n.º 23
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                return;
            }

            string rootPath = args[0];
            string fileName = args[1];
            string format   = args[2];

            Log.ApplyDefaultsForConsoleApplication();

            try
            {
                using (LocalProvider provider = new LocalProvider(rootPath))
                {
                    FileSpecification specification = new FileSpecification
                                                      (
                        IrbisPath.MasterFile,
                        provider.Database,
                        format
                                                      );
                    string source = provider.ReadFile(specification);
                    if (string.IsNullOrEmpty(source))
                    {
                        Console.WriteLine("No file: {0}", format);
                    }
                    else
                    {
                        PftContext context = new PftContext(null);
                        context.SetProvider(provider);
                        PftFormatter formatter = new PftFormatter(context);
                        formatter.ParseProgram(source);

                        PftSerializer.Save(formatter.Program, fileName);

                        PftProgram program
                            = (PftProgram)PftSerializer.Read(fileName);

                        PftSerializationUtility.VerifyDeserializedProgram
                        (
                            formatter.Program,
                            program
                        );

                        PftNodeInfo nodeInfo = program.GetNodeInfo();

                        AbstractOutput console = new ConsoleOutput();
                        PftNodeInfo.Dump(console, nodeInfo, 0);

                        byte[] bytes
                            = PftSerializer.ToMemory(formatter.Program);

                        for (int i = 0; i < 10000; i++)
                        {
                            PftProgram restoredProgram
                                = (PftProgram)PftSerializer.FromMemory(bytes);
                            console.WriteLine("{0}", i + 1);
                            //console.WriteLine(restoredProgram.ToString());
                        }

                        PftPrettyPrinter printer = new PftPrettyPrinter();
                        program.PrettyPrint(printer);
                        console.WriteLine(printer.ToString());
                    }
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
Exemplo n.º 24
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                return;
            }

            string rootPath   = args[0];
            string formatName = args[1];

            try
            {
                using (LocalProvider provider = new LocalProvider(rootPath))
                {
                    FileSpecification specification = new FileSpecification
                                                      (
                        IrbisPath.MasterFile,
                        provider.Database,
                        formatName
                                                      );
                    string source = provider.ReadFile(specification);
                    if (string.IsNullOrEmpty(source))
                    {
                        Console.WriteLine("No file: {0}", formatName);
                    }
                    else
                    {
                        PftContext context = new PftContext(null);
                        context.SetProvider(provider);
                        PftFormatter formatter = new PftFormatter(context);
                        formatter.ParseProgram(source);

                        PftProgram program
                            = (PftProgram)formatter.Program.Clone();
                        program.Optimize();

                        //Console.WriteLine(program.DumpToText());
                        //Console.WriteLine();

                        if (!Directory.Exists("Out"))
                        {
                            Directory.CreateDirectory("Out");
                        }

                        PftCompiler compiler = new PftCompiler
                        {
                            Debug      = true,
                            KeepSource = true,
                            //OutputPath = "Out"
                            OutputPath = "."
                        };
                        compiler.SetProvider(provider);
                        string className = compiler.CompileProgram
                                           (
                            program
                                           );

                        //string sourceCode = compiler.GetSourceCode();
                        //Console.WriteLine(sourceCode);

                        AbstractOutput output       = AbstractOutput.Console;
                        string         assemblyPath = compiler.CompileToDll
                                                      (
                            output,
                            className
                                                      );
                        if (!ReferenceEquals(assemblyPath, null))
                        {
                            Console.WriteLine
                            (
                                "Compiled to {0}",
                                assemblyPath
                            );

                            MarcRecord record = provider.ReadRecord(1);

                            //if (!ReferenceEquals(record, null))
                            //{
                            //    Assembly assembly
                            //        = Assembly.LoadFile(assemblyPath);
                            //    Func<PftContext, PftPacket> creator
                            //        = CompilerUtility.GetEntryPoint(assembly);
                            //    PftPacket packet = creator(context);
                            //    string formatted = packet.Execute(record);
                            //    Console.WriteLine(formatted);

                            //    Stopwatch stopwatch = new Stopwatch();
                            //    stopwatch.Start();
                            //    for (int i = 0; i < 100000; i++)
                            //    {
                            //        if (i % 1000 == 0)
                            //        {
                            //            Console.WriteLine(i);
                            //        }
                            //        packet.Execute(record);
                            //    }
                            //    stopwatch.Stop();
                            //    Console.WriteLine(stopwatch.Elapsed);
                            //}

                            if (!ReferenceEquals(record, null))
                            {
                                using (RemoteFormatter remote
                                           = new RemoteFormatter(assemblyPath))
                                {
                                    PftPacket packet = remote.GetFormatter(context);
                                    Console.WriteLine(RemotingServices.IsTransparentProxy(packet));
                                    string formatted = packet.Execute(record);
                                    Console.WriteLine(formatted);

                                    Stopwatch stopwatch = new Stopwatch();
                                    stopwatch.Start();
                                    for (int i = 0; i < 100; i++)
                                    {
                                        if (i % 10 == 0)
                                        {
                                            Console.WriteLine(i);
                                        }
                                        packet.Execute(record);
                                    }
                                    stopwatch.Stop();
                                    Console.WriteLine(stopwatch.Elapsed);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }