public DirectionContext direction()
    {
        DirectionContext _localctx = new DirectionContext(Context, State);

        EnterRule(_localctx, 4, RULE_direction);
        int _la;

        try {
            EnterOuterAlt(_localctx, 1);
            {
                State = 24;
                _la   = TokenStream.LA(1);
                if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DOWN) | (1L << LEFT) | (1L << RIGHT) | (1L << UP) | (1L << MOVE))) != 0)))
                {
                    ErrorHandler.RecoverInline(this);
                }
                else
                {
                    ErrorHandler.ReportMatch(this);
                    Consume();
                }
            }
        }
        catch (RecognitionException re) {
            _localctx.exception = re;
            ErrorHandler.ReportError(this, re);
            ErrorHandler.Recover(this, re);
        }
        finally {
            ExitRule();
        }
        return(_localctx);
    }
        static void Main(string[] args)
        {
            var context = new DirectionContext();

            var direction = context.GetDirection(Cardinals.North);

            Console.WriteLine("Current direction " + direction.head);

            direction = context.GetDirection(direction.head, TurnType.Left);

            Console.WriteLine("After Turn " + direction.head);
        }
 /// <summary>
 /// Проверка соединения с базой данных
 /// </summary>
 /// <returns>Истина, если соединение успешно</returns>
 public static bool CheckMysqlParallaxDatabase()
 {
     try
     {
         using (DirectionContext context = new DirectionContext())
         {
             long result = context.Checksums.FromSql("CHECKSUM TABLE Directions").AsNoTracking().FirstOrDefault().Hash;
             return(true);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         return(false);
     }
 }