- •1. Постановка задачи
- •Исходные данные:
- •Описание синтаксиса входного языка:
- •Описание семантики входного языка:
- •Объявления и области действия
- •Операции.
- •Лексический анализ
- •Определение синтаксиса лексем
- •49 Таблица констант
- •Тестирование лексического анализатора
- •Описание кс-грамматики входного языка
- •Разбиение на подграмматики
- •Описание языка триад
- •Построение атрибутной транслирующей грамматики
- •Построение атрибутного дмп – процессора
- •Организация взаимодействия дмп-процессоров
Разбиение на подграмматики
ГРАММАТИКА ГЛАВНЫЙ_КЛАСС
MCls → DecPak {ConCls} DecCls {Met } MMet{DecVar}
MCls → DecPak {ConCls} DecCls {Met} MMet{Met}
MCls → DecPak {ConCls} DecCls {DecVar} MMet{DecVar}
MCls → DecPak {ConCls} DecCls {DecVar} MMet{Met}
Грамматика является грамматикой операторного предшествования, так как выполняются условия:
грамматика не содержит ε – правил
в правых частях выводов не содержится правил вида aT1T2b, гдеT1 иT2 – нетерминалы.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 8 * 8 ) :
=====================================
I Idcp!{ !} !dcl!met!mmt!dcv!EpsI
=====================================
IdcpI ! ! ! = ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
I{ I ! ! ! ! = ! ! = ! I
I---I---+---+---+---+---+---+---+---I
I} I ! ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---+---I
IdclI ! = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
ImetI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
ImmtI ! ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---+---I
IdcvI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! ! I
=====================================
Входная конструкция |
Описание |
package <путь> import <путь>.<идентификатор> Class <иденитификатор>
<объявление переменных>
<методы> void main ( String<идентификатор> ) <блок кода> <объявление переменных>
<методы> |
Обращение к подграмматике путь
Обращение к подграмматике путь
ID Обращение к подграмматике объявление переменной
Обращение к подграмматике метод
ID Обращение к подграмматике блок кода Обращение к подграмматике объявление переменной Обращение к подграмматике метод |
ГРАММАТИКА КЛАСС
Cls → DecPak {ConCls } DecCls { Met }
Cls → DecPak {Concls} DecCls {DecVar}
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 8 * 8 ) :
=====================================
I Idcp!{ !} !ccs!dls!met!dvr!EpsI
=====================================
IdcpI ! = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
I{ I ! ! ! = ! ! = ! = ! I
I---I---+---+---+---+---+---+---+---I
I} I ! ! ! ! = ! ! ! > I
I---I---+---+---+---+---+---+---+---I
IccsI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
IdlsI ! = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
ImetI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
IdvrI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! ! I
=====================================
Входная конструкция |
Описание |
package <путь> import <путь>.<идентификатор>
Class <иденитификатор>
<объявление переменных>
<методы> |
Обращение к подграмматике путь
Обращение к подграмматике путь
ID
Обращение к подграмматике объявление переменной
Обращение к подграмматике метод |
ГРАММАТИКА ПРОГРАММА
Prog→ MCls {Cls}
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Imcl!{ !} !cls!EpsI
=========================
ImclI ! = ! ! ! I
I---I---+---+---+---+---I
I{ I ! ! ! = ! I
I---I---+---+---+---+---I
I} I ! ! ! ! > I
I---I---+---+---+---+---I
IclsI ! ! = ! ! I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
<главный класс> { <класс> } |
Обращение к подграмматикеглавный класс
Обращение к подграмматикекласс
|
ГРАММАТИКА ОБЪЯВЛЕНИЕ КЛАССА
DecCls → class ID
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Icls!id !EpsI
=================
IclsI ! = ! I
I---I---+---+---I
Iid I ! ! > I
I---I---+---+---I
I ┴ I < ! ! I
=================
Входная конструкция |
Описание |
class <иденитификатор> |
ID |
ГРАММАТИКА ПУТЬ
Adr → СAdr.СAdr
СAdr → VCHAR{VCHAR}
СAdr → VCHAR{NUM}
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Ivch!{ !} !num!. !EpsI
=============================
IvchI ! = ! = ! ! ! I
I---I---+---+---+---+---+---I
I{ I = ! ! ! = ! ! I
I---I---+---+---+---+---+---I
I} I ! ! ! ! > ! > I
I---I---+---+---+---+---+---I
InumI ! ! = ! ! ! I
I---I---+---+---+---+---+---I
I. I < ! ! ! ! ! > I
I---I---+---+---+---+---+---I
I ┴ I < ! ! ! ! < ! I
=============================
Входная конструкция |
Описание |
Вариант 1 <латинская буква> <латинская буква> <цифра> Вариант 2 <путь> . <путь> |
VCHAR VCHAR NUM |
ГРАММАТИКА ПОДКЛЮЧЕНИЕ КЛАССА
ConCls → import Adr . ID
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Iimp!adr!. !id !EpsI
=========================
IimpI ! = ! ! ! I
I---I---+---+---+---+---I
IadrI ! ! = ! ! I
I---I---+---+---+---+---I
I. I ! ! ! = ! I
I---I---+---+---+---+---I
Iid I ! ! ! ! > I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
Import <путь> . <идентификатор>
|
Обращение к подграмматике путь
ID |
ГРАММАТИКА ОБЪЯВЛЕНИЕ ПАКЕТА
DecPak → package Adr
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Ipac!adr!EpsI
=================
IpacI ! = ! I
I---I---+---+---I
IadrI ! ! > I
I---I---+---+---I
I ┴ I < ! ! I
=================
Входная конструкция |
Описание |
package <путь>
|
Обращение к подграмматике путь
|
ГРАММАТИКА СПИСОК ПАРАМЕТРОВ
listValues → Type ID listValues
listValues→ listValues val
listValues → exp
Грамматика не является грамматикой операторного предшествования, так как не выполняются необходимые условия:
1.содержит ε – правила
Входная конструкция |
Описание |
Type <идентификатор> |
ID |
ГРАММАТИКА “NEW”
N → new Type(listValues)
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Inew!typ!( !) !lvl!EpsI
=============================
InewI ! = ! ! ! ! I
I---I---+---+---+---+---+---I
ItypI ! ! = ! ! ! I
I---I---+---+---+---+---+---I
I( I ! ! ! ! = ! I
I---I---+---+---+---+---+---I
I) I ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IlvlI ! ! ! = ! ! I
I---I---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! I
=============================
Входная конструкция |
Описание |
new <тип> ( <тип> <идентификатор> } |
Type
Type ID |
ГРАММАТИКА ПРОСТАЯ ПЕРЕМЕННАЯ
SVar → ID
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 2 * 2 ) :
=============
I Iid !EpsI
=============
Iid I ! > I
I---I---+---I
I ┴ I < ! I
=============
Входная конструкция |
Описание |
<идентификатор> |
ID |
ГРАММАТИКА КОНСТАНТА БЕЗ ЗНАКА
FCon → num
FCon → VCHAR
FCon → Str
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 4 * 4 ) :
=====================
I Inum!vch!str!EpsI
=====================
InumI ! ! ! > I
I---I---+---+---+---I
IvchI ! ! ! > I
I---I---+---+---+---I
IstrI ! ! ! > I
I---I---+---+---+---I
I ┴ I < ! < ! < ! I
=====================
Входная конструкция |
Описание |
Вариант 1 <число без знака> Вариант 2 <символьное значение> Вариант 3 <строка>
|
NUM
VCHAR
STR |
ГРАММАТИКА КОНСТАНТА
Con → num
Con → DOUBLE
Con → Str
Con →VCHAR
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Inum!dub!str!vch!EpsI
=========================
InumI ! ! ! ! > I
I---I---+---+---+---+---I
IdubI ! ! ! ! > I
I---I---+---+---+---+---I
IstrI ! ! ! ! > I
I---I---+---+---+---+---I
IvchI ! ! ! ! > I
I---I---+---+---+---+---I
I ┴ I < ! < ! < ! < ! I
=========================
Входная конструкция |
Описание |
Вариант 1 <число> Вариант 2 <символьное значение> Вариант 3 <строка>
|
MNUM
VCHAR
STR |
ГРАММАТИКА ОПЕРАЦИЯ СКОБКИ
BrOp → (Val)
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 4 * 4 ) :
=====================
I I( !) !val!EpsI
=====================
I( I ! ! = ! I
I---I---+---+---+---I
I) I ! ! ! > I
I---I---+---+---+---I
IvalI ! = ! ! I
I---I---+---+---+---I
I ┴ I < ! ! ! I
=====================
Входная конструкция |
Описание |
( <значение> ) |
Обращение к подграмматике значение |
ГРАММАТИКА ОПЕРАЦИЯ ПРИСВАИВАНИЯ
EqOp → SVar = Val
EqOp → N
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I ISvr!Val!N != !EpsI
=========================
ISvrI ! ! ! = ! I
I---I---+---+---+---+---I
IValI ! ! ! ! > I
I---I---+---+---+---+---I
IN I ! ! ! ! > I
I---I---+---+---+---+---I
I= I ! = ! ! ! I
I---I---+---+---+---+---I
I ┴ I < ! ! < ! ! I
=========================
Входная конструкция |
Описание |
<простая переменная> = <значение> |
Обращение к подграмматике простая переменная Обращение к подграмматике значение
MOV <простая переменная> <значение> |
ГРАММАТИКА ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ
DecVar → Type SVar
DecVar → Type EqOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 4 * 4 ) :
=====================
I Ityp!svr!eqp!EpsI
=====================
ItypI ! = ! = ! I
I---I---+---+---+---I
IsvrI ! ! ! > I
I---I---+---+---+---I
IeqpI ! ! ! > I
I---I---+---+---+---I
I ┴ I < ! ! ! I
=====================
Входная конструкция |
Описание |
Вариант 1 Type <идентификатор> ;
Вариант 2 Type <идентификатор> = <значение> ; |
ID
ID
Обращение к подграмматике значение
MOV <идентификатор> <значение>
|
ГРАММАТИКА ЗНАЧЕНИЕ
Val → Con
Val → Op
Val → StrOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 4 * 4 ) :
=====================
I Icon!op !sop!EpsI
=====================
IconI ! ! ! > I
I---I---+---+---+---I
Iop I ! ! ! > I
I---I---+---+---+---I
IsopI ! ! ! > I
I---I---+---+---+---I
I ┴ I < ! < ! < ! I
=====================
Входная конструкция |
Описание |
Вариант 1 <простая переменная> Вариант 2 <константа> Вариант 3 <операция> Вариант 4 <строковая операция>
|
Обращение к подграмматике простая переменная Обращение к подграмматике константа
Обращение к подграмматике операция
Обращение к подграмматике строковая операция |
ГРАММАТИКА ЛЕВАЯ ЧАСТЬ УНАРНОЙ ОПЕРАЦИИ
LUOp → SVar
LUOp→ FCon
LUOp → StrOp
LUOp → UOp
LUOp → BrOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Isvr!fcn!sop!uop!brp!EpsI
=============================
IsvrI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IfcnI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IsopI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IuopI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IbrpI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
I ┴ I < ! < ! < ! < ! < ! I
=============================
Входная конструкция |
Описание |
Вариант 1 <простая переменная> Вариант 2 <константа без знака> Вариант 3 <строковая операция> Вариант 4 <унарная операция> Вариант 5 <операция скобки> |
Обращение к подграмматике простая переменная Обращение к подграмматике константа без знака Обращение к подграмматике строковая операция Обращение к подграмматике унарная операция Обращение к подграмматике операция скобки |
ГРАММАТИКА УНАРНАЯ ОПЕРАЦИЯ
UOp → LUOp ++
UOp → LUOp --
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 4 * 4 ) :
=====================
I Ilup!++ !-- !EpsI
=====================
IlupI ! = ! = ! I
I---I---+---+---+---I
I++ I ! ! ! > I
I---I---+---+---+---I
I-- I ! ! ! > I
I---I---+---+---+---I
I ┴ I < ! ! ! I
=====================
Входная конструкция |
Описание |
Вариант 1 <левая часть унарной операции> ++
Вариант 2 <левая часть унарной операции> -- |
Обращение к подграмматикелевая часть унарной операции
++ <левая часть унарной операции>
Обращение к подграмматикелевая часть унарной операции
-- <левая часть унарной операции> |
ГРАММАТИКА ЛЕВАЯ ЧАСТЬ МУЛЬТИПЛЕКАТИВНОЙ ОПЕРАЦИИ
LMOp → LUOp
LMOp → Mop
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Ilop!mop!EpsI
=================
IlopI ! ! > I
I---I---+---+---I
ImopI ! ! > I
I---I---+---+---I
I ┴ I < ! < ! I
=================
Входная конструкция |
Описание |
Вариант 1 <левая часть унарной операции> Вариант 2 <мультипликативная операция> |
Обращение к подграмматикелевая часть унарной операции Обращение к подграмматикемультиплекативная операция |
ГРАММАТИКА МУЛЬТИПЛЕКАТИВНАЯ ОПЕРАЦИЯ
MOp → LMOp * LUOp
MOp → LMOp / LUOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Ilmp!lop!* !/ !EpsI
=========================
IlmpI ! ! = ! = ! I
I---I---+---+---+---+---I
IlopI ! ! ! ! > I
I---I---+---+---+---+---I
I* I ! = ! ! ! I
I---I---+---+---+---+---I
I/ I ! = ! ! ! I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
Вариант 1 <левая часть мультипликативной операции> * <левая часть унарной операции>
Вариант 2 <левая часть мультипликативной операции> / <левая часть унарной операции>
|
Обращение к подграмматикелевая часть мультиплекативной операции Обращение к подграмматикелевая часть унарной операции
* <левая часть мультипликативной операции> <левая часть унарной операции>
Обращение к подграмматикелевая часть мультиплекативной операции Обращение к подграмматикелевая часть унарной операции
/ <левая часть мультипликативной операции> <левая часть унарной операции>
|
ГРАММАТИКА ЛЕВАЯ ЧАСТЬ АДДИТИВНОЙ ОПЕРАЦИИ
LAdOp → LMOp
LAdOp → AdOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Ilmp!aop!EpsI
=================
IlmpI ! ! > I
I---I---+---+---I
IaopI ! ! > I
I---I---+---+---I
I ┴ I < ! < ! I
=================
Входная конструкция |
Описание |
Вариант 1 <левая часть мультипликативной операции>
Вариант 2 <аддитивная операция>
|
Обращение к подграмматикелевая часть мультиплекативной операции
Обращение к подграмматикеаддитивная операция
|
ГРАММАТИКА АДДИТИВНАЯ ОПЕРАЦИЯ
AdOp → LAdOp + LMOp
AdOp → LAdOp – LMOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Ilao!lmp!+ !- !EpsI
=========================
IlaoI ! ! = ! = ! I
I---I---+---+---+---+---I
IlmpI ! ! ! ! > I
I---I---+---+---+---+---I
I+ I ! = ! ! ! I
I---I---+---+---+---+---I
I- I ! = ! ! ! I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
Вариант 1 <левая часть аддитивной операции> + <левая часть мультипликативной операции>
Вариант 2 <левая часть аддитивной операции> - <левая часть мультипликативной операции>
|
Обращение к подграмматикелевая часть аддитивной операции Обращение к подграмматикелевая часть мультиплекативной операции
+ <левая часть аддитивной операции> <левая часть мультипликативной операции>
Обращение к подграмматикелевая часть аддитивной операции Обращение к подграмматикелевая часть мультиплекативной операции
- <левая часть аддитивной операции> <левая часть мультипликативной операции> |
ГРАММАТИКА УСЛОВНОЕ ПРИСВАИВАНИЕ
IEqOp → LogExp ? Val : Val
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Ilge!? !val!: !EpsI
=========================
IlgeI ! = ! ! ! I
I---I---+---+---+---+---I
I? I ! ! = ! ! I
I---I---+---+---+---+---I
IvalI ! ! ! = ! > I
I---I---+---+---+---+---I
I: I ! ! = ! ! I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
<логическое выражение> ? <значение1> : <значение2>
|
Обращение к подграмматикелогическое выражение Обращение к подграмматикезначение
Обращение к подграмматикезначение
<логическое выражение>1 BF (1) label1 2 <значение1> 3 BRL label2 4 DEFL label1 5 <значение2> 6 DEFL label2 7
|
ГРАММАТИКА ОПЕРАЦИЯ ДЛИНА СТРОКИ
StrL → StrVal _length()
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Isvl!len!EpsI
=================
IsvlI ! = ! I
I---I---+---+---I
IlenI ! ! > I
I---I---+---+---I
I ┴ I < ! ! I
=================
Входная конструкция |
Описание |
< строка> length()
|
Str
Length < строка> |
ГРАММАТИКА ОПЕРАЦИЯ КОНКАТЕНАЦИЯ СТРОК
ConStr→str_concat(str);
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Istr!con!( !) !EpsI
=========================
IstrI ! = ! ! = ! I
I---I---+---+---+---+---I
IconI ! ! = ! ! I
I---I---+---+---+---+---I
I( I = ! ! ! ! I
I---I---+---+---+---+---I
I) I ! ! ! ! > I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
<строка1> Concat ( <строка1> )
|
Str
Str
Concat<строка1> <строка1> |
ГРАММАТИКА ОПЕРАЦИЯ ДОСТУП К СТРОКЕ
AcToStr→strsubstring(num,num);
AcToStr→strsubstring(num);
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 7 * 7 ) :
=================================
I Istr!sub!( !) !num!, !EpsI
=================================
IstrI ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
IsubI ! ! = ! ! ! ! I
I---I---+---+---+---+---+---+---I
I( I ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---I
I) I ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---I
InumI ! ! ! = ! ! = ! I
I---I---+---+---+---+---+---+---I
I, I ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! I
=================================
Входная конструкция |
Описание |
<строка> Substring ( <целое1> , <целое2> ) |
Str
NUM
NUM
Substring <строка> <целое1> 1 Add(1)<целое2> 2 |
ГРАММАТИКА ОПЕРАЦИЯ ЗАМЕНА ПОДСТРОКИ В СТРОКЕ
ChStr → str replace(str, str);
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Istr!rep!( !) !, !EpsI
=============================
IstrI ! = ! ! = ! = ! I
I---I---+---+---+---+---+---I
IrepI ! ! = ! ! ! I
I---I---+---+---+---+---+---I
I( I = ! ! ! ! ! I
I---I---+---+---+---+---+---I
I) I ! ! ! ! ! > I
I---I---+---+---+---+---+---I
I, I = ! ! ! ! ! I
I---I---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! I
=============================
Входная конструкция |
Описание |
<строка> Replace ( <строка1> , <строка2> )
|
Str
Str
Str
Replace <строка> <строка1> 1 Add (1) <строка2> 2 |
ГРАММАТИКА ОПЕРАЦИЯ ПОИСК ПОДСТРОКИ В СТРОКЕ
FnStr→strfind(str);
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Istr!fnd!( !) !EpsI
=========================
IstrI ! = ! ! = ! I
I---I---+---+---+---+---I
IfndI ! ! = ! ! I
I---I---+---+---+---+---I
I( I = ! ! ! ! I
I---I---+---+---+---+---I
I) I ! ! ! ! > I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
<строка1> Find ( <строка2> )
|
Str
Str
Find<строка1> <строка2> |
ГРАММАТИКА СТРОКОВАЯ ОПЕРАЦИЯ
StrOp → StrL
StrOp → ConStr
StrOp → AcToStr
StrOp → ChStr
StrOp → FnStr
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Istl!cst!ats!cht!fns!EpsI
=============================
IstlI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IcstI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IatsI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IchtI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IfnsI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
I ┴ I < ! < ! < ! < ! < ! I
=============================
Входная конструкция |
Описание |
Вариант 1
<длина строки> Вариант 2 <конкатенация строк>
Вариант 3 <доступ к подстроке>
Вариант 4 <замена подстроки в строке>
Вариант 5 <поиск подстроки в строке>
|
Обращение к подграмматикедлина строки Обращение к подграмматикеконкатенация строк
Обращение к подграмматикедоступ к строке
Обращение к подграмматике замена подстроки в строке
Обращение к подграмматикепоиск подстроки встроке
|
ГРАММАТИКА ОПЕРАЦИЯ
Op → BrOp
Op → UOp
Op → MOp
Op → AdOp
Op → IEqOp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Ibrp!uop!mop!aop!ieo!EpsI
=============================
IbrpI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IuopI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
ImopI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IaopI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IieoI ! ! ! ! ! > I
I---I---+---+---+---+---+---I
I ┴ I < ! < ! < ! < ! < ! I
=============================
Входная конструкция |
Описание |
Вариант 1 <операция скобки> Вариант 2 <унарная операция> Вариант 3 <мультипликативная операция> Вариант 4 <аддитивная операция> Вариант 5 <условное присваивание>
|
Обращение к подграмматикеоперация скобки Обращение к подграмматикеунарная операция Обращение к подграмматикемультипликативная операция Обращение к подграмматикеаддитивная операция Обращение к подграмматикеусловное присваивание |
ГРАММАТИКА БЛОК_КОДА
Blc → { Blc UOp }
Blc → { Blc DecVar }
Blc → { Blc EqOp }
Blc → { Blc StrOp }
Blc → { Blc Cyc }
Blc → { Blc CMet }
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 11 * 11 ) :
=================================================
I Iblc!bel!{ !} !eop!sto!cyc!cme!uop!dva!EpsI
=================================================
IblcI ! = ! ! ! < ! < ! < ! < ! < ! < ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IbelI ! ! ! = ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
I{ I = ! = ! < ! ! < ! < ! < ! < ! < ! < ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
I} I ! ! ! ! > ! > ! > ! > ! > ! > ! > I
I---I---+---+---+---+---+---+---+---+---+---+---I
IeopI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IstoI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IcycI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IcmeI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IuopI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
IdvaI ! ! ! > ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---+---+---I
I ┴ I ! ! < ! ! ! ! ! ! ! ! I
=================================================
Входная конструкция |
Описание |
Вариант 1 { <унарная операция> }
Вариант 2 { <объявление переменной> }
Вариант 3 { <операция присваивания> }
Вариант 4 { <строковая операция> }
Вариант 5 { <цикл с предусловием> }
Вариант 6 { <вызов метода> }
Вариант 7 { <блок кода> } |
Обращение к подграмматикеунарная операция
Обращение к подграмматикеобъявление переменной
Обращение к подграмматикеоперация присваивания
Обращение к подграмматикестроковая операция
Обращение к подграмматикецикл спредусловием
Обращение к подграмматикевызов метода
Обращение к подграмматикеблок кода |
ГРАММАТИКА ВЫЗОВ МЕТОДА
CMet → ID(ListVal)
ListVal → val ListVal
ListVal → val
ListVal → exp
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I Iid !( !) !val!exp!EpsI
=============================
Iid I ! = ! ! ! ! I
I---I---+---+---+---+---+---I
I( I ! ! = ! < ! < ! I
I---I---+---+---+---+---+---I
I) I ! ! ! ! ! > I
I---I---+---+---+---+---+---I
IvalI ! ! > ! < ! < ! I
I---I---+---+---+---+---+---I
IexpI ! ! > ! ! ! I
I---I---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! I
=============================
Входная конструкция |
Описание |
Вариант 1 <простая переменная> . <идентификатор> ( <значение> ) |
Обращение к подграмматикепростая переменная ID
Обращение к подграмматикезначения |
ГРАММАТИКА МЕТОД
Met → Type ID(listValues) Blc
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 7 * 7 ) :
=================================
I Ityp!id !( !lsv!) !blc!EpsI
=================================
ItypI ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
Iid I ! ! = ! ! ! ! I
I---I---+---+---+---+---+---+---I
I( I ! ! ! = ! ! ! I
I---I---+---+---+---+---+---+---I
IlsvI ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---I
I) I ! ! ! ! ! = ! I
I---I---+---+---+---+---+---+---I
IblcI ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! I
=================================
Входная конструкция |
Описание |
<тип> <идентификатор> ( <список параметров> ) <блок кода>
|
Type ID
Обращение к подграмматикесписок параметров Обращение к подграмматикеблок кода |
ГРАММАТИКА МЕТОД MAIN
MMet → void main(String ID) Blc
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 8 * 8 ) :
=====================================
I Ivoi!man!( !str!id !) !blc!EpsI
=====================================
IvoiI ! = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
ImanI ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
I( I ! ! ! = ! ! ! ! I
I---I---+---+---+---+---+---+---+---I
IstrI ! ! ! ! = ! ! ! I
I---I---+---+---+---+---+---+---+---I
Iid I ! ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---+---I
I) I ! ! ! ! ! ! = ! I
I---I---+---+---+---+---+---+---+---I
IblcI ! ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! ! I
=====================================
Входная конструкция |
Описание |
void main ( <список параметров> ) <блок кода>
|
Обращение к подграмматикесписок параметров Обращение к подграмматикеблок кода |
ГРАММАТИКА ОТНОШЕНИЕ
Att → LAtt > NVal
Att → LAtt < NVal
Att → LAtt >= NVal
Att → LAtt <= NVal
LAtt → NVal
LAtt → Att
NVal → MNUM
NVal → DOUBLE
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 7 * 7 ) :
=================================
I I>= !<= !> !< !Mnm!db !EpsI
=================================
I>= I > ! > ! > ! > ! < ! < ! > I
I---I---+---+---+---+---+---+---I
I<= I > ! > ! > ! > ! < ! < ! > I
I---I---+---+---+---+---+---+---I
I> I > ! > ! > ! > ! < ! < ! > I
I---I---+---+---+---+---+---+---I
I< I > ! > ! > ! > ! < ! < ! > I
I---I---+---+---+---+---+---+---I
IMnmI > ! > ! > ! > ! ! ! > I
I---I---+---+---+---+---+---+---I
Idb I > ! > ! > ! > ! ! ! > I
I---I---+---+---+---+---+---+---I
I ┴ I < ! < ! < ! < ! < ! < ! I
=================================
Входная конструкция |
Описание |
Вариант 1 <левая часть отношения> > <значение>
Вариант 2
<левая часть отношения> < <значение>
Вариант 3
<левая часть отношения> >= <значение>
Вариант 4
<левая часть отношения> <= <значение>
|
Обращение к подграмматикелевая часть отношения Обращение к подграмматикезначение
MORE <левая часть отношения> <значение>
Обращение к подграмматикелевая часть отношения Обращение к подграмматикезначение
LESS <левая часть отношения> <значение>
Обращение к подграмматикелевая часть отношения Обращение к подграмматикезначение
GE <левая часть отношения> <значение>
Обращение к подграмматикелевая часть отношения Обращение к подграмматикезначение
LE <левая часть отношения> <значение>
|
ГРАММАТИКА ЭКВИВАЛЕНТНОСТЬ
Ecv → RLogExp == LAtt
Ecv → RLogExp!= LAtt
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 5 * 5 ) :
=========================
I Irle!== !!= !lat!EpsI
=========================
IrleI ! = ! = ! ! I
I---I---+---+---+---+---I
I== I ! ! ! = ! I
I---I---+---+---+---+---I
I!= I ! ! ! = ! I
I---I---+---+---+---+---I
IlatI ! ! ! ! > I
I---I---+---+---+---+---I
I ┴ I < ! ! ! ! I
=========================
Входная конструкция |
Описание |
Вариант 1 <правая часть эквивалентности> == <левая часть отношения>
Вариант 2 < правая часть эквивалентности> ! = <левая часть отношения>
|
Обращение к подграмматикеправая часть эквивалентности Обращение к подграмматикелевая часть отношения
== < правая часть эквивалентности> <левая часть отношения>
Обращение к подграмматикеправая часть эквивалентности Обращение к подграмматикелевая часть отношения
!=< правая часть эквивалентности> <левая часть отношения>
|
ГРАММАТИКА ПРАВАЯ ЧАСТЬ ЛОГИЧЕСКОГО ВЫРАЖЕНИЯ
RLogExp→LogExp
RLogExp → Val
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 3 * 3 ) :
=================
I Ilex!val!EpsI
=================
IlexI ! ! > I
I---I---+---+---I
IvalI ! ! > I
I---I---+---+---I
I ┴ I < ! < ! I
=================
Входная конструкция |
Описание |
Вариант 1 <логическое выражение>
Вариант 2 <значение>
|
Обращение к подграмматикелогическое выражение
Обращение к подграмматике значение |
ГРАММАТИКА ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ
LogExp→LogExp||RLogExp
LogExp→LogExp&&RLogExp
LogExp→RLogExp
LogExp→ ! RLogExp
LogExp→Ecv
LogExp → Att
Грамматика не является грамматикой операторного предшествования, так как не выполняются необходимые условия:
- существует правило вида E->T, гдеTнетерминал.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 7 * 7 ) :
=================================
I Irle!|| !&& !! !ecv!att!EpsI
=================================
IrleI ! > ! > ! ! ! ! > I
I---I---+---+---+---+---+---+---I
I|| I = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
I&& I = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
I! I = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
IecvI ! > ! > ! ! ! ! > I
I---I---+---+---+---+---+---+---I
IattI ! > ! > ! ! ! ! > I
I---I---+---+---+---+---+---+---I
I ┴ I < ! < ! < ! < ! < ! < ! I
=================================
Входная конструкция |
Описание |
Вариант 1 <логическое выражение> || <правая часть логического выражения>
Вариант2 <логическое выражение> && <правая часть логического выражения>
Вариант 3 <правая часть логического выражения>
Вариант 4 ! <правая часть логического выражения>
Вариант 5 <эквивалентность>
Вариант 6 <отношение>
|
Обращение к подграмматикелогическое выражение Обращение к подграмматикеправая часть логического выражения
|| <логическое выражение> <правая часть логического выражения>
Обращение к подграмматикелогическое выражение Обращение к подграмматикеправая часть логического выражения
&& <логическое выражение> <правая часть логического выражения>
Обращение к подграмматикеправая часть логического выражения
Обращение к подграмматикеправая часть логического выражения
! <правая часть логического выражения>
Обращение к подграмматикеэквивалентность
Обращение к подграмматикеотношение |
ГРАММАТИКА ЦИКЛ С ПРЕДУСЛОВИЕМ
Cyc→while(LogExp)EqOp
Cyc→while(LogExp)Blc
Cyc→while(LogExp)
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 7 * 7 ) :
=================================
I Iwhl!lex!eqp!blc!( !) !EpsI
=================================
IwhlI ! ! ! ! = ! ! I
I---I---+---+---+---+---+---+---I
IlexI ! ! ! ! ! = ! I
I---I---+---+---+---+---+---+---I
IeqpI ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---I
IblcI ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---I
I( I ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---I
I) I ! ! = ! = ! ! ! > I
I---I---+---+---+---+---+---+---I
I ┴ I < ! ! ! ! ! ! I
=================================
Входная конструкция |
Описание |
Вариант 1 While ( <логическое выражение> ) <операция присваивания>
Вариант 1 While ( <логическое выражение> ) <блок кода> |
Обращение к подграмматикелогическое выражение Обращение к подграмматике операция присваивания
DEFLLbegin1 <логическое выражение> 2 BF(2)Lend3 <операция присваивания>4 BRLLbegin5 DEFLLend6
Обращение к подграмматикелогическое выражение Обращение к подграмматике блок кода
DEFLLbegin1 <логическое выражение> 2 BF(2)Lend3 <блок кода> 4 BRL Lbegin 5 DEFL Lend 6
|
ГРАММАТИКА УСЛОВНЫЙ ОПЕРАТОР
Opif→if(LogExp)Blc
Opif → if (LogExp) Blc else Blc
Грамматика является грамматикой операторного предшествования, так как выполняются необходимые условия.
================================= I IIF !ELS!lex!blc!( !) !EpsI ================================= IIF I ! ! ! ! = ! ! I I---I---+---+---+---+---+---+---I IELSI ! ! ! = ! ! ! I I---I---+---+---+---+---+---+---I IlexI ! ! ! ! ! = ! I I---I---+---+---+---+---+---+---I IblcI ! = ! ! ! ! ! > I I---I---+---+---+---+---+---+---I I( I ! ! = ! ! ! ! I I---I---+---+---+---+---+---+---I I) I ! ! ! = ! ! ! I I---I---+---+---+---+---+---+---I I а I < ! ! ! ! ! ! I =================================
Входная конструкция |
Описание |
Вариант 1
If ( <логическое выражение> ) <блок кода1> Else <блок кода2>
Вариант 2
If ( <логическое выражение> ) <блок кода1> |
Обращение к подграмматикелогическое выражение Обращение к подграмматикеблок кода
Обращение к подграмматикеблок кода
<логическое выражение>1 BF(1)label1 2 <блок кода1> 3 BRLlabel2 4 DEFL label1 5 <блок кода2> 6 DEFL label2 7
Обращение к подграмматикелогическое выражение Обращение к подграмматикеблок кода
<логическое выражение>1 BRLlabel1 (1) 2 <блок кода1> 3 DEFLlabel1 4
|