问题标签 [grammar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grammar - 语法写作工具
我正在尝试在 EBNF 中编写语法(除非有很好的理由,它必须是 EBNF)并且正在为它寻找一些实用程序 - 如果有一个可以制作的 GUI 界面,那就太好了,但是我最想找的是可以检查语法的东西,例如看它是否是 LALR( n ),如果是,n的值是多少。是否存在这样的实用程序?还有其他我应该知道的有用的语法编写工具吗(我不是在寻找解析器生成器)。
regex - 正则表达式 BNF 语法
有没有正则表达式的 BNF 语法?
java - 如何在 ANTLR 中指定令牌的确切出现次数?
我必须定义一个文件的语法,如下所示。
//示例文件
NameCount = 4
Name = a
Name = b
Name = c
Name = d
//文件结束
现在我可以为NameCount和Name定义标记。但是我必须定义文件结构,包括令牌Name的有效实例数,这是NameCount之后的值。我将值解析并转换为整数并存储在语法全局范围内的变量中(比如变量nc)。
如何在语法中定义Name应该精确重复nc次?
java - 编译 ANTLRWorks 生成的类文件
我正在使用 ANTLRWorks 创建 ANTLR 语法。我有一个有效的语法,并且也生成了解析器和词法分析器源文件。我还尝试调试生成的代码,并且输出与调试器输出中的预期一致。
但是当我尝试调用调试器生成的 __Test__ 类时,控制台中没有任何内容。我已经正确设置了类路径,因为我可以使用相同的类路径成功编译 __Test__.java。
会有什么问题?是否有使用 antlr 和 antlrworks 编写和编译示例解析器的清晰教程?
mysql - BNF 语法库?
有没有地方可以找到流行语言的 Backus–Naur 形式或 BNF 语法?每当我进行搜索时,我很少出现,但我认为它们必须在某个地方发布。我最感兴趣的是看到一个用于 Objective-C 和 MySQL 的。
compiler-construction - 语法实现中文件描述符的结尾
我正在研究编译器实现并希望检查是否已到达文件末尾?
我知道这可以使用 lex 文件中的 yywrap() 函数来完成,但要求是如果 EOF 被显式定义为十六进制值 0x1a,那么我们如何引用它。
例子:
main() { printf("检查 EOF 标记\n"); '0x1a' <-- 实际的 EOF 标记。
我希望上面不是语法错误,而是报错括号不平衡,或者定义错误。
以上可以吗?我的要求只是在解析器中包含 EOF 令牌,不幸的是,到目前为止我还不能这样做:-((,其余的工作将很容易完成,我只需要给出一个规则如:
closures - 闭包和上下文无关语法
我正在查看我的理论计算机科学课程的教学大纲,并在上下文无关语法的标题中列出了“闭包属性”。我翻阅了关于这个主题的教科书,发现很少。目前它所拥有的东西有点超出我的想象(我还没有上过这门课程),但我了解一点。
我想知道上下文无关语法中的闭包概念是否与函数式编程中的闭包概念相同或相关。据我所知,它谈到了结合语法和解决重叠问题。书中的部分有很多部分我还不明白,所以我不确定这些想法是否相同。
(更多背景信息:我正在给教授写一封电子邮件,询问是否可以将课程从 Perl 切换到 Ruby 或 Python。如果这些概念相关,那可能是我们应该使用 Ruby 而不是 Perl 的另一个原因。)
parsing - 如何判断一种语言是否为 LL(1) LR(0) SLR(1)
是否有一种简单的方法可以确定语法是否为 LL(1)、LR(0)、SLR(1)... 只需查看语法而不进行任何复杂的分析?
例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Follow 集——在某些情况下这可能很耗时。
有没有人知道如何更快地做到这一点?任何帮助将不胜感激!
lisp - yacc 中的 Lisp 语法
我正在尝试构建 Lisp 语法。容易,对吧?显然不是。
我提出这些输入并收到错误...
这是语法...
据我所知,我需要一个定义为程序的非终端,整个解析树都可以挂在上面。但我试过了,它似乎没有用。
编辑 - 这是我的“顶级终端”方法:
但它允许出现以下问题:
Edit2: FLEX 代码是...
过度匹配的一个例子......
这里有什么错误?
编辑:错误在词法分析器中。
datetime - 时间/日期范围语法
我需要解析包含时间跨度的字符串,例如:
- 星期四 6:30-7:30 AM
- 2009 年 12 月 30 日 - 2010 年 1 月 1 日
- 2009 年 1 月 15 日,晚上 7:30 至 8:30
- 星期四,早上 6:30 到 7:30
- 和别的...
添加
- 6:30 至 7:30
和日期/时间,例如 Word 的 insert->date 可以生成的大多数情况
如果有任何东西涵盖了我需要涵盖的所有案例,我会感到非常惊讶,因此我正在寻找语法开始。