Теория языков программирования

Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 10:55, курсовая работа

Краткое описание

В качестве вводной части к курсовому проекту рассмотрим теоретические аспекты лексического и синтаксического анализов.
Лексический анализ – разбиение последовательности символов входного текста на последовательность слов, или лексем.

Содержание

2.Введение 3
3.Постановка задачи 4
4.Грамматика языка программирования обработки строк 5
5.Описание структуры системы программирования 8
6.Руководство пользователя 9
7.Заключение 10
8.Список использованной литературы 11
Приложение 1. Текст программы 12
Приложение 2. Тестовые случаи 32

Прикрепленные файлы: 1 файл

Course_TYAP Зинина Ю.В..doc

— 468.50 Кб (Скачать документ)

  /* Return failure if at end of input.  */

  if (yychar == YYEOF)

    YYABORT;

        }

      else

{

  yydestruct ("Error: discarding", yytoken, &yylval);

  yychar = YYEMPTY;

}

    }

 

  /* Else will try to reuse look-ahead token after shifting the error

     token.  */

  goto yyerrlab1;

 

/*---------------------------------------------------.

| yyerrorlab -- error raised explicitly by YYERROR. |

`---------------------------------------------------*/

yyerrorlab:

 

  /* Pacify compilers like GCC when the user code never invokes

     YYERROR and the label yyerrorlab therefore never appears in user

     code.  */

  if (0)

     goto yyerrorlab;

 

yyvsp -= yylen;

  yyssp -= yylen;

  yystate = *yyssp;

  goto yyerrlab1;

 

/*-------------------------------------------------------------.

| yyerrlab1 -- common code for both syntax error and YYERROR.  |

`-------------------------------------------------------------*/

yyerrlab1:

  yyerrstatus = 3; /* Each real token shifted decrements this.  */

 

  for (;;)

    {

      yyn = yypact[yystate];

      if (yyn != YYPACT_NINF)

{

  yyn += YYTERROR;

  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)

    {

      yyn = yytable[yyn];

      if (0 < yyn)

break;

    }

}

      /* Pop the current state because it cannot handle the error token.  */

      if (yyssp == yyss)

YYABORT;

 

 

      yydestruct ("Error: popping", yystos[yystate], yyvsp);

      YYPOPSTACK;

      yystate = *yyssp;

      YY_STACK_PRINT (yyss, yyssp);

    }

 

  if (yyn == YYFINAL)

    YYACCEPT;

 

  *++yyvsp = yylval;

 

  /* Shift the error token. */

  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);

 

  yystate = yyn;

  goto yynewstate;

 

/*-------------------------------------.

| yyacceptlab -- YYACCEPT comes here.  |

`-------------------------------------*/

yyacceptlab:

  yyresult = 0;

  goto yyreturn;

 

/*-----------------------------------.

| yyabortlab -- YYABORT comes here.  |

`-----------------------------------*/

yyabortlab:

  yyresult = 1;

  goto yyreturn;

 

#ifndef yyoverflow

/*-------------------------------------------------.

| yyexhaustedlab -- memory exhaustion comes here.  |

`-------------------------------------------------*/

yyexhaustedlab:

  yyerror (YY_("memory exhausted"));

  yyresult = 2;

  /* Fall through.  */

#endif

 

yyreturn:

  if (yychar != YYEOF && yychar != YYEMPTY)

     yydestruct ("Cleanup: discarding lookahead",

yytoken, &yylval);

  while (yyssp != yyss)

    {

      yydestruct ("Cleanup: popping",

  yystos[*yyssp], yyvsp);

      YYPOPSTACK;

    }

#ifndef yyoverflow

  if (yyss != yyssa)

    YYSTACK_FREE (yyss);

#endif

  return yyresult;

}

 

#line 34 "bison.txt"

 

Приложение 2. Тестовые случаи

 

Тест 1

Входные данные: На входе корректный файл

DN   1003

     CPND

       NAME Norris Lam

       XPLN 27

       DISPLAY_FMT FIRST,LAST

     VMB

       VMB_COS 4

       SECOND_DN

       THIRD_DN

       VMB_STATE CONFIGURED

TYPE SL1

TN   024 0 06 14 KEY 00 H MARP  DES LAM       29 JUN 2000

     (2008)

 

Выходные данные:

Collation of Directory Numbers with users' names.

 

DN      First name      Last name

=================================

 

1002    BRIAN           WALSH

---------------------------------

1003    Norris          Lam

---------------------------------

1004    IRINA           SEMENYURA

---------------------------------

 

Тест 2

Входные данные: На входе файл с  некорректными данными (отсутствет номер)

DN  

     CPND

      NAME Norris Lam

       XPLN 27

       DISPLAY_FMT FIRST,LAST

     VMB

       VMB_COS 4

       SECOND_DN

       THIRD_DN

       VMB_STATE CONFIGURED

TYPE SL1

TN   024 0 06 14 KEY 00 H MARP  DES LAM       29 JUN 2000

     (2008)

 

Выходные данные:

Collation of Directory Numbers with users' names.

 

DN      First name      Last name

=================================

 

1002    BRIAN           WALSH

---------------------------------

syntax error!

Syntax error[1]!

 

Тест 3

Входные данные: На входе отсутствует файл

Выходные данные:  Error: Can't open file.

 


Информация о работе Теория языков программирования