标签: bnf

用于生成json.org上使用的铁路图的工具

我爱的语法铁路图json.org这是BNF语言的图形表示.我没有找到任何可以雄辩地产生结果的工具.

任何人都可以识别用于生成这些图表的工具吗?

替代文字

替代文字

diagramming bnf

97
推荐指数
5
解决办法
3万
查看次数

什么是常规语言?

我试图理解语言级别的概念(常规,上下文无关,上下文敏感等).

我可以很容易地看清楚这一点,但我发现的所有解释都是一堆符号并谈论集合.我有两个问题:

  1. 你能用语言描述常用语言是什么,以及语言有何不同?

  2. 人们在哪里学会理解这些东西?据我了解,这是正式的数学?我在大学有几个课程使用它,几乎没有人理解它作为导师只是假设我们知道它.我在哪里可以学到它以及为什么人们"期望"在如此多的资源中知道它?就像教育方面存在差距一样.

这是一个例子:

属于该集合的任何语言都是字母表中的常规语言.

语言怎么能"超过"任何东西?

syntax programming-languages bnf regular-language formal-languages

74
推荐指数
2
解决办法
4万
查看次数

这种语言可以用非二义性 BNF 语法来描述吗?

在离开这个话题 20 多年(自从我获得 CS 本科学位以来)之后,我又回到了语言设计/规范(通过 BNF/EBNF 语法)。

我只是模糊地记得这个领域的各种相关术语,比如 LR(1)、LALR 等。我一直在尝试通过一些谷歌搜索和阅读来刷新,但它来得很慢(可能是因为我没有完全理解这些东西回到学校)。所以我可能做事相当粗略。

我决定用语法来描述一种玩具语言,然后尝试分析并可能优化它,作为我重新学习的一部分。

注意:下面的所有片段也可以在此处的要点中找到

我从 EBNF 表示开始(由该工具处理/验证):

Program                 := WhSp* (StmtSemi WhSp*)* StmtSemiOpt? WhSp*;
Stmt                    := AStmt | BStmt | CStmt | DStmt;
StmtSemi                := Stmt? (WhSp* ";")+;
StmtSemiOpt             := Stmt? (WhSp* ";")*;
WhSp                    := "_";
AStmt                   := "a";
BStmt                   := "b";
CStmt                   := "c";
DStmt                   := "d";
Run Code Online (Sandbox Code Playgroud)

以下是该语言的一些有效匹配(每行一个匹配):


_____
;;;;;
_;_;_
a
__a__
a;
a;b;
a;_b;
_a;_b;_
_a_;_b_;_
__a__;;
_;_a;_b;c;;;__;;__d;___a___
Run Code Online (Sandbox Code Playgroud)

这里有一些该语言中没有的值(同样,每行一个):

ab
a_b
a;_b_c
Run Code Online (Sandbox Code Playgroud)

然后我将其手动转换为以下 BNF 形式( …

grammar parsing bnf context-free-grammar

63
推荐指数
1
解决办法
2021
查看次数

Ruby语法

我正在寻找BNF形式的Ruby语法.有正式版吗?

ruby grammar bnf

40
推荐指数
3
解决办法
1万
查看次数

BNF vs EBNF vs ABNF:选择哪个?

我想提出一种语言语法.我已经阅读了关于这三个的一些内容,并且无法真正看到任何人可以做的事情,而另一个人无法做到.有没有理由使用一个而不是另一个?或者只是一个偏好问题?

syntax grammar bnf ebnf

28
推荐指数
2
解决办法
7805
查看次数

BNF文法的知识库?

有没有一个地方我可以找到Backus-Naur Form或BNF语法的流行语言?每当我进行搜索时,我都不会出现太多,但我认为它们必须在某个地方发布.我最感兴趣的是看到一个Objective-C和MySQL.

mysql grammar objective-c bnf

24
推荐指数
3
解决办法
9398
查看次数

正则表达式语法

正则表达式是否有任何BNF语法?

regex grammar bnf

23
推荐指数
3
解决办法
1万
查看次数

如何判断语言是否为LL(1)LR(0)SLR(1)

是否有一种简单的方法来确定语法是LL(1),LR(0),SLR(1)......只是从查看语法而不进行任何复杂的分析?

例如:要确定BNF语法是否为LL(1),您必须计算First和Follow集 - 在某些情况下这可能很耗时.

有谁知道如何更快地做到这一点?真的很感激任何帮助!

theory compiler-construction grammar parsing bnf

23
推荐指数
4
解决办法
3万
查看次数

在哪里可以找到C++语言的标准BNF或YACC语法?

我正在尝试使用一种代码生成器来帮助对传统的C/C++混合项目进行单元测试.我没有发现任何一种独立的工具可以从声明中生成存根代码.所以我决定建立一个,它应该不那么难.

拜托,任何人都可以给我一个标准的语法链接,更好地用yacc语言描述.

希望我不是重新发明轮子,请在这种情况下帮助我.

最诚挚的问候,凯文

c++ yacc bnf

22
推荐指数
1
解决办法
1万
查看次数

C的无上下文语法

我正在研究C的解析器.我正在尝试找到C的所有无上下文派生的列表.理想情况下,它将在BNF或类似的情况下.我确信这样的事情就在那里,但谷歌搜索并没有给我太多.

阅读现有解析器/编译器的源代码已被证明比有用的更令人困惑,因为我发现的大多数都比我正在构建的更加雄心勃勃和复杂.

c bnf context-free-grammar

17
推荐指数
2
解决办法
2万
查看次数