如何找到递归语法的第一个集合



>我有一个语法:

S → SL | ε
L → A; | E; | C;
E → (EBE) | N | V
A → let V =E
C → while E do S | while E do S else S
B → + | - | * | >
V → x | y | z
N → ND | N0 | D
D → 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

我正在尝试为我构建解析表,以便能够证明它不是 LL(1( 语法。我目前无法找到 S 的第一个集合。我一直在集合中得到 S,但无法到达 G 的终端。FIRST(SL(会是什么?

当我做 FIRST(SL( 时,我会一直回到 FIRST(S(,它会回到 FIRST(SL( ⋃ FIRST(ε( = FIRST(S(⋃ {ε},FIRST(S( 会一遍又一遍地重复。

大写字母表示非终端。 小写字母表示终端。

第一个和后面是终端或非终端之前或之后的 TERMINAL 符号(在解析树的预序遍历中(。

For all A -> xYZ
First (A) = {x}
For all A-> Xyz
First (A) = First(X)
For all A-> εYZ
First (A) = First(Y)

取所有这些终端符号的并集。

相关内容

最新更新