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); }
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); }; }
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; } }
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); } } }
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) { }