//Part_6_4: заглушка для случая, когда нет синтаксических правил
public parser(String s){
la=new lexAnalyzer(new textReader(s)); //создание экземпляра лексического анализатора
}
private int getWordIndex(){
currentLexem=la.getLexem();
return currentLexem.groupIndex;
}
public String getStatistic(int i){
if(i==0)
return " "+cCnt+" ";
else
return"";
}
public boolean parse(){
int wi;
while(((wi=getWordIndex())!=0)&&(wi>-100))if(cCnt++>9998)break;
return wi==0;
}
}
//end of Part_6
//Part_7: обработка HTTP-запроса, создание экземпляра синтаксического акцептора/анализатора
//start:
decoderEscaped dE=new decoderEscaped();
String qs="";
if((qs=request.getParameter("inputText"))==null)
if(request.getQueryString()!=null)qs=new String(request.getQueryString());
if((qs!=null)&&(qs.length()>0))
qs=dE.decode(qs).toString();
else qs="";
textReader str=new textReader(qs);
parser p=new parser(qs);
//Part_7_1: HTML-часть страницы, вызов синтаксического анализатора, отображение результатов работы
response.setDateHeader("Expires",0);%>
<html><meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<style type="text/css">
.bd {font-family:Arial,Helvetica,sans-serif;font-size:14;}
.RMn {font-family:Arial,Helvetica,sans-serif;font-size:14;border-collapse:collapse;}
.Hid {display:none}
</style>
</HEAD><body><div class='bd' align=center><u>Лексика</u>: автомат, управляемый таблицей переходов.</div>
<div class='bd' align=center><u>Синтаксис</u>: нисходящий автомат с несколькими состояниями.</div>
<div align=center><textarea id=inpTxt rows=30 cols=160 class=bd style='visibility:hidden'><%=qs%></textarea></div>
<form id=tst method='POST' align=center style='display:none' action='/wtl<%=request.getServletPath()%>'><textarea name=inputText style='display:none'></textarea>
<div align=center><input type=button align=center class=bd onclick='tst.inputText.value=escape(inpTxt.value);tst.submit()' value='Проверить'></div></form>
<div id=rez style='display:none'>
<%if(qs.length()>0){%><div class=bd align=center>Проверяемый текст лексически <%=(p.parse()?"правилен":"неверен")%>.</div>
<table border=1 align=center class=RMn cellspacing=0 cellpadding=0>
<tr><td align=right>Общее количество циклов: <td><%=p.getStatistic(0)%>
</table><%}%>
<table border=1 class=bd style='display:one;border-collapse:collapse'><%=ti.getTraceTable()%></table></div>
</body></html>
<!-- end of Part_7
<!-- Part_8: скрипты для браузера -->
<script><!--
function tresize(){
if(document.body.offsetWidth>100)
inpTxt.style.width=document.body.offsetWidth-40;
if(document.body.offsetHeight>500)
inpTxt.style.height=document.body.offsetHeight-400;
}
--></script>
<script for=window event=onload><!--
inpTxt.style.visibility="visible"
tst.style.display="block"
rez.style.display="block"
tresize();
--></script>
<script for=window event=onresize><!--
tresize();
--></script>
<!-- end of Part_8 -->
<%@page contentType="text/html; charset=Windows-1251"%>
<%@page import="AuxObjects.*"%>
<%@page import="lexAcceptor.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%
//Построено 08.11.2010 13:22:56 по исходному файлу/шаблону laba2_lastversion.xml/lexAsGraphSyntAsManySA_to_jsp
//end of Part_1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.