Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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("Расход с таким наименованием уже существует", "Ошибка");
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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;
            }
        }