Exemple #1
0
 private bool checkFirst(ProductionExpression expression, AbstractTerminal term)
 {
     for (int i = 0; i < expression.Count; i++)
     {
         bool hasEmpty = false;
         if (expression[i] is Terminal terminal)
         {
             return(terminal == (Terminal)term);
         }
         else if (expression[i] is NonTerminal nonT)
         {
             var dic = nonT.First;
             foreach (var its in dic)
             {
                 if (its == Terminal.Epsilon)
                 {
                     hasEmpty = true;
                 }
                 if (its == (Terminal)term)
                 {
                     return(true);
                 }
             }
             if (!hasEmpty)
             {
                 break;
             }
         }
         else
         {
             continue;
         }
     }
     return(false);
 }
 public TerminalSession(ITerminalConnection connection, ITerminalSettings terminalSettings, TerminalOptions terminalOptions)
 {
     _terminalSettings = terminalSettings;
     _terminalOptions  = terminalOptions;
     //VT100Žw’è‚Å‚àxtermƒV[ƒPƒ“ƒX‚ð‘—‚Á‚Ä‚­‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŒã‚ð‚½‚½‚È‚¢‚Ì‚Å
     _terminal  = AbstractTerminal.Create(new TerminalInitializeInfo(this, connection.Destination));
     _output    = new TerminalTransmission(_terminal, _terminalSettings, connection);
     _keepAlive = new KeepAlive(this);
 }
Exemple #3
0
        public TerminalSession(ITerminalConnection connection, ITerminalSettings terminalSettings) {
            _terminalSettings = terminalSettings;
            //VT100指定でもxtermシーケンスを送ってくるアプリケーションが後をたたないので
            _terminal = AbstractTerminal.Create(new TerminalInitializeInfo(this, connection.Destination));
            _output = new TerminalTransmission(_terminal, _terminalSettings, connection);

            _terminalSettings.ChangeCaption += delegate(string caption) {
                this.OwnerWindow.DocumentTabFeature.Update(_terminal.IDocument);
            };

        }
Exemple #4
0
        public void Initialize(AbstractTerminal terminal)
        {
            StringResource sr = XZModemPlugin.Instance.Strings;

            _terminal = terminal;
            this.Text = String.Format(sr.GetString("Caption.XZModemDialog.DialogTitle"), _terminal.TerminalHost.ISession.Caption);

            //ウィンドウのセンタリング
            Rectangle r = terminal.TerminalHost.OwnerWindow.AsForm().DesktopBounds;

            this.Location = new Point(r.Left + r.Width / 2 - this.Width / 2, r.Top + r.Height / 2 - this.Height / 2);

            //TODO 前回の起動時の設定を覚えておくとよい
            _protocolBox.SelectedIndex  = 1;
            _directionBox.SelectedIndex = 0;
        }
 public void InternalTerminate()
 {
     Console.WriteLine("TerminalSession: InternalTerminate");
     _terminated = true;
     try {
         _output.Connection.Close();
         _output.Connection.Socket.ForceDisposed();
     }
     catch (Exception ex) { //‚±‚±‚Å‚Ì—áŠO‚Í–³Ž‹
         Console.WriteLine("TerminalSession: InternalTerminate / " + ex.Message);
     }
     if (_terminal != null)
     {
         _terminal.CloseBySession();
         _terminal = null;
     }
 }
Exemple #6
0
 private void makeCmp(List <Production> cmp1, int i, AbstractTerminal ch)
 {
     for (int j = 0; j < Collections[i].Count; j++)
     {
         var str = Collections[i][j].Clone();
         int k;
         for (k = 0; k < str.Count; k++)
         {
             if (ReferenceEquals(str[k], dotTerminal))
             {
                 break;
             }
         }
         if (k != str.Count - 1 && str[k + 1] == ch)
         {
             str.RemoveAt(k);
             str.Insert(k + 1, dotTerminal);
             var pd = new Production(Collections[i][j].Parent.Left);
             pd.Add(str);
             cmp1.Add(pd);
         }
     }
 }
Exemple #7
0
        private void printStep(int step, int pointer, Stack <AbstractTerminal> stack, List <Token> input, ProductionExpression expr = null, AbstractTerminal currentTop = null)
        {
            var arrStack = stack.ToList();

            arrStack.Reverse();
            if (currentTop != null)
            {
                arrStack.Add(currentTop);
            }

            var sb = new StringBuilder();

            foreach (var item in arrStack)
            {
                sb.Append("[");
                sb.Append(item.Name);
                sb.Append("]");
            }
            var stackStr = sb.ToString();

            var arrInput = input.Skip(pointer);

            sb = new StringBuilder();
            foreach (var item in arrInput)
            {
                sb.Append("[");
                sb.Append(item.Text);
                sb.Append("]");
            }
            var inputStr = sb.ToString();

            var str = string.Format("{0}\t{1}\t{2}", step, stackStr, inputStr);

            if (expr != null)
            {
                str += ("\t" + expr.ToString(true));
            }
            Console.WriteLine(str);
        }
 public void StartCommand(AbstractTerminal terminal, string command_text, GLine prompt_line)
 {
 }