Изучение конечных автоматов без памяти, способов определения КА – канонического, графового и табличного, методов построения недетерминированного КА по системе регулярных выражений, страница 12

   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_5

//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);

//end of Part_6

//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.*"%>

<%

//Построено 03.10.2010 19:02:38 по исходному файлу/шаблону mainframe2.xml/lexAsGraphSyntAsManySA_to_jsp

//end of Part_1

//Part_2: определения используемых классов

class fAutomat extends fAutomatAsGraph{

 public fAutomat(int no,int stCnt,textReader tr){

  super(no,stCnt,tr);

 }

 public fAutomat(int stCnt,textReader tr){

  super(stCnt,tr);

 }

}

//end of Part_2

//Part_3: глобальные переменные

final TraceInfo ti=new TraceInfo();

//end of Part_3

//Part_4: лексический анализатор

class lexAnalyzer{