private static void ClearTables() { if (TableAsmWords.Items.Count == 0)//создаем раз и навсегда { TableAsmWords.Create(); } if (TableRegister.Items.Count == 0) { TableRegister.Create(); } if (TableInstruction.Items.Count == 0) { TableInstruction.Create(); } if (TableOperand.ItemsFirst.Count == 0 && TableOperand.ItemsSecond.Count == 0) { TableOperand.Create(); } if (TableAssume.Item.Count == 0) { new TableAssume(); } if (Errors.Templates.Count == 0) { Errors.CreateTempl(); } Errors.Table.Clear(); Errors.Items.Clear(); Result.Items.Clear(); Result.Table.Clear(); TableSegment.Items.Clear(); TableSegment.Table.Clear(); TableUser.Items.Clear(); TableUser.Table.Clear(); }
public TableAsmWords.Types Type; //короткое описание #endregion Fields #region Constructors public TableLexeme(string name, string desc, TableAsmWords.Types type) { Number = Count + 1; Name = name; Length = name.Length; Description = desc; Type = type; Items.Add(this); Table.Rows.Add(Count, name, name.Length, desc, type); }
public TableAsmWords.Types Type = TableAsmWords.Types.пусто; //тип предложения #endregion Fields #region Constructors public TableSentence(string mnem, int nameNum, int mnemNum, int[,] opers, TableAsmWords.Types type) { Type = type; Mnem = mnem; NameOrLabelNumber = nameNum; MnemNumber = mnemNum; for (int k = 0; k < 6; k++) for (int l = 0; l < 2; l++) Operands[k, l] = opers[k, l]; Item = this; if (Table.Rows.Count <= 0) Table.Rows.Add(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Table.Rows[0][0] = NameOrLabelNumber; Table.Rows[0][1] = MnemNumber; for (int p = 0; p < 6; p++) { Table.Rows[0][p * 2 + 2] = Operands[p, 0]; Table.Rows[0][p * 2 + 3] = Operands[p, 1]; } }
private static string CreateLexemeTable(string Lexeme, int count, int iter) { char[] Chars = new char[225]; for (int i = 0; i < iter; i++) { if (i == 1) { count = 1; } Lexeme.CopyTo(0, Chars, 0, count); Lexeme = Lexeme.Remove(0, count); string CurrentLexeme = new string(Chars); CurrentLexeme = CurrentLexeme.Trim(new Char[] { '\0' }); Array.Clear(Chars, 0, Chars.Length); if (CurrentLexeme == "") { continue;//проверка на две односимвольные подряд } TableAsmWords Word = TableAsmWords.GetByName(CurrentLexeme.ToUpper()); if (Word != null)//мы знаем эту лексему { new TableLexeme(Word.Name, Word.Description, Word.Type); } else { string ConstDescript = ConstOrUser(CurrentLexeme); TableAsmWords.Types ConstType = TableAsmWords.Types.пусто; switch (ConstDescript) { case "Помилка": ConstType = TableAsmWords.Types.помилка; Errors.Add(1); //@error недопустимые символы в лексеме break; case "Текстова константа": CurrentLexeme = CurrentLexeme.Remove(0, 1); CurrentLexeme = CurrentLexeme.Remove(CurrentLexeme.Length - 1, 1); ConstType = TableAsmWords.Types.текст; break; case "Ідентифікатор користувача або невизначений": CurrentLexeme = CurrentLexeme.ToUpper(); ConstType = TableAsmWords.Types.користувач; if (CurrentLexeme.Length > 8) { Errors.Add(3); //@error Ідентифікатор довший за 8 символів } break; default: CurrentLexeme = CurrentLexeme.ToUpper(); ConstType = TableAsmWords.Types.число; break; } new TableLexeme(CurrentLexeme, ConstDescript, ConstType); } } return(Lexeme); }