相关疑难解决方法(0)

如何从正式语法生成句子?

从语法中生成句子的常用方法是什么?

我想要一种与解析器相反的算法.也就是说,给定一个正式的无上下文语法(比如LL),我想生成一个符合该语法的任意句子.我在这里使用句子来表示任何有效的文本体,因此它实际上可以是一个完整的程序(即使它没有任何意义 - 只要它的语法正确).

示例语法:

program   : <imports> NEWLINE? <namespace>
imports   : ("import" <identifier> NEWLINE)* 
namespace : "namespace " <identifier> NEWLINE "{" <classes> "}" 
identifier: (A-Za-z_) (A-Za-z0-9_)*
...
Run Code Online (Sandbox Code Playgroud)

生成的程序示例:

import jkhbhhuob
import aaaaa888_

namespace u8nFGubgykb
{ class ui0op_np { ... }
}
Run Code Online (Sandbox Code Playgroud)

compiler-construction grammar parsing computer-science

16
推荐指数
2
解决办法
6778
查看次数