ε 是上下文无关终端吗?

Is ε terminal in context-free?

R: S ---> aSb
   S ---> SS
   S ---> ε

这些表达式的语法应该怎么写?

这样写是真的吗?

G = ({S}, {a, b}, {S ---> aSb, S ---> SS, S ---> ε}, {S})

或像这样(将 epsilon 添加到终端):

G = ({S}, {a, b, ε}, {S ---> aSb, S ---> SS, S ---> ε}, {S})

哪个是正确的?

ε 是一种使零长度序列可见的方法。它不是文法符号。

实际的生产是:S →  ——也就是说,S什么都不能生产——但是什么都看不见,所以很难阅读。所以我们通常写ε,这样更易​​读。不过,你应该把它当成空来阅读。