首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >antlr或其他工具能为给定的语法生成有效的代码吗?

antlr或其他工具能为给定的语法生成有效的代码吗?
EN

Stack Overflow用户
提问于 2019-01-12 13:03:25
回答 1查看 263关注 0票数 0

我想为树保姆研究java语法,它似乎被放弃了几个月。使用基于属性的测试会很好,所以我考虑是否有一些工具可以以某种方式接受给定的语法,并用来生成随机的AST和代码。

所以这房子看起来就像

代码语言:javascript
复制
data OtherValidJavaAst = undefined
data TreeSitterAst = undefined

transform : TreeSitterAst -> OtherValidJavaAst

genAst : Gen OtherValidAst

genCode : OtherValidAst -> String

parseTreeSitter : String -> TreeSitterAst

parsesEqually : ValidJavaAst -> Boolean
parsesEqually ast = transform (parseTreeSitter (genCode ast)) == ast
EN

回答 1

Stack Overflow用户

发布于 2019-01-13 09:30:41

你所追求的似乎是一种特定语言的句子生成。例如,一段Java代码是整个Java语言的一句话。然而,由于递归和循环,一个给定语法的有效句子的数量实际上是无限的,甚至对于非常基本的语法也是如此。因此,这是一件棘手的事情,而且我不知道有一个工具会这样做,除了我自己写的一个工具(作为我的vscode ANTLR4扩展的一部分),这个工具还在开发中。

但是,您可以通过限制递归和迭代,将生成过程限制在整个语言的子集上。然而,这里的一个重要方面是:什么是语言的良好表现?

这里的另一点也是:您不能使用从语法生成的句子来测试这个语法,因为这总是成功的,因为句子是从该语法生成的,因此必须是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54159852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档