Интерпретатор

Автор работы: Пользователь скрыл имя, 30 Октября 2009 в 19:41, Не определен

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

Пояснительная записка
к курсовому проекту
по дисциплине СПО

Файлы: 1 файл

Отчет4.doc

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

                break;

          case '+':

                y=pop();

                z=pop();

                push(z+y);

                break;

          case '-':

                y=pop();

                z=pop();

                push(z-y);

                break;

          case '*':

                y=pop();

                z=pop();

                push(z*y);

                break;

          case '/':

                y=pop();

                z=pop();

                push(z/y);

                break;

          case EQUAL:

                symtable[lookup(codetable[i].lexptr)].value=pop();

                break;

          case JE:

                y=pop();

                z=pop();

                push(y==z);

                break;

          case JNE:

                y=pop();

                z=pop();

                push(y!=z);

                break;

          case JL:

                y=pop();

                z=pop();

                push(y<z);

                break;

          case JLE:

                y=pop();

                z=pop();

                push(y<=z);

                break;

          case JG:

                y=pop();

                z=pop();

                push(y>z);

                break;

          case JGE:

                y=pop();

                z=pop();

                push(y>=z);

                break;

          case DO:

                if(pop()==1)i=codetable[i].value;// Если условие выполнено - перейти в соответствующую строку

                break;

          case GOTO:

                i=codetable[i].value;

                break;

          case THEN:

                if(pop()==1)i=codetable[i].value;

                break;

          case PRINT:

                printf("%g ",pop());

                break;

          case PRINTN:

                a = pop();

                printf("%d ",a);

                break;

          case INPUT:

                scanf("%lf,",&symtable[lookup(codetable[i].lexptr)].value);

                break;

                }

          i++;

          }

    return 0;

    } 

    void push(double n)//Положить в стек

    {

    stack[j++]=n;

    } 

    double pop()//Извлечь из стека

    {

    j--;

    return stack[j];

    }

 

    errors.c 

    #include"global.h" 

    int error(char *s)

    {

    printf("%s in line %d ",s,lineno);  // вывод сообщения об ошибке в конкретной строке

    getch();

    exit(1);  // выход

    return 0;

    }

 

Список  использованной литературы

  1. А. Ахо, Р. Сети, Д. Ульман Компиляторы: принципы, технологии и инструменты.: Пер. с англ. — М.: Издательский дом "Вильяме", 2003. — 768 с.
  2. Липпман C++ для начинающих. – 1194 с.
  3. Флоренсов А.Н. Операционные системы: Учеб. пос. - Омск: Издательство ОмГТУ, 2005. – 160 с.

Информация о работе Интерпретатор