Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing LL(1)解析冲突_Parsing_Ll - Fatal编程技术网

Parsing LL(1)解析冲突

Parsing LL(1)解析冲突,parsing,ll,Parsing,Ll,我正在为一个非常简单的语法编写一个LL(1)解析器。然而,我在尝试构建解析表时发现了冲突 我很惊讶,因为语法似乎很简单。我不知道我是否对解析器或对LL(1)解析的理解有问题。也许最后语法不是LL(1) 语法是: 1: S -> begin list 2: list -> id listPrime 3: listPrime -> id listPrime 4: | ε 我的代码遇到两个冲突,都是为了派生listPrim

我正在为一个非常简单的语法编写一个LL(1)解析器。然而,我在尝试构建解析表时发现了冲突

我很惊讶,因为语法似乎很简单。我不知道我是否对解析器或对LL(1)解析的理解有问题。也许最后语法不是LL(1)

语法是:

1: S         -> begin list
2: list      -> id    listPrime
3: listPrime -> id    listPrime
4:            | ε
我的代码遇到两个冲突,都是为了派生
listPrime
,一个是终端符号
id
,另一个是
EOF
。在这两种情况下,规则3都与规则4相冲突

我计算的
第一组
第二组
是:

first:
   { S: Set { 'begin' },
     list: Set { 'id' },
     listPrime: Set { 'id', 'eps' } },

follow:
   { S: Set { 'EOF' },
     list: Set { 'EOF', 'id' },
     listPrime: Set { 'EOF', 'id' } } }

语法是LL(1)。您的FOLLOW set计算不正确,这很容易验证:没有任何派生在
list
listPrime
后面跟一个令牌,而不是
EOF

谢谢!在意识到FOLLOW是错误的之后,我很快就修复了bug