语法LL(1)的制作方法

时间:2019-03-18 12:01:31

标签: parsing grammar

我想知道是否有可能将此语法转换为LL(1)。这是语法:

A -> B
   | C

B -> a 
   | a ';'

C -> a D
   | a D ';'

D -> ';' a
   | D ';' a

2 个答案:

答案 0 :(得分:1)

由于该语言是常规语言(a; | a(;a)+;?,所以可以,

不确定我是否使用了正确的语法,但是该语言基本上是a;(使用A-> B)或任何以a开头的字符串,然后是一个或多个{{ 1}}对,可选地在末尾添加另一个;a

答案 1 :(得分:0)

This is the same grammar but simpler: A -> a | a ';' | a ';' A

It still not LL(1). But removing left factor now it is LL(1): A -> a B B -> ε | ';' C C -> ε | A