2014-10-29 84 views
0

我刚刚写了一些BNF,我是一个noobie,所以我想和你们核对一下,如果这是有效的语法,并且提供的输入可以运行?这个有效的BNF语法?

BNF:

<expr> -> <id> <id> + <id> + | <id> <id> + <id> - | <id> <id> - <id> + | <id> <id> - <id> - 
<id> -> A | B | C 

我的后缀输入:

A B + C -

将这项工作?提前致谢。

回答

0

符号和表达式之间的有效分隔符是::=而不是->。 查看详情wikipedia

不管怎么说,更好的语法是这样的:

<expr> ::= <id> [ <id> [ <operator> ]? ]{2} 
<operator> ::= '-' | '+' 
<id> ::= [ '0' .. '9' | 'A' .. 'Z' | 'a' .. 'z' ]+ 
+0

请问我当前的代码工作中使用':: ='虽然?我试图找出我是否有正确的想法。我现在不是真的想制作漂亮的语法。 – nward17 2014-10-29 10:18:42

+0

我不知道。 BNF是一个标准,就像你定义一个协议但在这里用于语言语法一样。什么是你使用的解析器? – 2014-10-29 10:19:22

+0

我没有使用解析器。我现在实际上是在学习BNF,而我的教授只是让我们在没有测试的情况下编写语法。我正在做的特定问题是“在BNF中编写一个语法,用于后缀加减 仅涉及变量A,B和C的表达式”。 – nward17 2014-10-29 10:21:47