是否有可能在BNF中描述一对相同长度的向量?例如,我想使用这样的语法来捕获有效的点积运算,因为这样的操作需要相同长度的向量。
我可以描述一个向量(我认为这没关系):[1,2,3]
<vector> ::= "[" <vectorItems> "]"
<vectorItems> ::= <wholeNumber>|<wholeNumber>","<vectorItems>
但是我怎么能描述下面的内容(也就是说,矢量可以是任意长度,但两个矢量的长度是相同的;这甚至可能吗?我对此有点新意见)?:[1, 2,3,4],[5,6,7,8]
答案 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)
(终端符号以粗体显示)