0

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')、(2) から FOLLOW(DimList) を取ることもあります...

私はまだ LL(1) 文法の基礎を学んでいますが、最初の方がより理にかなっています。

編集: そしてもちろん、これらのどちらも真実ではない可能性があります。

4

1 に答える 1