Интерпретатор HTML-текстов (браузер)
Браузер это программа в системе Windows, которая создаёт в этой системе своё окно и что-то на нем рисует.
Немного про это было тут:
http://akostina76.ucoz.ru/blog/2016-09-16-3441
Окно браузера это точно такое же окно. У меня по этой технологи было написано две программы. Ещё на заводе в 2000 году. Первая – поиск по складской базе что ли. Смысл – популяризация имеющейся информационной системы (которая была в DOS-е) и системы Windows как перспективного направления развития. Вторая – аналог первой, просмотр данных из стащенной бухгалтерской базы. Именно в такое окно я тыкала дрожащим пальцем, показывая на постоянный и быстрый рост процента кредитов в пассиве (в течение нескольких лет).
И то и другое было примитивно. Там даже ввода информации не было, только просмотр. Так что я никак не специалист по тому, как это делается.
Но точно знаю, что всё нарисованное на окне можно рисовать в программе как угодно.
Пример отсюда:
https://prog-cpp.ru/winelements/
В момент создания окна (WM_CREATE):
… просто последовательно рисуется всё, что должно быть на этом окне, т.е три поля для ввода информации (TextBox) и кнопка (Button). Оформление всего этого (цвет, рамка и т.д) также как расположение на окне (относительно левого верхнего угла, в котором координата (0,0) ) и размеры элемента передаются функции создания (CreateWindow) в качестве параметров.
Интерпретатор должен прочить всё, что написано между <html> и </html> и последовательно это всё нарисовать на экране. Программа довольно тяжелая. Первое, что вспоминается – вложенные таблицы. Ширина колонки определяется обычно тем. что в ней нарисовано. Т.е надо пройти по всем этим вложениям и определиться с шириной каждой колонки (по этой полной информации).
Недостаточно нарисовать HTML- страницу. На ней могут быть, например, кнопки, реакция на нажатие которых описана между тэгами <script> </script>.
В примере в начале функции определены переменные – ссылки на созданные на форме элементы:
То, что они статические (static) означает, что их информация будет храниться до момента завершения работы программы. Если с этими элементами что-то происходит, то окну программы придёт сообщение WM_COMMAND:
Какой именно объект сгенерировал сообщение (т.е где и что нажали) определяется по параметру lparam. В данном случае, если нажала кнопка (hBtn), то выполняются некоторые действия и меняется текст в текстовом поле, ссылка на которую хранится в переменной hStart.
Вот так окно выглядит:
А браузер должен найти в скриптах нужный и как-то уже его интерпретировать. А там – полноценный язык программирования, с циклами, условиями и опять же, любым количеством вложенности.
Перевод этого программного текста в аналог того что на продпоследней картинке и есть интерпретация (от который «интерпретатор»). Это всё делаемо. Но это никак не назовёшь тривиальным.
|