Ejemplo n.º 1
0
 public override void EnterStatement(SwiftParser.StatementContext context)
 {
     if (context.expression() != null)
     {
         OutLine(PrintExpression(context.expression()) + ";");
     }
 }
        public override void EnterStatement(SwiftParser.StatementContext context)
        {
            /*
             * Проверить, не находится ли текущий оператор в той же строке, что и предыдущий
             *
             * Если предыдущий оператор был отделен точкой с запятой, то поле `PreviousStatementEnd` приняло значение
             * `-1`, и текущий оператор может находиться в этой же строке без ошибки
             */
            if (context.Start.Line == PreviousStatementEnd)
            {
                Valid = false;

                _CollisionLocations.Add(new Tuple <int, int>(context.Start.Line, context.Start.Column));
            }

            if (context.classDeclStmt() != null || context.loopStmt() != null)
            {
                /*
                 * Первый член класса и первый оператор цикла может находиться на той же строке, напр.:
                 *
                 * repeat { print(x) ...
                 */
                PreviousStatementEnd = -1;
            }
        }
 public override void ExitStatement(SwiftParser.StatementContext context)
 {
     if (context.children[context.ChildCount - 1].GetText() != ";")
     {
         /*
          * Если данный оператор не отделен точкой с запятой, запомним строку его окончания, чтобы затем
          * проверить, не начинается ли на этой строке другой, следующий оператор
          */
         PreviousStatementEnd = context.Stop.Line;
     }
     else
     {
         /*
          * Если оператор отделен точкой с запятой, то наличие следующего оператора в той же строке не приведет
          * к ошибке
          */
         PreviousStatementEnd = -1;
     }
 }