Как проверить достижимость операторов в Java - PullRequest
2 голосов
/ 15 марта 2012

Я пишу компилятор для большого подмножества Java.В настоящее время я пытаюсь проверить достижимость заявлений.Я нашел раздел JLS, в котором об этом говорится, но кажется, что есть много правил, которые нужно «жестко закодировать».Это какие-то алгоритмы, которые проверяют это чистым способом?Я искал вокруг, но не повезло!

Ссылка: http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#236365

1 Ответ

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

Академический ответ: эта проблема неразрешима, т. Е. Нет алгоритма, который мог бы строго ответить на вопрос.

Практический ответ: Проверьте учебник по статическому анализу. Это очень сложная проблема, и вы не получите здесь полного ответа (я думаю). Текущие компиляторы пробуют довольно ограниченное решение проблемы, другие некомпиляторные инструменты пробуют другие вещи. В конце концов, для реализации вы должны решить, какие возможные случаи вы хотите охватить, и насколько медленным должен быть ваш компилятор. Потому что, очевидно, чем точнее будет ваш анализ, тем больше времени он займет.

При этом, глядя на учебник, вы узнаете, какие вещи можно сделать, и насколько они "дорогие".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...