LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

А если искать надо сразу несколько лексем, выставлять флаги при нахождении, а при некоторых лексемах прерывать поиск?

Есть подозрение, что вы что-то делаете не так. Для начала надо написать грамматику синтаксиса, который собираетесь парсить и всё станет яснее.

В данном случае похоже, что надо искать только лексему окончания, а флаги ставить внутри цикла.

PROCEDURE Syntax (VAR flags: SET);
BEGIN
	WHILE (S.tok # S.nilTok) & (S.tok # S.semicolonTok) DO
		CASE S.tok OF
		| S.aTok: S.Get; INCL(flags, 0);
		| S.bTok: S.Get; INCL(flags, 1);
		| S.cTok: S.Get; INCL(flags, 2);
		ELSE S.Get END;
	END;
	IF S.tok # S.semicolonTok THEN H.Error('";" expected') ELSE S.Get END;
END Syntax;

Исправление X512, :

А если искать надо сразу несколько лексем, выставлять флаги при нахождении, а при некоторых лексемах прерывать поиск?

Есть подозрение, что вы что-то делаете не так. Для начала надо написать грамматику синтаксиса, который собираетесь парсить и всё станет яснее.

В данном случае похоже, что надо искать только лексему окончания, а флаги ставить внутри цикла.

PROCEDURE Syntax (VAR flags: SET);
BEGIN
	WHILE S.tok # S.semicolonTok DO
		CASE S.tok OF
		| S.aTok: S.Get; INCL(flags, 0);
		| S.bTok: S.Get; INCL(flags, 1);
		| S.cTok: S.Get; INCL(flags, 2);
		ELSE S.Get END;
	END;
	IF S.tok # S.semicolonTok THEN H.Error('";" expected') ELSE S.Get END;
END Syntax;

Исправление X512, :

А если искать надо сразу несколько лексем, выставлять флаги при нахождении, а при некоторых лексемах прерывать поиск?

Есть подозрение, что вы что-то делаете не так. Для начала надо написать грамматику синтаксиса, который собираетесь парсить и всё станет яснее.

В данном случае похоже, что надо искать только лексему окончания, а флаги ставить внутри цикла.

Исходная версия X512, :

А если искать надо сразу несколько лексем, выставлять флаги при нахождении, а при некоторых лексемах прерывать поиск?

Есть подозрение, что вы что-то делаете не так. Для начала надо написать грамматику синтаксиса, который собираетесь парсить и всё станет яснее.