Зворотний зв'язок

ЕЛЕМЕНТИ СИНТАКСИЧНОГО АНАЛІЗУ

ch:=getc.

•Якщо Y є терміналом, але не першим у ланцюжку v, то оператор має вигляд

if ch = Y then ch:=getc else error,

тобто треба перевірити збігання поточного символу з Y та перейти до наступного символу.

•Якщо Y є нетерміналом, то оператором є виклик процедури

Y.

•Якщо Y має вигляд (u1|…|um) і Ti позначає first(ui) при i=1,…,m, то треба визначити, до якої з множин Ti належить поточний символ, і виконати оператор, відповідний до ui:

if ch in T1 then оператор-для-u1 else



if ch in Tm then оператор-для-um else

error.

•Якщо Y має вигляд [u], T=first(u), то за виконання умови ch T треба виконати оператор, відповідний до u:

if ch in T then оператор-для-u.

•Якщо Y має вигляд {u}, T=first(u), то за виконання умови ch T треба повторювати виконання оператора, відповідного до u:

while ch in T do оператор-для-u.

Зокрема, коли ланцюжок u починається терміналом, тобто u=xu1, де x X, то цикл має вигляд

while ch = x do

begin

ch := getc;

оператор-для-u1

end.

Оператори, відповідні до u, u1, … , um , записуються за цими ж правилами.

3.2. Побудова аналізатора арифметичних виразів

Розширена LA(1)-граматика G01 із продукціями E T{+T}, T F{*F}, F (E)|a породжує мову арифметичних виразів. Згідно з наведеними правилами запишемо процедури E, T, F:


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат