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; } }