Разработка транслятора в среде Java и С+
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
ие3>={(|, |;)
={, |;}
={int | float | char | идентификатор}
={* | идентификатор}
Таблицы разбора
Таблица разбора С#
№Ожидаемый терминалПереходПринятьВ стекИз стекаОшибка1.~2----2.~7----3.namespace4+--+4.{5+--+5.~12-+--6.}0+-++7.using9----8.~11----9.using10+--+10.~7----11.~3----12.class16----13.идентификатор18----14.}21----15.~22----16.~24-+--17.~12----18.идентификатор19+--+19.~37-+--20.~12----21.~0--+-22.~51-+--23~12----24~25----25class26+--+26идентификатор27+--+27~32-+--28{29+--+29~12-+--30)31+--+31;0+-++32:34----33~36----34:35+--+35идентификатор0+-++36~0--+-37.40----38(44----39;46---+40.41+--+41идентификатор42+--+42~47-+--43;0+-++44~47-+--45;0+-++46;0+-++47(49----48~80----49(50+--+50)0+-++51~52----52~72-+--53идентификатор55+--+5455~56----56(58----57~65----58(59+--+59)60+--+60{61+--+61~12-+--62return63+--+63литерал64+--+64;81+--+65~66----66,68----67;71---+68,69+--+69идентификатор70+--+70~66----71;0+-++72int76----73float77----74char78----75идентификатор79---+76int0+-++77float0+-++78char0+-++79идентификатор0+-++80~0--+-81}0+-++
Таблица разбора java
40----38(44----39;46---+40->41+--+4142+--+42~47-+--43;0+-++44~47-+--45;0+-++46;0+-++47(49----48~80----49(50+--+50)0+-++51~52----52~72-+--53~82--+-5455+--+55~56----56(58----57~65----58(59+--+59)60+--+60{61+--+61~12-+--62return63+--+6364+--+64;81+--+65~66----66,68----67;71---+68,69+--+6970+--+70~66----71;0+-++72int76----73float77----74char78----7579---+76int0+-++77float0+-++78char0+-++790+-++80~0--+-81}0+-++82*84----83~85----84*0+-++85~0--+-">№Ожидаемый терминалПереходПринятьВ стекИз стекаОшибка1.~2----2.~7----3.~12----7.using9----8.~11----9.using10+--+10.~7----11.~3----12.class16----13.идентификатор18----14.}21----15.~22----16.~24-+--17.~12----18.идентификатор19+--+19.~37-+--20.~12----21.~0--+-22.~51-+--23~12----24~25----25class26+--+26идентификатор27+--+27~32-+--28{29+--+29~12-+--30)31+--+31;0+-++32:34----33~36----34:35+--+35идентификатор0+-++36~0--+-37->40----38(44----39;46---+40->41+--+41идентификатор42+--+42~47-+--43;0+-++44~47-+--45;0+-++46;0+-++47(49----48~80----49(50+--+50)0+-++51~52----52~72-+--53~82--+-54идентификатор55+--+55~56----56(58----57~65----58(59+--+59)60+--+60{61+--+61~12-+--62return63+--+63литерал64+--+64;81+--+65~66----66,68----67;71---+68,69+--+69идентификатор70+--+70~66----71;0+-++72int76----73float77----74char78----75идентификатор79---+76int0+-++77float0+-++78char0+-++79идентификатор0+-++80~0--+-81}0+-++82*84----83~85----84*0+-++85~0--+-
Разработка программы
Классовая модель
Диаграмма прецедентов
Диаграмма классов
Анализ результатов работы программы и выводы
Оба анализируемых языка объектно-ориентированные, с синтаксисом, унаследованным от C++, но значительно переработанным. Следовательно, они имеют много общего, например, при анализе проектов, мы используем один общий класс разделителей и знаков операций.
Классы зарезервированных слов для каждого языка отличаются. В данном проекте исследуется лишь малая часть возможностей и особенностей вышеуказанных языков. В связи с этим, классы зарезервированных слов для этих языков будут включать лишь те ключевые слова и операторы, которые нам необходимы.
Проект позволяет проанализировать взаимодействие между классами и вывести результат в файл *.xml. Достаточно много времени было потрачено именно на вывод результата в *.xml, так как ранее с подобными задачами не сталкивались.
При реализации были выполнены критерии ООП и модульности, расставлены комментарии (по атрибутам, методам, по параметрам методов, классам).
Проект может существовать как автономное приложение, однако, на мой взгляд, его можно дополнить и доработать функционально, расширить классы зарезервированных слов, внести изменения в LL(1) грамматику и т.д.
На данном этапе разработки программа работает корректно, четко выполняет поставленные требования.
Список используемой литературы
- Р. Хантер Проектирование и конструирование компиляторов
- Джеффри Рихтер CLR via C# // М., Издательство Русская редакция, 2007
- Конспект лекций по ТОПТ