Главная Промышленная автоматика.

95 <простой тип>

short integer integer logical real long real byte ] character #

102 <тип>- f

<простой тип) I array <число> <простой тип>

104 <опис1>-

<тип> <идентификатор> <опис2> <идентификатор)

106 <опис2)-

<опис7),

107 <описЗ) -

<опис1) =

108 <опис4)-.-

<описЗ) (I <опис5). 110 <опис5)-

<опис4) <число) I <оппс4) <цепочка> 112 <описб)-

<описЗ) ПЗ <опис7)-

<опис1) I <опис6) <число> I <опис6) <цепочка) <опис5)) 117 <опис функ1)->

function I <опис функ7)

119 <опис функ2)-+

<опис функ!) <идентификатор)

120 <опис функЗ)->

<опис функ2) (

121 <опис функ4)

<опис функЗ) <число>

122 <опис функ5)->

<опнс функ4),

123 <опис функб)-f

<опис функ5) <число>

124 <опис функ7)-

<опис функб))

125 <синоннм опис\)-»-

<тип) <идентификатор) syn <простой тип) register <пдентпфикатор) syn <синоним описЗ) <идентификатор) syn 128 <снноним опис2)->

<синоним опис1) <ячейка) <синоиим опис1) <число) I <спноннм опис1) <регистр)

131 <синоним описЗ)-»-

<синоним опис2),

132 <голова сегмента)->

segment

133 <заголов Hponl)-

procedure <голова сегмента) procedure

135 <заголов проц2)-»-

<заголов проц!) <идеитификатор)

136 <заголов процЗ)-

<заголов проц2) (

137 <заголов проп4)-

<заголов процЗ) <регистр)

138 <заголов проп5)~

<заголов проц4))

139 <заголоа процб)-

<заголов проц5);

140 <описание)-»-

<опис7) I <опис функ7) <синоним опис2>

<заголов процб) <оператор*) <голова сегмента) base

<регнстр>

145 <определение метки)-

<идеитификатор):

146 <голова блока)-*

begin I <голова блока) <описапие);

148 <тело блока)

<голова блока) <тело блока) <оператор); ]

<тело блока) <определение метки) 151 <программа)-у

•<оператор)

Лексические переменные

<идеитификатор)

<цепочка)

<число)

П.4. СХЕМА СИНТАКСИЧЕСКИ УПРАВЛЯЕМОГО ПЕРЕВОДА ДЛЯ ЯЗЫКА PAL

Здесь мы приведем схему синтаксически управляемой трансляции ДЛЯ языка программирования PAL, созданного Возен-крафтом и Эвансом [1969] и включающего в себя лямбда-исчисление и операторы присваивания. Название языка составлено из первых букв слов Pedagogic Algorithmic Language (Педагогический Алгоритмический Язык).

Описываемая здесь СУ-схема отображает программы, написанные иа слегка модифицированной версии языка PAL, в постфиксные польские записи. Эта СУ-схема взята из диссертации Де Ремера [1969]. Она состоит из двух частей. Первая представляет собой входную контекстно-свободную грамматику, а



именно простую ЬН(1)-грамматнку. Вторая часть определяет семантические правила, ассоциируемые с правилами входной грамматики.

Кроме того, мы дадим регулярные определения, описывающие используемые в этой схеме лексические переменные <константа> и <переменная>.

Входная грамматика

] <программа>-+

<список определ> [ <выражение> 3 <список определ) -

dei <определение> <спнсок определ) def <определение) 5 <выражение> -

let <определение) in <выражение)

fn <оспер часть). <выражеиие)

<где выражение) 8 <где выражение) -»-

<знач выражение) where <рек определение)

<знач выражение) 10 <знач выражение)->

valof <команда) <команда) 12 <комаида)-

<помеч команда); <команда) <помеч команда)

<услов команда)

14 <помеч команда)

<перемениая): <помеч команда) 16 <услов команда)->

test <логнческое) ifso <помеч команда) ifnot <помеч команда) test <логическое) ifnot <помеч команда) ifso <помеч команда) if <логическое> do <помеч команда) unless <логическое) do <помеч команда) while <логическое) do <помеч команда) until <логическое) do <помеч команда) <основ команда) 23 <основ команда)

<кортеж): <кортеж) goto <комбинация> res <кортеж) <кортеж) 27 <кортеж)->

<Т1) ; <Т1), <кортеж) 20 <Т1)->

<Т1) aug <услов выражение) [ <услов выражение) 31 <услов выражение)-

<логическое)- <услов выражение)1<услов выражение) <Т2>

33 <Т2)-

$ <комбинация> I <логическое> 35 <логическое> -*-

<логическое) or <конъюнкция> ( <коиъюнкция> 37 <конъюнкция> ->

(конъюнкция) & (отрицание) <отрицание> 39 (отрицание)--

not (отношение) (отношение) 41 (отношение)-J-

(ариф выражение) (функтор отнош) (ариф выражение) (ариф выражение) 43 (ариф выражение)-)

(ариф выражение) + (терм) 1 (ариф выражение) - (терм) --(терм) -(терм) (терм) 48 (терм)->

(терм) » (множитель) (терм)/(множитель) (множитель) 51 (множитель)

(первичное)л-«(множитель) ( (первичное) 53 (первичное)-*

(первичное) % (переменная) (комбинация)

(комбинация) 55 (комбинация)-»-

(комбинация) (произвольное) (произвольное) 57 (произвольное)-

(переменная) (константа) ((выражение))

[(выражение)] 61 (определение)->

(внутр определение) within (определение)

(внутр определение)

63 (внутр определение)-*-

(внутр определение) inwhich (одноврем определение) (одноврем определение)

65 (одноврем определение)-*-

(рек определение) and (одиоврем определение) (рек определение)

67 (рек определение)-*

гес (основное определение) [ (основное определение)

69 (основное определение)-*-

(список переменных) = (выражение) (переменная) (оспер часть) = (выражение) ((определение)) [(определение)]

73 (оспер часть)-

(оспер часть) (основ перем) (основ перем>



75 <основ перем>-*

<переменная> «список переменных» ] ( ) 78 <список переменных) -

<переменная>, <список переменных) <переменная>

Правила леревода, соответствующие правилам входной грамматики

i <программа>

<список определ) <выражение> 3 <список определ) -

<определение) <список определ) def <определение) lastdef 5 <выражение)

<определеиие) <выражение) let <оспер часть) (выражение) lambda <где выражение) 8 <где выражение)

<знач выражение) <рек определение) where <знач выражение) 10 <знач выражение) =

<команда) valof J (команда) 12 (команда)

<помеч команда) (команда); (помеч команда) , 14 (помеч команда)

(переменная) (помеч команда): (услов команда) 16 (услов команда) -

(логическое) (помеч команда) (помеч команда) test-true (логическое) (помеч команда) (помеч команда) test-false (логическое) (помеч команда) if (логическое) (помеч команда) unless (логическое) (помеч команда) while <логнческое) (помеч команда) until (основная команда) 23 (основная команда)

(кортеж) (кортеж): = (комбинация) goto ] (кортеж) res (кортеж) 27 (кортеж) =

(Т1) I (Т1) (кортеж), 29 (Т1) =

(Т1) (услов выражение) aug (услов выражение) 31 (услов выражение) =

(логическое) (услов выражение) (услов выражение) test-true I (Т2)

33 (Т2>=-

(комбинация) $ I (логическое) 35 (логическое) -

(логическое) (конъюнкция) ог (конъюнкция) 37 (конъюнкция)

(конъюнкция) (отрицание) & ] (отрицание) 39 (отрицание)=

(отношение) not (отношение) 41 (отношение) -

(арпф выражение) (ариф выражение) (функтор отнош>

(ариф выражение) 43 (ариф выражение) =

(ариф выражение) (терм) +

(ариф выражение) (терм) -

(терм) pos I (терм) neg (терм)

48 (терм)

(терм) (множитель) *] (терм) (множитель)/1

(множитель) 51 (множитель) -

(первичное) (множитель) ехр (первичное) 53 (первичное)=

(первичное) (переменная) (комбинация) % \

(комбинация) 55 (комбинация)=

<комбинация) <произвольное) gamma (произвольное)

57 (произвольное)-

(переменная) (константа) (выражение)

(выражение) 61 (определение)

(внутр определение) (определение) within

(внутр определение)

63 (внутр определение) -

(внутр определение) (одноврем определение) inwhich (одноврем определение)

65 (одноврем определение)=

(рек определение) (одноврем определение) and (рек определение)

67 (рек определение)=

(основное определение) гес (основное определение)

69 (основное определение) -

(список переменных) (выражение) = (переменная) (оспер часть) (выражение) ff (определение) (определение)

73 (оспер часть)-

(оспер часть) (основ перем) (основ перем)





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [94] 95 96 97 98 99 100 101

0.0018