形如`A[i,j] op B[j,k]`的Einstein求和(`op`为`*|/|//|%`)的计算:为每个不在`LHS`中出现的变量`j`生成一重For循环 TODO: - [x] 确认Einstein求和式中的下标变量范围:变量`r`的范围是否会依赖另一个变量`p`?(e.g. `p in [0,5), r in [0,3), p+r in [0,6)`)/ 是否会生成`for r = 0 to p`的代码 - [ ] 词法分析`RHS`部分修改:引入新的Non-terminal分别表示`RHS +|- RHS`和`RHS *|/|//|% RHS`的情况 - [x] 确认生成的C++代码是否保证Statement都在内循环里 / 是否会出现`A<5,5>[i,j]=D<5,5>[i,j]+B<5,7>[i,k]*C<7,5>[k,j]`的情况 - [x] 汇报bug:BNF无法处理case10括号的情况 建议大家都安装docker跑通代码
形如
A[i,j] op B[j,k]的Einstein求和(op为*|/|//|%)的计算:为每个不在LHS中出现的变量j生成一重For循环TODO:
r的范围是否会依赖另一个变量p?(e.g.p in [0,5), r in [0,3), p+r in [0,6))/ 是否会生成for r = 0 to p的代码RHS部分修改:引入新的Non-terminal分别表示RHS +|- RHS和RHS *|/|//|% RHS的情况A<5,5>[i,j]=D<5,5>[i,j]+B<5,7>[i,k]*C<7,5>[k,j]的情况建议大家都安装docker跑通代码