|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Построение КС-грамматики входного языка
Для построения КС-грамматики входного языка необходимо: 1. Заменить металингвистические переменные БНФ обозначениями нетерминальных символов, используя короткие имена. 2. В качестве терминальных символов использовать токены. 3. Металингвистический символ «:=» заменить символом «» 4. Заменить одну металингвистическую формулу с n альтернативами на n правил грамматики с одинаковым символом в левой части правила вывода. 5. Исключить металингвистические символы [] и {}, включив в правила грамматики ε-правила и рекурсивные правила.
P – начальный нетерминальный символ. P → void main() { DeclarVar DeclarVector CompositeOperator }
DeclarVar → TypeBase Ident DeclarVar; DeclarVar →
DeclarVector → vector Ident [ Dimension ] DeclarVector DeclarVector → CompositeOperator → { SeqOperator } SeqOperator → Operator; SeqOperator SeqOperator →
Operator → [ Label ]: NonMarkedOperator Operator → NonMarkedOperator
NonMarkedOperator → CompositeOperator NonMarkedOperator → AssignOperator NonMarkedOperator → ConAssignOperator NonMarkedOperator → ConditionOperator NonMarkedOperator → LoopOperator NonMarkedOperator → GotoOperator NonMarkedOperator → InputOperator NonMarkedOperator → OutputOperator
ConAssignOperator → ( Logical Expr )? Expr: Expr AssignOperator → Var AssignRel Expr
ConditionOperator → if ( LogicalExpr ) CompositeOperator ConditionOperator → if ( LogicalExpr ) CompositeOperator else CompositeOperator
LoopOperator → for( AssignOperator; LogicalExpr; AssignOperator ) CompositeOperator GotoOperator → goto Label InputOperator → cin>> Var OutputOperator → cout<< Var
Expr → Expr AddOperation Item Expr → Item Expr → Item UnaryOperation Expr → ~ Vector
Item → Item MultOoperation Factor Item →Factor
Factor → Var Factor → ( Expr )
LogicalExpr → Con or Con LogicalExpr → Relation Con → LogicalFactor and LogicalFactor LogicalFactor → ( LogicalExpr ) LogicalFactor → ( Relation ) LogicalFactor → not LogicalFactor
Relation →Expr RelOperation Expr
Var → Ident Var → Vector Label → Ident
Number →0 Number → NatNumber
NNumber → Number NNumber NNumber →
Dimension → NatNumber Dimension → NatNumber NNumber
Index → 0 Index → NatNumber Index
Vector → Ident Vector → [ VectorElem NVectorElem ]
NVectorElem →, VectorElem NVectorElem →
VectorElem →Ident [ Index ] VectorElem → Ident VectorElem → FloatNumber
FloatNumber → NatNumber NNumber. NNumber
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |