2015-09-25 2 views
0

Это общий, домашний вопрос. Речь идет о теме компилятора. Возможно, это может быть реализовано с помощью таких инструментов, как JavaCC. Цель может быть бесполезной, но решающая методология ценна.Как добавить все опустившееся ключевое слово в источник java автоматически?

Прошу, потому что я чувствую, что это трудно реализовать.

Мне нужен какой-то проект, который может решить эту проблему, но предложения также приветствуются.

Спасибо.

ответ

1

Вот как я бы подойти к решению проблемы:

  • Написать лексера и парсер для Java. Парсер должен выводить абстрактное синтаксическое дерево. Конечно, для этого шага очень полезен инструмент построения парсера (компилятор компилятора): JavaCC, JJTree, ANTLR и DMS. К счастью, есть много бесплатных грамматик, которые я мог бы использовать или начать с них.
  • Напишите второй проход, который создает таблицу символов.
  • Напишите третий проход, который проходит дерево, выводящее Java. Этот проход должен будет проконсультироваться с таблицей символов, чтобы определить, какие экземпляры идентификаторов относятся к полям.

Некоторые инструменты (например, DMS) помогут со вторым и третьим проходами.

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

class A { 
    class B { 
     void m() { a = b ; } 
     int b ; 
    } 
    int a ; 
} 
+0

Ну, я нашел antlr4 хорошее решение. Я предпочитаю ANTLR над javaCC, потому что его грамматика разумна, поэтому ее легко понять и написать. хотя я обнаружил, что openjdk javac source использует код javaCC (visitor, accept()). И я еще не пробовал DMS. Вот мой проект для домашних животных, пытающийся преобразовать java в источник c. https://github.com/neoedmund/j2c – neoedmund

Смежные вопросы