我想做的是
- 通过我的语法阅读我的 javascript 代码
- 在每个函数的主体内写一个特定的行。
为了。例如输入
function(){
console.log('this is some function');
}
function somefunc (args){
console.log('this is some other function');
function(){
console.log('function inside a function');
}
}
输出
function(){
//auto generated debug log
debug('some text');
console.log('this is some function');
}
function somefunc (args){
//auto generated debug log
debug('some text');
console.log('this is some other function');
function(){
//auto generated debug log
debug('some text');
console.log('function inside a function');
}
}
我能够识别该功能,但无法将所有内容放在一起。我需要一些面包屑来朝着正确的写作语法方向移动,以实现所需的输出。
我的想法是只专注于解析功能并忽略其他所有内容(即将它们转回)本质上是有缺陷的。
到目前为止我所做的是
/* lexical grammar */
%lex
%%
\s+ /* skip whitespace */
"(" return '('
")" return ')'
<<EOF>> return 'EOF'
"function" return 'FUNCTION'
"{" return '{'
"}" return '}'
. return 'ANYTHING'
/lex
/* operator associations and precedence */
%start expr
%% /* language grammar */
expr: any EOF
{typeof console !== 'undefined' ? console.log($1) : print($1);
return $1;}
;
fun: FUNCTION '(' any ')' '{' any '}'
{$$=$1+$2+$3+$4+$5+'console.log(something)'+$6+$7}
;
any: ANYTHING
{$$=$1;}
| any ANYTHING
{$$=$1+$2}
| FUNCTION '(' any ')' '{' any '}'
{$$=$1+$2+$3+$4+$5+'console.log(something)'+$6+$7}
;