Javascript 在Jison中使用自定义函数
我正在使用Jison来添加一个新的自定义函数。从下面的示例开始: 如果我在e数组中添加函数的代码,它可以工作:Javascript 在Jison中使用自定义函数,javascript,jison,Javascript,Jison,我正在使用Jison来添加一个新的自定义函数。从下面的示例开始: 如果我在e数组中添加函数的代码,它可以工作: { "lex": { "rules": [ ... ['sin', 'return "SIN";'], ] }, ... "bnf": { ... "e" :[..., ['SIN ( e )', '$$
{
"lex": {
"rules": [
...
['sin', 'return "SIN";'],
]
},
...
"bnf": {
...
"e" :[...,
['SIN ( e )', '$$ = Math.sin($3)']]
}
}
但是,尝试将其添加为自定义函数时失败:
function mySin(x) {
return Math.sin(x);
}
{
"lex": {
"rules": [
...
['sin', 'return "SIN";'],
]
},
...
"bnf": {
...
"e" :[...,
['SIN ( e )', '$$ = mySin($3)']]
}
}
我是Jison的新手,所以可能我做错了什么。我试图在文档和现有问题中找到解决方案,但失败了
欢迎任何提示 我在nodejs/CommonJS模式下运行jison时遇到了类似的问题。我的问题是解析器是在全局范围内运行的,因此我发现如果我使用语法global.myFunction=functionx{}定义函数,那么应该从解析器的操作中引用它们。我想这有点像黑客,我相信其他人可能会有一个更优雅的解决方案
function mySin(x) {
return Math.sin(x);
}
{
"lex": {
"rules": [
...
['sin', 'return "SIN";'],
]
},
...
"bnf": {
...
"e" :[...,
['SIN ( e )', '$$ = mySin($3)']]
}
}