LinkedList LinkedLists в Java? - PullRequest
       7

LinkedList LinkedLists в Java?

1 голос
/ 02 марта 2012

Я пытаюсь реализовать стек в Java, я хочу иметь возможность вернуть строку и столбец открытой скобки своего компаньона, который возвратил ошибку.Например:

public static foo() {
   System.out.println ("foo"
}

это должно привести к ошибке при компиляции, я хочу вернуть ошибку в виде:

"ОШИБКА: строка 2 столбца 23 '(' найденои ожидал ')' в строке 2 столбца 29, но обнаружил вместо него ''.

возможно ли это с помощью LinkLIst of relatedLists?Или другой инструмент будет лучше для этого приложения.Я бы хотел, чтобы методы push (), pop () и peek () сохраняли постоянное поведение.

Спасибо

1 Ответ

2 голосов
/ 02 марта 2012

Используйте встроенный Стек объект.Не нужно заново изобретать колесо и создавать собственную версию стандартного библиотечного класса.

Что касается ошибок печати для непревзойденных фигурных скобок, я бы рекомендовал создать класс

public final class Brace {
    private final char openBrace;
    private final char closeBrace;
    private final int row;
    private final int col;

    public Brace(char openBrace, int row, int col) {
        this.openBrace = openBrace;
        this.row = row;
        this.col = col;

        switch (openBrace) {
            case '(':
                closeBrace = ')';
                break;
            case '{':
                closeBrace = '}';
                break;
            case '[':
                closeBrace = ']';
                break;
            default:
                throw new IllegalArgumentException("Unsupported opening brace");
        }
    }

    public boolean isClosingBrace(char ch) {
        return closeBrace == ch;
    }
}

и сохранитьStack<Brace> в вашей программе.Затем, перемещаясь по файлу, вы можете вставить открывающие скобки в стек и, достигнув каждой закрывающей скобки, убедиться, что это закрывающая скобка для скобки в верхней части стопки.Если это не так, вы уже сохранили строку и столбец для печати в сообщении об ошибке.

...