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

 fAutomat lexAcceptor;           //текущий (активный) лексический акцептор

 lexem Lexem=new lexem();           //текущая лексема

 boolean ignoreLastWord;           //флажок необходимости не возвращать (игнорировать) последнюю обнаруженную лексему

//Part_4_0: данные и методы из правил

int codeCharError = -20000;

Stack stack=new Stack();

String s;

//end of Part_4_0

//Part_4_1: мультиавтоматный ЛА

 Stack lexStk=new Stack();           //стек индексов лексических акцепторов

 fAutomat[] lexAcceptors=new fAutomat[4];  //массив лексических акцепторов

//Part_4_2: конструктор мультиавтоматного ЛА

 public lexAnalyzer(textReader rdr){

  faState state;           //переменная для временного хранения состояния конечного автомата

//дальше идет создание автоматов, их состояний, выходящих из них дуг и запоминание всего этого в соответствующих местах

  lexAcceptors[0]=new fAutomat(0,13,rdr);

   state=new faState(8);

    state.setArc(-1,"");

    state.setArc(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя");

    state.setArc(2,":");

    state.setArc(3,"-\"=\"+*/");

    state.setArc(4,"0123456789");

    state.setArc(5," \r\n\u0009");

    state.setArc(6,"\'");

    state.setArc(7,"()[]{}");

   lexAcceptors[0].setState(0,state);

   state=new faState(3);

    state.setArc(-3,"");

    state.setArc(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя");

    state.setArc(8,"0123456789");

   lexAcceptors[0].setState(1,state);

   state=new faState(2);

    state.setArc(-4,"");

    state.setArc(3,"-\":=\"+*/");

   lexAcceptors[0].setState(2,state);

   state=new faState(2);

    state.setArc(-2,"");

    state.setArc(3,"-\":=\"+*/");

   lexAcceptors[0].setState(3,state);

   state=new faState(3);

    state.setArc(-5,"");

    state.setArc(4,"0123456789");

    state.setArc(9,",");

   lexAcceptors[0].setState(4,state);

   state=new faState(2);

    state.setArc(-6,"");

    state.setArc(5," \r\n\u0009");

   lexAcceptors[0].setState(5,state);

   state=new faState(1);

    state.setArc(-7,"");

   lexAcceptors[0].setState(6,state);

   state=new faState(1);

    state.setArc(-8,"");

   lexAcceptors[0].setState(7,state);

   state=new faState(2);

    state.setArc(10,"0123456789");

    state.setArc(11,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя");

   lexAcceptors[0].setState(8,state);

   state=new faState(1);

    state.setArc(12,"0123456789");

   lexAcceptors[0].setState(9,state);

   state=new faState(3);

    state.setArc(-9,"");

    state.setArc(10,"0123456789");

    state.setArc(11,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя");

   lexAcceptors[0].setState(10,state);

   state=new faState(2);

    state.setArc(-9,"");

    state.setArc(11,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя0123456789");

   lexAcceptors[0].setState(11,state);

   state=new faState(2);

    state.setArc(-10,"");

    state.setArc(12,"0123456789");

   lexAcceptors[0].setState(12,state);

  lexAcceptors[1]=new fAutomat(1,3,rdr);

   state=new faState(2);

    state.setArc(1,"");

    state.setArc(2,"\'");

   lexAcceptors[1].setState(0,state);

   state=new faState(1);

    state.setArc(-2,"");

   lexAcceptors[1].setState(1,state);

   state=new faState(1);

    state.setArc(-3,"");