parsing - LL(1)、LR(1)、LR(0)、LALR(1) 语法示例?

标签 parsing grammar lalr lr-grammar ll-grammar

是否有一个很好的在线资源,其中包含一些主要解析算法(LL(1)、LR(1)、LR(0)、LALR(1))的语法集合?我发现了许多属于这些家族的单独语法,但据我所知,没有什么好的资源可以让人编写大量示例语法。

有人知道这样的资源吗?

最佳答案

来自维基百科的示例

LL(1)

语法

S -> F
S -> ( S + F )
F -> a

输入

( a + a )

解析步骤

S -> "(" S "+" F ")"
  -> ( "F" + F ) 
  -> ( "a" + F ) 
  -> ( a + "a" )       

LR(0)

语法

(1) E → E * B
(2) E → E + B
(3) E → B
(4) B → 0
(5) B → 1 

输入

1 + 1

解析步骤

need to build a parser table and traverse through states.

LR(1)

语法

S’ -> S S 
S  -> C C 
C  -> c C | d

输入

cd

解析步骤

large table

LALR

语法

A -> C x A | ε
B -> x C y | x C
C -> x B x | z

输入

xxzxx

解析步骤

traverse large parser table

您可能还想看看

关于parsing - LL(1)、LR(1)、LR(0)、LALR(1) 语法示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480634/

相关文章:

parsing - yacc/bison LALR(1) 算法如何处理 "empty"规则?

c# - C#的lambda表达式语法是LALR(1)吗?

python - 解析python中的配置设置

c - C 在编译过程中何时需要空格(或括号)?

java - 如何在Java中解析JSON

antlr - 在从词法分析器中跳过 WS 时编写对空格敏感的解析器规则

c# - C#中的语法生成类实现

android - 如何从 json 数组中检索数据

php - 开源语法检查器

parsing - LALR(1) 函数参数的空列表