Ejemplo n.º 1
0
        public new static Jezeli Parsuj(ITokenizer tokenizer)
        {
            Jezeli jezeli = new Jezeli();

            jezeli.WyrazenieLewe = Wyrazenie.Parsuj(tokenizer);
            HCPSToken token = tokenizer.Next();

            if (__tokenyOperatorow.Contains(token))
            {
                jezeli.WarunekLogiczny = new WarunekLogiczny()
                {
                    Typ = WarunekLogiczny.TokenNaWarunek(token)
                };
                jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                jezeli.Check();
                return(jezeli);
            }
            else
            {
                if (token == HCPSToken.ParenthesisClose)
                {
                    tokenizer.Back();
                    jezeli.WarunekLogiczny = new WarunekLogiczny()
                    {
                        Typ = WarunekLogicznyTyp.Prawdziwy
                    };
                    jezeli.Check();
                    return(jezeli);
                }
            }
            throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.IncorrectIfStatementDefinition));
        }
Ejemplo n.º 2
0
 public override void PrzypiszReferencje(ISlownikSkryptu slownik)
 {
     if (Zmienna is ZmiennaNieistniejaca)
     {
         Zmienna = (Zmienna)slownik.PobierzWartosc(Zmienna.Nazwa);
         Zmienna.SprawdzCzyMoznaUstawiacWartoscWSkrypcie();
     }
     if (Wyrazenie is ZmiennaNieistniejaca)
     {
         Wartosc w = slownik.PobierzWartosc(((ZmiennaNieistniejaca)Wyrazenie).Nazwa);
         if (w is Zmienna)
         {
             Wyrazenie = (Zmienna)w;
         }
         else
         {
             if (w is Stala)
             {
                 Wyrazenie = (Stala)w;
             }
             else
             {
                 Wyrazenie = w;
             }
         }
     }
     else
     {
         Wyrazenie.PrzypiszReferencje(slownik);
     }
 }
Ejemplo n.º 3
0
 public void SetValue(object value)
 {
     Nazwa            = "";
     Typ              = HomeSimCockpitSDK.VariableType.Unknown;
     PrawdziwaZmienna = null;
     _value           = value;
 }
Ejemplo n.º 4
0
 public override void Check()
 {
     base.Check();
     if (Wyrazenie is Operacja)
     {
         Wyrazenie = Operacja.Uporzadkuj((Operacja)Wyrazenie);
     }
 }
Ejemplo n.º 5
0
        public Wyrazenie PobierzPierwszeNieWyrazenie(bool lewy)
        {
            Wyrazenie w = lewy ? OperandLewy : OperandPrawy;

            if (w is Operacja)
            {
                return(((Operacja)w).PobierzPierwszeNieWyrazenie(lewy));
            }
            return(w);
        }
Ejemplo n.º 6
0
 public override void PrzypiszReferencje(ISlownikSkryptu slownik)
 {
     if (argument is ZmiennaNieistniejaca)
     {
         argument = slownik.PobierzWartosc(((ZmiennaNieistniejaca)argument).Nazwa);
     }
     else
     {
         argument.PrzypiszReferencje(slownik);
     }
 }
Ejemplo n.º 7
0
        public override void PrzypiszReferencje(ISlownikSkryptu slownik)
        {
            if (Wyrazenie == null)
            {
                return;
            }

            if (Wyrazenie is ZmiennaNieistniejaca)
            {
                Wyrazenie = (Zmienna)slownik.PobierzWartosc(((ZmiennaNieistniejaca)Wyrazenie).Nazwa);
            }
            else
            {
                Wyrazenie.PrzypiszReferencje(slownik);
            }
        }
Ejemplo n.º 8
0
        public new static Argument Parsuj(ITokenizer tokenizer)
        {
            Argument argument = new Argument();

            argument.argument = Wyrazenie.Parsuj(tokenizer);
            if (argument.argument == null)
            {
                return(null);
            }
            HCPSToken token = tokenizer.Next();

            if (token != HCPSToken.CommaSeparator && token != HCPSToken.ParenthesisClose)
            {
                tokenizer.Back();
            }
            argument.Check();
            return(argument);
        }
Ejemplo n.º 9
0
        public new static Akcje Parsuj(ITokenizer tokenizer)
        {
            List <Wyrazenie> wyrazenia = new List <Wyrazenie>();

            do
            {
                Wyrazenie wyrazenie = Wyrazenie.Parsuj(tokenizer);
                if (wyrazenie != null)
                {
                    wyrazenia.Add(wyrazenie);
                }
            }while (tokenizer.LastToken != HCPSToken.BlockEnd);
            Akcje akcje = new Akcje();

            akcje.akcje = wyrazenia.ToArray();
            akcje.Check();
            return(akcje);

            throw new Exception(string.Format(UI.Language.Instance.GetString(UI.UIStrings.CannotReadExpression), tokenizer.GetPosition(tokenizer.Position)));
        }
Ejemplo n.º 10
0
 public override void PrzypiszReferencje(ISlownikSkryptu slownik)
 {
     if (WyrazenieLewe is ZmiennaNieistniejaca)
     {
         WyrazenieLewe = slownik.PobierzWartosc(((ZmiennaNieistniejaca)WyrazenieLewe).Nazwa);
     }
     else
     {
         WyrazenieLewe.PrzypiszReferencje(slownik);
     }
     if (WarunekLogiczny.Typ != WarunekLogicznyTyp.Prawdziwy)
     {
         if (WyrazeniePrawe is ZmiennaNieistniejaca)
         {
             WyrazeniePrawe = slownik.PobierzWartosc(((ZmiennaNieistniejaca)WyrazeniePrawe).Nazwa);
         }
         else
         {
             WyrazeniePrawe.PrzypiszReferencje(slownik);
         }
     }
 }
Ejemplo n.º 11
0
        public Wyrazenie GetFirstValueOrLastExpressionAndChangeWithExpression(bool left, Wyrazenie wyrazenie)
        {
            Wyrazenie w = left ? OperandLewy : OperandPrawy;

            if (w is Wartosc)
            {
                if (left)
                {
                    OperandLewy = wyrazenie;
                }
                else
                {
                    OperandPrawy = wyrazenie;
                }
                return(w);
            }
            if (w is Operacja)
            {
                return(((Operacja)w).GetFirstValueOrLastExpressionAndChangeWithExpression(left, wyrazenie));
            }
            throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.ExpressionNotFound));
        }
Ejemplo n.º 12
0
        public void PrzypiszOstatniNull(Wyrazenie wyrazenie, bool lewy)
        {
            Wyrazenie w = lewy ? OperandLewy : OperandPrawy;

            if (w == null)
            {
                if (lewy)
                {
                    OperandLewy = wyrazenie;
                }
                else
                {
                    OperandPrawy = wyrazenie;
                }
            }
            else
            {
                if (w is Operacja)
                {
                    ((Operacja)w).PrzypiszOstatniNull(wyrazenie, lewy);
                }
            }
        }
Ejemplo n.º 13
0
 public override void PrzypiszReferencje(ISlownikSkryptu slownik)
 {
     if (OperandLewy == null || OperandPrawy == null)
     {
         throw new CheckingScriptException();
     }
     if (OperandLewy is ZmiennaNieistniejaca)
     {
         OperandLewy = /*(Zmienna)*/ slownik.PobierzWartosc(((ZmiennaNieistniejaca)OperandLewy).Nazwa);
     }
     else
     {
         OperandLewy.PrzypiszReferencje(slownik);
     }
     if (OperandPrawy is ZmiennaNieistniejaca)
     {
         OperandPrawy = /*(Zmienna)*/ slownik.PobierzWartosc(((ZmiennaNieistniejaca)OperandPrawy).Nazwa);
     }
     else
     {
         OperandPrawy.PrzypiszReferencje(slownik);
     }
 }
Ejemplo n.º 14
0
 public ArgumentBindingInfo(object value, Wyrazenie prawdziwaZmienna)
 {
     Value            = value;
     PrawdziwaZmienna = prawdziwaZmienna;
 }
Ejemplo n.º 15
0
        public new static Wyrazenie Parsuj(ITokenizer tokenizer)
        {
            long      position = tokenizer.Position;
            HCPSToken token    = tokenizer.Next();

            while (token == HCPSToken.Comment)
            {
                position = tokenizer.Position;
                token    = tokenizer.Next();
            }
            switch (token)
            {
            case HCPSToken.Word:
            {
                switch (tokenizer.Value)
                {
                case "if":
                    return(Warunek.Parsuj(tokenizer));

                case "null":
                {
                    Stala stala = new Stala()
                    {
                        _Wartosc = null
                    };
                    token = tokenizer.Next();
                    switch (token)
                    {
                    case HCPSToken.Bigger:
                    case HCPSToken.BiggerOrEqual:
                    case HCPSToken.Equal:
                    case HCPSToken.NotEqual:
                    case HCPSToken.Smaller:
                    case HCPSToken.SmallerOrEqual:
                    {
                        switch (token)
                        {
                        case HCPSToken.Bigger:
                        case HCPSToken.BiggerOrEqual:
                        case HCPSToken.Equal:
                        case HCPSToken.NotEqual:
                        case HCPSToken.Smaller:
                        case HCPSToken.SmallerOrEqual:
                            Jezeli jezeli = new Jezeli();
                            jezeli.WyrazenieLewe   = stala;
                            jezeli.WarunekLogiczny = new WarunekLogiczny()
                            {
                                Typ = WarunekLogiczny.TokenNaWarunek(token)
                            };
                            jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                            return(jezeli);

                        default:
                            tokenizer.Back();
                            break;
                        }

                        tokenizer.Back();
                        return(stala);
                    }

                    case HCPSToken.InstructionEnd:
                    case HCPSToken.ParenthesisClose:
                    case HCPSToken.CommaSeparator:
                    {
                        tokenizer.Back();
                        break;
                    }
                    }
                    return(stala);
                }

                case "return":
                {
                    Return r = new Return();
                    r.Wyrazenie = Wyrazenie.Parsuj(tokenizer);
                    return(r);
                }

                default:
                {
                    string wartosc = tokenizer.Value;
                    token = tokenizer.Next();
                    if (token == HCPSToken.Colon)
                    {
                        token = tokenizer.Next();
                        if (token != HCPSToken.Word)
                        {
                            throw new ParsingScriptException(string.Format(UI.Language.Instance.GetString(UI.UIStrings.InvalidTokenAfterModuleName), token, wartosc));
                        }
                        tokenizer.Position = position;
                        FunkcjaModulu funkcjaModulu = FunkcjaModulu.Parsuj(tokenizer);
                        token = tokenizer.Next();
                        switch (token)
                        {
                        case HCPSToken.Assignment:
                        {
                            throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.OperationNotAllowed));
                        }

                        case HCPSToken.InstructionEnd:
                        case HCPSToken.ParenthesisClose:
                        case HCPSToken.CommaSeparator:
                        {
                            tokenizer.Back();
                            return(funkcjaModulu);
                        }

                        case HCPSToken.Addition:
                        case HCPSToken.Division:
                        case HCPSToken.Multiplication:
                        case HCPSToken.Subtraction:
                        case HCPSToken.And:
                        case HCPSToken.Or:
                        case HCPSToken.Modulo:
                        {
                            Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                            if (w is Operacja)
                            {
                                Wyrazenie w1 = ((Operacja)w).OperandLewy;
                                ((Operacja)w).OperandLewy = new Operacja()
                                {
                                    OperandLewy  = funkcjaModulu,
                                    OperandPrawy = w1,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(w);
                            }
                            else
                            {
                                Operacja operacja = new Operacja()
                                {
                                    OperandLewy  = funkcjaModulu,
                                    OperandPrawy = w,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(operacja);
                            }
                        }

                        case HCPSToken.Bigger:
                        case HCPSToken.BiggerOrEqual:
                        case HCPSToken.Equal:
                        case HCPSToken.NotEqual:
                        case HCPSToken.Smaller:
                        case HCPSToken.SmallerOrEqual:
                        {
                            switch (token)
                            {
                            case HCPSToken.Bigger:
                            case HCPSToken.BiggerOrEqual:
                            case HCPSToken.Equal:
                            case HCPSToken.NotEqual:
                            case HCPSToken.Smaller:
                            case HCPSToken.SmallerOrEqual:
                                Jezeli jezeli = new Jezeli();
                                jezeli.WyrazenieLewe   = funkcjaModulu;
                                jezeli.WarunekLogiczny = new WarunekLogiczny()
                                {
                                    Typ = WarunekLogiczny.TokenNaWarunek(token)
                                };
                                jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                                return(jezeli);

                            default:
                                tokenizer.Back();
                                break;
                            }

                            tokenizer.Back();
                            return(funkcjaModulu);
                        }
                        }

                        return(funkcjaModulu);
                    }
                    else
                    if (token == HCPSToken.ParenthesisOpen)
                    {
                        // jakaś funkcja
                        tokenizer.Position = position;
                        Funkcja funkcja = Funkcja.Parsuj(tokenizer);

                        token = tokenizer.Next();
                        switch (token)
                        {
                        case HCPSToken.Assignment:
                        {
                            throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.OperationNotAllowed));
                        }

                        case HCPSToken.InstructionEnd:
                        case HCPSToken.ParenthesisClose:
                        case HCPSToken.CommaSeparator:
                        {
                            tokenizer.Back();
                            return(funkcja);
                        }

                        case HCPSToken.Addition:
                        case HCPSToken.Division:
                        case HCPSToken.Multiplication:
                        case HCPSToken.Subtraction:
                        case HCPSToken.And:
                        case HCPSToken.Or:
                        case HCPSToken.Modulo:
                        {
                            Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                            if (w is Operacja)
                            {
                                Wyrazenie w1 = ((Operacja)w).OperandLewy;
                                ((Operacja)w).OperandLewy = new Operacja()
                                {
                                    OperandLewy  = funkcja,
                                    OperandPrawy = w1,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(w);
                            }
                            else
                            {
                                Operacja operacja = new Operacja()
                                {
                                    OperandLewy  = funkcja,
                                    OperandPrawy = w,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(operacja);
                            }
                        }

                        case HCPSToken.Bigger:
                        case HCPSToken.BiggerOrEqual:
                        case HCPSToken.Equal:
                        case HCPSToken.NotEqual:
                        case HCPSToken.Smaller:
                        case HCPSToken.SmallerOrEqual:
                        {
                            switch (token)
                            {
                            case HCPSToken.Bigger:
                            case HCPSToken.BiggerOrEqual:
                            case HCPSToken.Equal:
                            case HCPSToken.NotEqual:
                            case HCPSToken.Smaller:
                            case HCPSToken.SmallerOrEqual:
                                Jezeli jezeli = new Jezeli();
                                jezeli.WyrazenieLewe   = funkcja;
                                jezeli.WarunekLogiczny = new WarunekLogiczny()
                                {
                                    Typ = WarunekLogiczny.TokenNaWarunek(token)
                                };
                                jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                                return(jezeli);

                            default:
                                tokenizer.Back();
                                break;
                            }

                            tokenizer.Back();
                            return(funkcja);
                        }
                        }

                        return(funkcja);
                    }
                    else
                    {
                        tokenizer.Back();
                    }

                    Stala stala = null;

                    bool vb = false;

                    if (Stala.IsBool(wartosc, out vb))
                    {
                        stala = new Stala()
                        {
                            _Wartosc = vb,
                            Typ      = HomeSimCockpitSDK.VariableType.Bool
                        };
                    }

                    if (stala != null)
                    {
                        token = tokenizer.Next();
                        switch (token)
                        {
                        case HCPSToken.Assignment:
                        {
                            throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.OperationNotAllowed));
                        }

                        case HCPSToken.InstructionEnd:
                        case HCPSToken.ParenthesisClose:
                        case HCPSToken.CommaSeparator:
                        {
                            tokenizer.Back();
                            return(stala);
                        }

                        case HCPSToken.Addition:
                        case HCPSToken.Division:
                        case HCPSToken.Multiplication:
                        case HCPSToken.Subtraction:
                        case HCPSToken.And:
                        case HCPSToken.Or:
                        case HCPSToken.Modulo:
                        {
                            Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                            if (w is Operacja)
                            {
                                Wyrazenie w1 = ((Operacja)w).OperandLewy;
                                ((Operacja)w).OperandLewy = new Operacja()
                                {
                                    OperandLewy  = stala,
                                    OperandPrawy = w1,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(w);
                            }
                            else
                            {
                                Operacja operacja = new Operacja()
                                {
                                    OperandLewy  = stala,
                                    OperandPrawy = w,
                                    Operator     = Operacja.TokenNaOperator(token)
                                };
                                return(operacja);
                            }
                        }

                        case HCPSToken.Bigger:
                        case HCPSToken.BiggerOrEqual:
                        case HCPSToken.Equal:
                        case HCPSToken.NotEqual:
                        case HCPSToken.Smaller:
                        case HCPSToken.SmallerOrEqual:
                        {
                            switch (token)
                            {
                            case HCPSToken.Bigger:
                            case HCPSToken.BiggerOrEqual:
                            case HCPSToken.Equal:
                            case HCPSToken.NotEqual:
                            case HCPSToken.Smaller:
                            case HCPSToken.SmallerOrEqual:
                                Jezeli jezeli = new Jezeli();
                                jezeli.WyrazenieLewe   = stala;
                                jezeli.WarunekLogiczny = new WarunekLogiczny()
                                {
                                    Typ = WarunekLogiczny.TokenNaWarunek(token)
                                };
                                jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                                return(jezeli);

                            default:
                                tokenizer.Back();
                                break;
                            }

                            tokenizer.Back();
                            return(stala);
                        }
                        }
                    }

                    break;
                }
                }
                break;
            }

            case HCPSToken.Number:
            {
                Stala  stala = null;
                double vd    = 0;
                int    vi    = 0;

                // sprawdzenie czy to liczba double
                if (Stala.IsDouble(tokenizer.Value, out vd))
                {
                    stala = new Stala()
                    {
                        _Wartosc = vd,
                        Typ      = HomeSimCockpitSDK.VariableType.Double
                    };
                }
                // sprawdzenie czy to liczba int
                else if (Stala.IsInt(tokenizer.Value, out vi))
                {
                    stala = new Stala()
                    {
                        _Wartosc = vi,
                        Typ      = HomeSimCockpitSDK.VariableType.Int
                    };
                }

                if (stala != null)
                {
                    token = tokenizer.Next();
                    switch (token)
                    {
                    case HCPSToken.Assignment:
                    {
                        throw new ParsingScriptException(UI.Language.Instance.GetString(UI.UIStrings.OperationNotAllowed));
                    }

                    case HCPSToken.InstructionEnd:
                    case HCPSToken.ParenthesisClose:
                    case HCPSToken.CommaSeparator:
                    {
                        tokenizer.Back();
                        return(stala);
                    }

                    case HCPSToken.Addition:
                    case HCPSToken.Division:
                    case HCPSToken.Multiplication:
                    case HCPSToken.Subtraction:
                    case HCPSToken.And:
                    case HCPSToken.Or:
                    case HCPSToken.Modulo:
                    {
                        Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                        if (w is Operacja)
                        {
                            Wyrazenie w1 = ((Operacja)w).OperandLewy;
                            OperatorDwuargumentowyTyp oper = Operacja.TokenNaOperator(token);
                            Operacja oo = new Operacja()
                            {
                                OperandLewy  = stala,
                                OperandPrawy = w,
                                Operator     = oper
                            };
                            return(oo);
                        }
                        else
                        {
                            Operacja operacja = new Operacja()
                            {
                                OperandLewy  = stala,
                                OperandPrawy = w,
                                Operator     = Operacja.TokenNaOperator(token)
                            };
                            return(operacja);
                        }
                    }

                    case HCPSToken.Bigger:
                    case HCPSToken.BiggerOrEqual:
                    case HCPSToken.Equal:
                    case HCPSToken.NotEqual:
                    case HCPSToken.Smaller:
                    case HCPSToken.SmallerOrEqual:
                    {
                        switch (token)
                        {
                        case HCPSToken.Bigger:
                        case HCPSToken.BiggerOrEqual:
                        case HCPSToken.Equal:
                        case HCPSToken.NotEqual:
                        case HCPSToken.Smaller:
                        case HCPSToken.SmallerOrEqual:
                            Jezeli jezeli = new Jezeli();
                            jezeli.WyrazenieLewe   = stala;
                            jezeli.WarunekLogiczny = new WarunekLogiczny()
                            {
                                Typ = WarunekLogiczny.TokenNaWarunek(token)
                            };
                            jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                            return(jezeli);

                        default:
                            tokenizer.Back();
                            break;
                        }

                        tokenizer.Back();
                        return(stala);
                    }
                    }
                }

                break;
            }

            case HCPSToken.String:
                Stala ss = new Stala()
                {
                    _Wartosc = tokenizer.Value,
                    Typ      = HomeSimCockpitSDK.VariableType.String
                };

                token = tokenizer.Next();
                switch (token)
                {
                case HCPSToken.InstructionEnd:
                case HCPSToken.ParenthesisClose:
                case HCPSToken.CommaSeparator:
                {
                    tokenizer.Back();
                    return(ss);
                }

                case HCPSToken.Addition:
                {
                    Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                    if (w is Operacja)
                    {
                        Wyrazenie w1 = ((Operacja)w).OperandLewy;
                        ((Operacja)w).OperandLewy = new Operacja()
                        {
                            OperandLewy  = ss,
                            OperandPrawy = w1,
                            Operator     = Operacja.TokenNaOperator(token)
                        };
                        return(w);
                    }
                    else
                    {
                        Operacja operacja = new Operacja()
                        {
                            OperandLewy  = ss,
                            OperandPrawy = w,
                            Operator     = Operacja.TokenNaOperator(token)
                        };
                        return(operacja);
                    }
                }

                case HCPSToken.Bigger:
                case HCPSToken.BiggerOrEqual:
                case HCPSToken.Equal:
                case HCPSToken.NotEqual:
                case HCPSToken.Smaller:
                case HCPSToken.SmallerOrEqual:
                {
                    switch (token)
                    {
                    case HCPSToken.Bigger:
                    case HCPSToken.BiggerOrEqual:
                    case HCPSToken.Equal:
                    case HCPSToken.NotEqual:
                    case HCPSToken.Smaller:
                    case HCPSToken.SmallerOrEqual:
                        Jezeli jezeli = new Jezeli();
                        jezeli.WyrazenieLewe   = ss;
                        jezeli.WarunekLogiczny = new WarunekLogiczny()
                        {
                            Typ = WarunekLogiczny.TokenNaWarunek(token)
                        };
                        jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                        return(jezeli);

                    default:
                        tokenizer.Back();
                        break;
                    }

                    tokenizer.Back();
                    return(ss);
                }
                }

                break;

            case HCPSToken.Variable:
            {
                string zmienna = tokenizer.Value;
                token = tokenizer.Next();
                switch (token)
                {
                case HCPSToken.Assignment:
                {
                    Przypisanie przypisanie = new Przypisanie();
                    przypisanie.Zmienna = new ZmiennaNieistniejaca()
                    {
                        Nazwa = zmienna
                    };
                    przypisanie.Wyrazenie = Wyrazenie.Parsuj(tokenizer);

                    token = tokenizer.Next();
                    switch (token)
                    {
                    case HCPSToken.Bigger:
                    case HCPSToken.BiggerOrEqual:
                    case HCPSToken.Equal:
                    case HCPSToken.NotEqual:
                    case HCPSToken.Smaller:
                    case HCPSToken.SmallerOrEqual:
                        Jezeli jezeli = new Jezeli();
                        jezeli.WyrazenieLewe   = przypisanie.Wyrazenie;
                        jezeli.WarunekLogiczny = new WarunekLogiczny()
                        {
                            Typ = WarunekLogiczny.TokenNaWarunek(token)
                        };
                        jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                        przypisanie.Wyrazenie = jezeli;
                        break;

                    default:
                        tokenizer.Back();
                        break;
                    }

                    przypisanie.Check();
                    return(przypisanie);
                }

                case HCPSToken.InstructionEnd:
                case HCPSToken.ParenthesisClose:
                case HCPSToken.CommaSeparator:
                {
                    tokenizer.Back();
                    return(new ZmiennaNieistniejaca()
                            {
                                Nazwa = zmienna
                            });
                }

                case HCPSToken.Addition:
                case HCPSToken.Division:
                case HCPSToken.Multiplication:
                case HCPSToken.Subtraction:
                case HCPSToken.And:
                case HCPSToken.Or:
                case HCPSToken.Modulo:
                {
                    Wyrazenie w = Wyrazenie.Parsuj(tokenizer);
                    if (w is Operacja)
                    {
                        Wyrazenie w1 = ((Operacja)w).OperandLewy;
                        OperatorDwuargumentowyTyp oper = Operacja.TokenNaOperator(token);
                        Operacja oo = new Operacja()
                        {
                            OperandLewy = new ZmiennaNieistniejaca()
                            {
                                Nazwa = zmienna
                            },
                            OperandPrawy = w,
                            Operator     = oper
                        };
                        return(oo);
                    }
                    else
                    {
                        Operacja operacja = new Operacja()
                        {
                            OperandLewy = new ZmiennaNieistniejaca()
                            {
                                Nazwa = zmienna
                            },
                            OperandPrawy = w,
                            Operator     = Operacja.TokenNaOperator(token)
                        };
                        return(operacja);
                    }
                }

                case HCPSToken.Bigger:
                case HCPSToken.BiggerOrEqual:
                case HCPSToken.Equal:
                case HCPSToken.NotEqual:
                case HCPSToken.Smaller:
                case HCPSToken.SmallerOrEqual:
                {
                    ZmiennaNieistniejaca zn = new ZmiennaNieistniejaca()
                    {
                        Nazwa = zmienna
                    };
                    switch (token)
                    {
                    case HCPSToken.Bigger:
                    case HCPSToken.BiggerOrEqual:
                    case HCPSToken.Equal:
                    case HCPSToken.NotEqual:
                    case HCPSToken.Smaller:
                    case HCPSToken.SmallerOrEqual:
                        Jezeli jezeli = new Jezeli();
                        jezeli.WyrazenieLewe   = zn;
                        jezeli.WarunekLogiczny = new WarunekLogiczny()
                        {
                            Typ = WarunekLogiczny.TokenNaWarunek(token)
                        };
                        jezeli.WyrazeniePrawe = Wyrazenie.Parsuj(tokenizer);
                        return(jezeli);

                    default:
                        tokenizer.Back();
                        break;
                    }

                    tokenizer.Back();
                    return(zn);
                }
                }

                break;
            }

            case HCPSToken.BlockEnd:
                return(null);

            case HCPSToken.ParenthesisClose:
                return(null);

            case HCPSToken.InstructionEnd:
                return(null);

            case HCPSToken.CommaSeparator:
                return(null);

            case HCPSToken.Comment:
                return(Parsuj(tokenizer));
            }
            throw new ParsingScriptException(string.Format(UI.Language.Instance.GetString(UI.UIStrings.CannotReadExpression2), token, tokenizer.Value, tokenizer.GetPosition(tokenizer.Position)));
        }