Главная страница
Навигация по странице:

  • Цепочка вывода и дерево разбора

  • Примеры таблиц идентификаторов и двуместных операций

  • Разработка компилятора модельного языка. Отчет. Пояснительная записка гоу огу 230105. 60. 11. 06 O руководитель работы Ишакова Е. Н. " " 2011г. Исполнитель


    Скачать 1.59 Mb.
    НазваниеПояснительная записка гоу огу 230105. 60. 11. 06 O руководитель работы Ишакова Е. Н. " " 2011г. Исполнитель
    АнкорРазработка компилятора модельного языка
    Дата04.10.2020
    Размер1.59 Mb.
    Формат файлаdoc
    Имя файлаОтчет.doc
    ТипПояснительная записка
    #140979
    страница5 из 8
    1   2   3   4   5   6   7   8

    Приложение Б


    Примеры программ на модельном языке
    Программа, выводящая сумму введённых чисел.

    {

    a, b:integer;

    read(a);

    read(b);

    write(a+b)

    }
    Наибольшее из введенных.

    {

    a,b:integer;

    read(a);

    read(b);

    if a>b then write(a) else write(b);

    }
    Программа нахождения факториала введённого числа.

    {

    a,i,f:integer;

    i ass 2;

    f ass 1;

    while i
    [

    f ass f*I:i ass i+1

    ];

    write(f);

    }
    Проверка введённого числа на простоту.

    {

    n:integer;

    read(n);

    ost:integer;

    prime:boolean;

    prime ass true;

    for i ass 2 to n/2 do

    [

    /* коментарий */

    ost ass n: while ost>i do ost ass ost-i: if ost=0 then prime ass false

    ];

    if prime then write(true) else write(false);

    }

    Программа вычисляющая среднее арифметическое чисел.

    {

    k, n, sum:integer;

    read(n);

    sum ass 0;

    i ass1;

    while i<=n do

    [

    read(k): sum ass sum+k: k ass k+1

    ]

    write(sum/n)

    }

    Приложение В


    Цепочка вывода и дерево разбора
    Построим цепочку вывода и дерево разбора простейшей программы на модельном языке из начального символа грамматики.
    Программа:

    {

    I:integer;

    i as 2+1;

    write(i);

    }

    Цепочка вывода:

    S => {Op1 } =>

    {O1;Op1 } =>{T I1; Op1} =>

    { integer I; Op1} => { integer Ba; Op1} => { integer i; Op1} =>

    { integer i; Op;Op1} => { integer i; Opr;Op1} =>{ integer i; I as V;Op1} =>

    { integer i; Ba as V;Op1} => { integer i; i as V;Op1} => { integer i; i as O;Op1} =>

    { integer i; i as S+O;Op1} => { integer i; i as М+O; Op1} => { integer i; i as Cn+O;Op1} =>

    { integer i; i as Int+O;Op1} => { integer i; i as I10+O;Op1} => { integer i; i as C+O;Op1} => { integer i; i as 2+O;Op1} => { integer i; i as 2+S;Op1} => { integer i; i as 2+М;Op1} => { integer i; i as 2+Cn;Op1} => { integer i; i as 2+Int;Op1} => { integer i; i as 2+I10;Op1} => { integer i; i as 2+C;Op1} => { integer i; i as 2+1;Op1} => { integer i; i as 2+1;Op ;} => { integer i; i as 2+1;Oout;} => { integer i; i as 2+1; write(I1);} => { integer i; i as 2+1; write(Ba);} => { integer i; i as 2+1; write(i);}

    Дерево разбора:



    Приложение Г


    Примеры таблиц идентификаторов и двуместных операций

    Таблица 12 – Таблица идентификаторов на этапе семантического анализа

    Номер

    Идентификатор

    описан

    тип

    1

    a

    1

    integer

    2

    b

    1

    integer

    3

    c

    1

    real

    4

    d

    1

    boolean


    Таблица 13 – Таблица двуместных операций

    Операция

    Тип 1

    Тип 2

    Тип результата

    +, -, *

    integer

    integer

    integer

    /

    integer

    integer

    real

    +, -, *,/

    integer

    real

    real

    +, -, *,/

    real

    integer

    real

    +, -, *,/

    real

    real

    real

    <,>,<=,>=,=

    integer

    integer

    boolean

    <,>,<=,>=,=

    integer

    real

    boolean

    <,>,<=,>=,=

    real

    integer

    boolean

    <,>,<=,>=,=

    real

    real

    boolean

    and, or

    boolean

    boolean

    boolean



    1   2   3   4   5   6   7   8


    написать администратору сайта