所以我现在正在尝试学习AST并且练习了一些简单的功能,比如
var a;
var b;
b = 666
a = b;
print a;
所以在试图了解它之后。我几乎开始理解它,但是当我尝试做这样的功能时问题就出现了:
var a;
var b;
b = 666;
a = b+42*6;
print a;
我遇到麻烦的地方是a = b + 42 * 6我不知道应该如何制作树。我知道该怎么办,如果它们中只有一个像+或*,而不是当它们在一起时。我一直在尝试查看youtube剪辑,其他网站的教程等,但找不到任何类似的东西。
所以我需要你的帮助!
反正。我也有一个语法,但它看起来像图片:)
编辑:
我这样结束了。感觉不对......?
编辑2:
答案 0 :(得分:1)
由于表达式为var array1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12'];
var array2 = ['b1', 'b2', 'b3', 'b4'];
var result = [];
// Values to increase by
var add = [7, 9];
var originalArray1Length = array1.length;
if (array2.length) {
for (var i = 0; i < array2.length; i++) {
if (array1.length != 0) {
// If we're on the first loop we increase by 3 otherwise we get the modulus of the loop
// iteration and use it to reference the "add" array
result = result.concat(array1.splice(0, i == 0 ? 2 : add[i % 2]));
}
result[result.length] = array2[i];
}
} else
result = array1;
document.getElementById('result').innerText = result.join(',');
,您必须先考虑如何自己动手。第一部分是<div id="result"></div>
基于数学规则,所以你把它写成一个表达式(使用你使用的相同术语):
a = b + 42 * 6
此结果将添加到42 * 6
,这是下一个:
expr
/ | \
42 * 6
然后你想将它全部分配到b
,所以添加:
expr
/ | \
b + \
expr
/ | \
42 * 6