;
2. Кнопка Скасувати , яка завершує роботу програми;
. Кнопка Очистити , яка очищає вихідні дані;
4. Memo1-область, в якій повинна бути вписана початковий HTML код;
5. TreeView - область, в якій будується абстрактне дерево.
Після завершення процесу аналізу коду, програма прийме вигляд відповідний малюнку 2.
В
Рисунок 2 - Завершення процесу аналізу
Зх аключенія
В ході даної роботи була написана програма, яка аналізує HTML код на правильність, у разі успішного аналізу будується абстрактне синтаксичне дерево, в іншому випадку телефон помилка. Програма функціонує відповідно до поставленого завдання. p align="justify"> При написанні ми розібралися з алгоритмом рекурсивного спуску, отримали навички побудови граматики та роботи з лексичним аналізатором Lex. Придбали практичні навички в області побудови трансляторів. p align="justify"> алгоритм граматика інтерпретатор розмітка код
Додаток А
Лістинг програми
unit Interpreate;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Lexlib, HTMLLEX, ComCtrls, StdCtrls, ExtCtrls; = ^ integer; = class (TForm): TButton;: TMemo; : TGroupBox;: TMemo;: TGroupBox;: TTreeView;: TMemo;: TButton;: TButton;: TStatusBar;: TMemo; FormShow (Sender: TObject); Button1Click (Sender: TObject); FormCreate (Sender: TObject); fglav: boolean; fhtml_st: boolean;// началоfh_st: boolean;// head start - endft_st: boolean;// titleft_en: boolean; fh_en: boolean; fb_st: boolean;// bodyfb_tabl_st: boolean;// body - tablefparam: boolean; fb_tabl_tr_st : boolean; fb_tabl_td_st: boolean; fb_tabl_td_en: boolean; push (i: integer); pop (var i: integer); fb_tabl_tr_en: boolean; fb_tabl_en: boolean; fb_en: boolean; fhtml_en: boolean; Button2Click (Sender: TObject);//кінець: TList;
{Private declarations}
{Public declarations};: TForm2;: integer; _i, _t,// ​​використовуємо в title і table_tr, _td, _p: integer;: array [1 .. 4] of integer; p>
{$ R *. dfm} TForm2.fhtml_en: boolean; token = html_en then: = yylex;: = true;: = false;; TForm2.Button2Click (Sender: TObject);. Clear; ; TForm2.fb_en: boolean; (token = b_en) then: = true;: = yylex; (token = str_ru) or (token = id) then.Items.AddChild (TreeView1.Items.Item [tree_t], yytext); (tree_i);: = yylex;: = fb_en;: = false;; TForm2.fb_tabl_en: boolean; token = b_tabl_en then: = true;...