Анализатор Java / HTML / State Machine - PullRequest
1 голос
/ 02 июня 2011

Я хочу создать приложение, которое переводит входной Java-код в Java-код в формате HTML,

Например:

public class ReadWithScanner

станет

<span class="public">public</span> <span class="class">class</span> ReadWithScanner

Однако это становится довольно сложно, когда дело доходит до параметров и регулярных выражений. Теперь у меня есть немного времени, и я хочу написать свой собственный анализатор кода.

Как бы я начал это? и есть ли учебники или онлайн-контент, чтобы не только помочь мне написать это, но понять это.

Спасибо

Ответы [ 4 ]

3 голосов
/ 02 июня 2011

Чтобы справиться со сложностью синтаксического анализа, вам понадобится Спецификация языка Java .

Как я помню, Java - это язык LL (k)см. здесь , например).Тем не менее, язык Java, несмотря на все попытки сохранить его «компактным», все еще довольно большой и сложный.Грамматика распространяется по всему документу.Это не проект для слабонервных.Вы можете рассмотреть возможность использования инструмента синтаксического анализа Java (например, Java-front ).

1 голос
/ 02 июня 2011

Что вам нужно сделать, это использовать ANTLR, у него уже есть грамматики Java для анализа Java, тогда вам просто нужно предоставить свои собственные шаблоны для вывода того, что вы хотите из абстрактного синтаксического дерева, сгенерированного с помощью ANTLR.

0 голосов
/ 02 июня 2011

Если вам нужен ресурс для изучения парсеров, я могу порекомендовать Основы разработки компиляторов , который можно бесплатно загрузить.

Он охватывает не только парсеры, но есливы прочитали первые несколько глав, у вас должно быть хорошее базовое понимание как лексеров, так и парсеров.

0 голосов
/ 02 июня 2011

Я думаю, вам нужен лексический анализатор. Ранее я использовал лексический анализатор Flex . Это не слишком сложно в использовании. Если вам нужно разобрать проанализированный текст, вы можете использовать бизон C ++ bisoncpp.sourceforge.net/ (Потребность в C ++ и среда Linux)

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