В ходе выполнения работы была изучена структура программных модулей, построенных пакетом ВебТрансЛаб. В работе были рассмотрены графовый и табличный типы реализации конечных автоматов, реализация вызова действий, определенных в таблице лексических правил. Результатом работы являются доработанные лексические правила, отлаженная последовательность автоматов выделяющих символьные константы, с поддержкой экранирования служебных символов.
6.Приложение
<%@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:23:05 по исходному файлу/шаблону laba2_lastversion.xml/lexAsTableSyntAsManySA_to_jsp
//end of Part_1
//Part_2: определения используемых классов
//enf of Part_2
//Part_3: глобальные переменные
final TraceInfo ti=new TraceInfo();
//end of Part_3
//Part_4: лексический анализатор
//Part_4_1: мультиавтоматный ЛА
class fAutomat extends fAutomatAsMTable{
public fAutomat(int no,charToIndex cToI,int[][] ctlTbl,textReader tr){
super(no,cToI,ctlTbl,tr);
}
public fAutomat(charToIndex cToI,int[][] ctlTbl,textReader tr){
super(cToI,ctlTbl,tr);
}
}
//Part_4_1: мультиавтоматный ЛА
class lexAnalyzer{
Stack lexStk=new Stack(); //стек для хранения индексов лексических акцепторов
private fAutomat[] lexAcceptors=new fAutomat[4]; //массив лексических акцепторов
private fAutomat lexAcceptor; //текущий (активный) лексический акцептор
private textReader inp; //входной поток литер
private boolean ignoreLastWord; //флажок необходимости не возвращать (игнорировать) последнюю обнаруженную лексему
private lexem Lexem; //лексема
//набор транслитераторов
private charToIndex charToI0=new charToIndex();
private charToIndex charToI1=new charToIndex();
private charToIndex charToI2=new charToIndex();
private charToIndex charToI3=new charToIndex();
//набор управляющих таблиц
private int[][] controlTable0={
{-1,1,2,-1073741831,-1073741829,-1073741830,-1073741830,-2147483647,-1073741830,7,6,-1073741827,8,5,5,5,4,5,5,5,3,5},
{-2,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2},
{-2,-2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2},
{-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,9,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,10,-2147483647,-2147483647,-2147483647},
{-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,9,-2147483647,-2147483647,-2147483647,11,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647},
{-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,9,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647},
{-4,-4,-4,-4,-4,-4,-4,12,-4,-4,6,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4},
{-6,-6,-6,-6,-6,-1073741832,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6},
{-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-1073741830,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647},
{-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,-2147483647,13,-2147483647,-2147483647,13,13,13,13,13,13,13,13,13},
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.