寻找一个解决方案,使用像PegJS (对其他建议开放)这样的东西来递归查找和扩展变量。
程序可以将变量设置为其他变量或一个数字
给定一个这样的结构:
{$a: '1', $b: '$a + 2', $c: '$b + 10'}
$a
// looks up $a, expands to 1
$b
// looks up $b, finds $a + 2, looks up $a and expands to 1 + 2
$c
// looks up $c, finds $b + 10, looks up $b and finds $a + 2, looks up $a and expands to 1 + 2完成此任务的最佳方式(工具或其他方式)是什么?
发布于 2018-03-08 23:10:47
这里有一个简单的解决方案,可能会让你入门。在初始化器中定义obj = {},因为您希望在解析时保持对象可用,以便在找到键时对其进行缓存。
{
var obj = {};
}
obj =
"{" _* keyPair* "}"
{
return obj;
}
keyPair =
key:key ":" _* val:singleQuoted _*
{
obj[key] = val;
}
key =
$("$" word)
expression =
key:key _* "+" _* num:num
{
return obj[key] + num;
}
singleQuoted =
"'" exp:(expression / num) "'" ","?
{
return exp;
}
num =
num:$([0-9]+)
{
return parseInt(num);
}
word =
$([A-Za-z]+)
_ =
" "https://stackoverflow.com/questions/49102850
复制相似问题