Главная Промышленная автоматика. 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.0026 |