Лабораторная работа: Трансляция распознающих конечных автоматов
* Start – начальное состояние;
* InDigit – прочитана цифра;
* AfterDigit – прочитан разделитель после цифры;
* InOp – прочитан символ арифметической операции;
* InLPrnt – прочитана открывающая скобка;
* InRPrnt – прочитана закрывающая скобка.
}
const
resLPrntMissing = -1;
resRPrntMissing = -2;
var
State : TState;
i, ParCount, Numbthk : Integer;
begin
Result := 0;
ParCount := 0; // счетчик скобок
State := Start;
for i := 1 to Length(S) do
case State of
Start: // входное состояние
caseS[i] of
' ': ; // состояние не меняется
'0'..'9' : State := InDigit;
'-' : State := InOp; // символ '-' перед числом или скобкой
'(' :
begin
Inc(ParCount);
State := InLPrnt;
end;