Вычисление наборов FIRST & FOLLOW грамматики

У меня есть следующая грамматика:

S -> aXab
S -> Y
X -> bYa
X -> epsilon
Y -> Sc

Я вычислил первый и последующие наборы для этой грамматики, и я хотел бы знать, правильно ли это. Вот мое решение:

First Sets:
S -> {a} 
X -> {b,epsilon}
Y -> {a}

Follow Sets:
S -> {$,c} 
X -> {a}
Y -> {c,a}

Любая помощь приветствуется. Спасибо.


person nz881    schedule 08.12.2019    source источник


Ответы (1)


ПЕРВЫЕ наборы правильные. FOLLOW(Y) должен быть {$,c,a}

FOLLOW(A) определение

FOLLOW(A) of non-terminal A is the set of terminal symbols that can follow in the   
derivation sequence

СЛЕДУЙТЕ (Y), проверьте, где он находится с правой стороны

        1) X -> bYa

когда это произведение берется для вывода, то, что следует за Y, является «а»

        2) S -> Y

когда это произведение берется для вывода, то, что следует за Y, есть то, что когда-либо следовало за S. FOLLOW(S)={$,c}

     FOLLOW(Y)={$,a,c}
person Venkatesh Nandigama    schedule 09.12.2019