Skip to content

Commit

Permalink
defice replaced
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatov committed Feb 10, 2012
1 parent 229a42c commit 332c7cf
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions src/chapter2/xml.tex
Expand Up @@ -36,7 +36,7 @@ \subsubsection{Примеры языков со встроенной подде
\end{lstlisting}\end{code}

\begin{code}
Во внутреннем представлении компилятора каждый XML--литерал является экземпляром класса \path{scala.xml.Elem}\footnote{http://www.scala-lang.org/api/current/scala/xml/Elem.html}:
Во внутреннем представлении компилятора каждый XML-литерал является экземпляром класса \path{scala.xml.Elem}\footnote{http://www.scala-lang.org/api/current/scala/xml/Elem.html}:

\begin{lstlisting}[caption={Внутреннее представление XML литералов из примера~\ref{scala-xml-example}.}, label={scala-xml-example-internal}]
val document =
Expand All @@ -60,7 +60,7 @@ \subsubsection{Примеры языков со встроенной подде

В языке Scala для работы с XML предлагается достаточно мощный интерфейс. Именно он и используется в многочисленных каркасах для создания веб-приложений (web application frameworks), написанных на Scala.

С точки зрения подобного класса программ (библиотек для создания веб--приложений), нативная поддержка XML
С точки зрения подобного класса программ (библиотек для создания веб-приложений), нативная поддержка XML
литералов в языке является несомненным плюсом, нежели минусом, позволяя прозрачно работать с пользовательскими шаблонами.

Также стоит отметить критику пакета \path{scala.xml} о недостаточной производительности, несогласованности некоторых методов и т.п.
Expand Down Expand Up @@ -131,26 +131,26 @@ \subsubsection{Алгоритм работы загрузчика типов}
)
\end{lstlisting}\end{code}

После подключения XML схемы в пакет компиляции, вся информация о загруженных типах становится доступна в среде разработки. То есть доступна навигация, авто--дополнение, поиск вхождений и тому подобные функции, которые присущи современным средам разработки.
После подключения XML схемы в пакет компиляции, вся информация о загруженных типах становится доступна в среде разработки. То есть доступна навигация, авто-дополнение, поиск вхождений и тому подобные функции, которые присущи современным средам разработки.

Фазы лексического и синтаксического анализа, построения внутреннего представления программы и первичного анализа типов и разрешения имен полностью унаследованы от базового компилятора языка Kotlin. Но перед генерацией байт-кода присутствуют 2 новых фазы, которых нет в стандартном компиляторе, а именно:

\begin{description}
\item[Трансформация внутреннего представления программы.] При успешном завершении проверок из предыдущего пункта начинается фаза трансформации внутреннего представления программы. Подробное описание алгоритма работы этого шага компиляции можно прочитать в разделе \ref{xml-tranformation-phase}.
\item[Повторный анализ типов и разрешения имен вновь полученных структур.]
Аналогично пункту, который предшествовал изменению модели, выполняются статические проверки корректности программы с целью выяснения того, что трансформация была завершена корректно. Этот шаг дает дополнительные гарантии корректности модификации программы.
\item[Повторный анализ типов и разрешения имен.]
Аналогично пункту, который предшествовал изменению модели, выполняются статические проверки корректности программы с целью выяснения того, что трансформация была выполнена верно. Этот шаг дает дополнительные гарантии корректности модификации программы.
\end{description}

При успешном завершении проверок из последнего пункта генерируется итоговый байт-код.

\subsubsection{Фаза трансформации внутреннего представления программы}\label{xml-tranformation-phase}
\todo{Убрать повторы: тип...}

Главная суть фазы трансформации~--- заменить все вхождения загруженных типов (в любых позициях: будь то типовой параметр функции, тип возвращаемого значения, тип переменной и т.п.) на один единственный, который необходим для работы с документом XML.
Главная суть фазы трансформации~--- заменить все вхождения загруженных типов (в любых позициях: будь то типовой параметр функции, тип возвращаемого значения, тип переменной и т.п.) на один единственный тип класса, который необходим для работы с документом XML.

В данной работе таким универсальным классом стал класс \path{org.jdom.Element} из библиотеки JDOM\footnote{\url{http://www.jdom.org/}}. Библиотека JDOM предоставляет интерфейс для извлечения информации и модификации документов XML. Многолетняя разработка проекта и многочисленное сообщество существенно увеличивают стабильность продукта, а простой, неперегруженный интерфейс упрощают использование.

В качестве примера можно привести метод \path{getChildren}\footnote{\url{http://www.jdom.org/docs/apidocs/org/jdom/Element.html\#getChildren()}} класса \path{org.jdom.Element}.
В качестве примера можно привести метод \path{getChildren}
\footnote{\url{http://www.jdom.org/docs/apidocs/org/jdom/Element.html\#getChildren()}} класса \path{org.jdom.Element}.
Данный метод возвращает изменяемый, а не доступный только для чтения, список своих дочерних элементов. Такой интерфейс позволил легко добиться прозрачной интеграции с коллекциями в языке Kotlin.

Вышеперечисленные факторы и повлияли на выбор пакета JDOM в качестве основного инструмента для манипуляции с объектной моделью документа XML.
Expand All @@ -166,6 +166,6 @@ \subsubsection{Фаза трансформации внутреннего пре
\end{itemize}

\subsubsection{Результаты}
Реализован механизм загрузки типов из схем XML в компиляторе языка Extensible Kotlin.
Реализован механизм загрузки типов из схем XML в компиляторе Extensible Kotlin.

Проведен сравнительный анализ как со сходными механизмами извлечения типов, доступными в языках F\# и Gosu, так и со стандартными решениями, которые используются для работы со схемами данных, представленными в виде схем XML (XSD файлов).
Проведен сравнительный анализ как со сходными механизмами извлечения типов, доступным в языке Gosu, так и со стандартными решениями, которые используются для работы со схемами данных, представленными в виде схем XML (XSD файлов).

0 comments on commit 332c7cf

Please sign in to comment.