Разработка транслятора в среде 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) грамматику и т.д.

На данном этапе разработки программа работает корректно, четко выполняет поставленные требования.

 

 

Список используемой литературы

 

  1. Р. Хантер Проектирование и конструирование компиляторов
  2. Джеффри Рихтер CLR via C# // М., Издательство Русская редакция, 2007
  3. Конспект лекций по ТОПТ