private static void CgNameExp(FuncInfo fi, NameExp node, int a) { var r = fi.SlotOfLocVar(node.Name); if (r >= 0) { fi.EmitMove(a, r); } else { var idx = fi.IndexOfUpval(node.Name); if (idx >= 0) { fi.EmitGetUpval(a, idx); } else { var taExp = new TableAccessExp { PrefixExp = new NameExp { Line = 0, Name = "_ENV" }, KeyExp = new StringExp { Line = 0, Str = node.Name } }; CgTableAccessExp(fi, taExp, a); } } }
private void SaveNameExp_Click(object sender, RoutedEventArgs e) { NameExp NewExp = new NameExp(); NewExp.NameExpenses = NameExpnss.Text; NewExp.Categories = Category.SelectedItem as Categories; var ResultSearch = NameExpTwo.Find(item => item.NameExpenses == NewExp.NameExpenses); if (ResultSearch == null) { if (NameExpnss.Text.Length == 0) { MessageBox.Show("Поле Название расхода должно быть заполнено", "Ошибка"); } else { if (Category.SelectedIndex == -1) { MessageBox.Show("Необходимо выбрать категорию расхода", "Ошибка"); } else { Core.DB.NameExp.Add(NewExp); Core.DB.SaveChanges(); this.Close(); } } } else { MessageBox.Show("Расход с таким наименованием уже существует", "Ошибка"); } }
private static Exp ParsePrefixExp(Lexer.Lexer lexer) { Exp exp; if (lexer.LookAhead() == ETokenType.Identifier) { lexer.NextIdentifier(out var line, out var name); exp = new NameExp { Line = line, Name = name }; } else { exp = ParseParensExp(lexer); } return(FinishPrefixExp(lexer, exp)); }
private static void ParseFuncName(Lexer.Lexer lexer, out Exp exp, out bool hasColon) { hasColon = false; lexer.NextIdentifier(out var line, out var name); exp = new NameExp { Line = line, Name = name }; while (lexer.LookAhead() == ETokenType.SepDot) { lexer.NextToken(out _, out _, out _); lexer.NextIdentifier(out line, out name); var idx = new StringExp { Line = line, Str = name }; exp = new TableAccessExp { LastLine = line, KeyExp = idx, PrefixExp = exp, }; } if (lexer.LookAhead() == ETokenType.SepColon) { lexer.NextToken(out _, out _, out _); lexer.NextIdentifier(out line, out name); var idx = new StringExp { Line = line, Str = name }; exp = new TableAccessExp { LastLine = line, PrefixExp = exp, KeyExp = idx, }; hasColon = true; } }