LL (1) Грамматика:Объяснение на этой первой функции
(1) Var -> ID DimList
(2) DimList -> ε DimList'
(3) DimList' -> Dim DimList'
(4) DimList' -> ε
(5) Dim -> [ CONST ]
И, в сценарии, что я читал, это говорит о том, что функция FIRST(ε DimList')
дает {#, [}
. Но как?
Я думаю, что, так как правая часть (2) начинается с ε
, он пропускает эпсилон и принимает FIRST(DimList')
что, учитывая (3) и (5), равный {[}
, но и, в силу (4) , принимает FOLLOW(DimList')
, который составляет {#}
.
Другой способ это может быть в том, что, так как (2) начинается с ε
он пропускает эпсилон и принимает FIRST(DimList')
НО принимает FOLLOW (DimList) из (2) ...
Первый один имеет больше смысла для меня , хотя я все еще в процессе изучения основ грамматики LL (1), поэтому я был бы признателен, если кто-то найдет время, чтобы сделать это ясно, спасибо.
EDIT: И, конечно, это может быть так, что ни одно из них не является истинным.