Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 10:55, курсовая работа
В качестве вводной части к курсовому проекту рассмотрим теоретические аспекты лексического и синтаксического анализов.
Лексический анализ – разбиение последовательности символов входного текста на последовательность слов, или лексем.
2.Введение 3
3.Постановка задачи 4
4.Грамматика языка программирования обработки строк 5
5.Описание структуры системы программирования 8
6.Руководство пользователя 9
7.Заключение 10
8.Список использованной литературы 11
Приложение 1. Текст программы 12
Приложение 2. Тестовые случаи 32
/* 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.