Построить синтаксический анализатор для понятия простое_выражение
Категория: Delphi/Pascal
2012-11-12 15:49:42
Построить синтаксический анализатор для понятия простое_выражение, простое выражение ::= простой_идентификатор | (простое_выражение знак_операции простое_выражение); простой идентификатор::= буква; знак_операци::= + | – | *;:eek:
code: #delphi
var source:string; // исходная строка var s1,s2,op:string; source := ' a + x'; // поехли source := TrimLeft(source); s1 := copy(source,1,1); if s1='' then begin //ошибка end; if not(s1[1] in ['A'..'Z','a'..'z']) then begin // первой должна быть буква end; Delete(source,1,1); source := TrimLeft(source); op := copy(source,1,1); if op='' then begin //ошибка end; if not(op[1] in ['+','-','*']) then begin // неизвестный оператор end; Delete(source,1,1); source := TrimLeft(source); s2 := copy(source,1,1); if s2='' then begin //ошибка end; if not(s2[1] in ['A'..'Z','a'..'z']) then begin // теперь снова должна быть буква end; Delete(source,1,1); source := TrimLeft(source); if source<>'' then begin // больше ничего не должно быть end; // s1, s2 - операнды; op - оператор
автор: Vovan-VE
Поделиться: