Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchot.doc
Скачиваний:
3
Добавлен:
21.12.2018
Размер:
163.84 Кб
Скачать

5. Регулярные выражения

<И> := < пБ><Ц>

<Буква> :=a|b|c...|x|y|z

< пБ>:=(буква)­*

<Ц> :=0|1|2|3

<пЦ >:=(ц)*

<drop>:=.< пЦ >|e

<К> :=<знак>< пЦ ><drop>

<Знак >:=+|-|e

<Операнд>:=<ид>|< K>

<Сравнение> := >|<|>=|<=|==|!=

<var>:=int | float|char|bool|

<by>:=by

<do>:=do

<othewise >:= othewise

<switch>:=switch

<for>:=for

<from>:=from

<to> :=to

<step>:=step

<oper>:=+|*|/|-

6. Построить ка в форме матрицы:

Входные символы : {var,id, by, crav,do, const, op, ; ,=, othewise, switch, (, ), {, }, : , for, from, to,step ,+,*}

Состояния автомата:

  • S0 – Поступление “var”

  • S1 - Поступление “id”

  • S2 - Поступление “, ”

  • S3 - Поступление “;”

  • S4 - Поступление ключевого слова “by”

  • S5 - Поступление “crav”

  • S6 - Поступление ключевого слова “do”

  • S7 - Поступление “=”

  • S8 - Поступление “(”

  • S9 - Поступление “)”

  • S10 - Поступление “+”

  • S11 - Поступление “*”

  • S12 - Поступление ключевого слова “otherwise”

  • S13 - Поступление “{”

  • S14 - Поступление “}”

  • S15 - Поступление “const”

  • S16 - Поступление “:”

  • S17 - Поступление ключевого слова “for ”

  • S18- Поступление ключевого слова “from”

  • S19- Поступление ключевого слова “to ”

  • S20 - Поступление ключевого слова “step”

  • S21 - Поступление ключевого слова “switch ”

Построение КА в форме матрицы для описания лексического блока

7. Формальная грамматика

T={ var,id, by, crav,do, const, ; ,=, othewise, switch, (, ), {, }, : , for, from, to,step ,+,*}

P: V={Prog, telo, varop, ID, ifop, switchop, byop, forop, block, operand,B,opmult,som}

V0 = <Prog>

1) <Prog> -> <varop><telo>

2)<telo> -> <condop><telo>

-><forop><telo>

-><switchop><telo>

->e

3)<varop> -> var <ID> ;

->var <ID> ; <varop>

4)<ID> -> id | id, <ID>

5)condop -> by ( operan crav operan ) do <block>

->by ( operan crav operan ) do <block> otherwise <block>

6)Switchop -> switch (B) {<byop>}

Byop -> by const : <block>

-> by const : <block> <byop>

7)Forop -> for id from const to const <block>| for id from const to const step const <block>

8)<Block> -> id = <B> ;

->id = <B> ; <block>

9)<В> -> <В> <операция сложения> < оператор умножения>

-> <оператор умножения>

10)<оператор умножения>

-> <оператор умножения> <операция умножения> < сомножитель>

-> <оператор умножения> –> <сомножитель>

11)<сомножитель> -> (<В>)

-> <операнд>

8. Примеры результатов работы Результат реализации лексического блока

  • Входная цепочка

int ab2, d3; float c1;

bool xy4;

by(xy4==yes) do ab2 = 4;

otherwise c1=3 ;

switch (ab2) { by 1 : d3=4 * (c1 + 3); by 2 : c1 =(ab2 + 3) *3; }

for d3 from 0 to 3 ab2 = d3 * 1;

Tvar "int "

Tid "ab2"

Tzap ","

Tid "d3"

Ttochz ";"

Tvar "float"

Tid "c1"

Ttochz ";"

Tvar "bool"

Tid "xy4"

Ttochz ";"

Tby "by"

Tmotron "("

Tid "xy4"

Tcrav "=="

Tconst "yes"

Tdongtron ")"

Tdo "do"

Tid "ab2"

Tpris "="

Tconst "4"

Ttochz ";"

Totherwise "otherwise"

Tid "c1"

Tpris "="

Tconst "3"

Ttochz ";"

Tswitch "switch"

Tmotron "("

Tid "ab2"

Tdongtron ")"

Tmonhon "{"

Tby "by"

Tconst "1"

Tdvetoch ":"

Tid "d3"

Tpris "="

Tconst "4"

Tmult "*"

Tmotron "("

Tid "c1"

Tadd "+"

Tconst "3"

Tdongtron ")"

Ttochz ";"

Tby "by"

Tconst "2"

Tdvetoch ":"

Tid "c1"

Tpris "="

Tmotron "("

Tid "ab2"

Tadd "+"

Tconst "3"

Tdongtron ")"

Tmult "*"

Tconst "3"

Ttochz ";"

Tdongnhon "}"

Tfor "for"

Tid "d3"

Tfrom "from"

Tconst "0"

Tto "to"

Tconst "3"

Tid "ab2"

Tpris "="

Tid "d3"

Tmult "*"

Tconst "1"

Ttochz ";"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]