262
правки
Изменения
м
→Псевдокод
====Псевдокод====
<wikitex>
Псевдокод построения множеств $closure$ и $goto$, а также множества наборов ситуаций $items$ для грамматики $\Gamma' =\langle\Sigma, N, S, P\rangle$:
<code>
'''item'''[] closure('''item'''[] $I$):
changed = ''false''
'''for''' $[A\rightarrow\alpha\cdot B\beta, a]\in I$
'''for''' $(B\rightarrow\gamma)\in G\Gamma'$
'''for''' $b\in FIRST(\beta\alpha)$
$J$.add($[B\rightarrow\cdot\gamma,b]$)
</code>
<code>
'''item'''[][] items($G\Gamma'$):
'''bool''' changed
'''item'''[][] $C = \{closure({S'\rightarrow\cdot S,\char36})\}$
changed = ''false''
'''for''' '''item'''[] $I\subset C$
'''for''' $X \in G\Sigma(\Gamma')$ <font color="green">//по всем символам грамматики</font>
'''if''' $goto(I,X)\neq\varnothing$ and $goto(I,X)\not\subset C$
$C$.add($goto(I,X)$)