BNF用于创建长度相同的矢量

时间:2011-10-11 09:03:06

标签: grammar bnf

是否有可能在BNF中描述一对相同长度的向量?例如,我想使用这样的语法来捕获有效的点积运算,因为这样的操作需要相同长度的向量。

我可以描述一个向量(我认为这没关系):[1,2,3]

<vector> ::= "[" <vectorItems> "]"
<vectorItems> ::= <wholeNumber>|<wholeNumber>","<vectorItems>

但是我怎么能描述下面的内容(也就是说,矢量可以是任意长度,但两个矢量的长度是相同的;这甚至可能吗?我对此有点新意见)?:[1, 2,3,4],[5,6,7,8]

1 个答案:

答案 0 :(得分:2)

这样的东西?

  S := [T]
  T := N,T,N | N],[N
  N := (any valid number)

  Nonterminals: S, T, N
  Terminals: [ ] , # (anything required by your definition of N)

此语言中的字符串按从小到大的顺序排列,其中N代表任意数字:

L = { [N],[N] [N,N],[N,N] [N,N,N] ,[N,N,N] ,...}

= {aBcDe | a = [和c = ],[和e = ] 和B =( N,)^ k N 和D =( N,)^ k N 和k> 0)

(终端符号以粗体显示)

相关问题