Методы трансляци

Автор работы: Пользователь скрыл имя, 04 Октября 2010 в 16:14, Не определен

Описание работы

Транслятор с псевдоязыка на Си

Файлы: 1 файл

отчет Методы трансляции.doc

— 99.00 Кб (Скачать файл)

Программа на выходном языке (подмножество языка С) test.c :

    #include <stdio.h>

    int main()

    {

      int stack[1000],mem[1000],top=0;

      printf("Sokraschenie drobei\n");

      printf("Vvedite chislitel'");

      scanf("%d",&mem[0]);

      printf("Vvedite znamenatel'");

      scanf("%d",&mem[1]);

      stack[top]=mem[0];

      top+=1;

      top-=1;

      mem[2]=stack[top];

      stack[top]=mem[1];

      top+=1;

      top-=1;

      mem[3]=stack[top];

      stack[top]=mem[2];

      top+=1;

      stack[top]=mem[3];

      top+=1;

      top-=1;

      stack[top-1]=stack[top-1]>=stack[top];

      top-=1;

      if(stack[top]) goto label0;

      stack[top]=mem[3];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[4]=stack[top];

      goto label1;

    label0:

      stack[top]=mem[2];

      top+=1;

      stack[top]=mem[3];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[4]=stack[top];

    label1:

    label3:

      stack[top]=mem[4];

      top+=1;

      stack[top]=0;

      top+=1;

      top-=1;

      stack[top-1]=stack[top-1]>stack[top];

      top-=1;

      stack[top]=!stack[top];

      if(stack[top]) goto label2;

      stack[top]=mem[3];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]=stack[top-1]>=stack[top];

      top-=1;

      if(stack[top]) goto label4;

      stack[top]=mem[2];

      top+=1;

      stack[top]=mem[3];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[2]=stack[top];

      goto label5;

    label4:

      stack[top]=mem[3];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[3]=stack[top];

    label5:

      stack[top]=mem[2];

      top+=1;

      stack[top]=mem[3];

      top+=1;

      top-=1;

      stack[top-1]=stack[top-1]>=stack[top];

      top-=1;

      if(stack[top]) goto label6;

      stack[top]=mem[3];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[4]=stack[top];

      goto label7;

    label6:

      stack[top]=mem[2];

      top+=1;

      stack[top]=mem[3];

      top+=1;

      top-=1;

      stack[top-1]-=stack[top];

      top-=1;

      mem[4]=stack[top];

    label7:

      goto label3;

    label2:

      stack[top]=mem[0];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]/=stack[top];

      top-=1;

      mem[0]=stack[top];

      stack[top]=mem[1];

      top+=1;

      stack[top]=mem[2];

      top+=1;

      top-=1;

      stack[top-1]/=stack[top];

      top-=1;

      mem[1]=stack[top];

      printf("NOD=");

      stack[top]=mem[2];

      top+=1;

      top-=1;

      printf("%d",stack[top]);

      printf("\ndrob' \n");

      stack[top]=mem[0];

      top+=1;

      top-=1;

      printf("%d",stack[top]);

      printf("\\");

      stack[top]=mem[1];

      top+=1;

      top-=1;

      printf("%d",stack[top]);

      return 0;

    } 
     
     
     
     

    Результат работы:

     

     

Список литературы 

  1. Гордеев А. В., Молчанов А. Ю. Системное программное  обеспечение. – СПб.: издательство «Питер», 2001. – 736 с.
  2. Доннелли Чарльз, Столлмен Ричард. Bison. – http://www.opennet.ru/docs/RUS/bison_yacc/bison_toc.html
  3. Мартин Браун. Создание анализаторов текста при помощи yacc и lex. –http://www.ibm.com/developerworks/ru/edu/au-lexyacc/index.html
  4. Свердлов С. Введение в методы трансляции: учебное пособие. – Вологда: издательство «Русь», 1994. – 80с.
  5. Свердлов С. З. Языки программирования и методы трансляции: учебное пособие. – СПб.: издательство «Питер», 2007. – 640с.

Информация о работе Методы трансляци