は、私はいくつかのCっぽい言語のためのメソッド呼び出しを保持している文字列を考えてみましょうパラメータがトップレベル関数(method1
)に渡されていますか?リターン回数
上記の例では、私は4
の結果を探していることでしょう私も(それがタイプされています想像)メソッドが完了していない場合は正常に機能するには、このソリューションが必要です:
method1(var1, var2, method2(var3, meth
返す3.
私はそこantlrなどのツールを使用して言語を解析することですこれを行うには「正しい」方法を理解し、私は迅速かつ簡単solutがある願っていますこのためのイオン。
はそれで刺しを取った...
function findTopLevelParamCount(s){
//trim top level function away
s = s.substr(s.indexOf('(')+1,s.lastIndexOf(')')-s.indexOf('(')-1);
console.log(s);
while(s.indexOf('(') >= 0){
s = s.substr(0,s.indexOf('(')) + (s.indexOf(')')==-1?'':s.substr(s.lastIndexOf(')')+1));
console.log(s);
}
return s.split(',').length;
}
var code = 'method1(var1, var2, method2(var3, method3(var4, var5)), var6);';
console.log(findTopLevelParamCount(code));
あなたの好奇心の場合は、これは署名ヘルプサポート
アップデートを提供していますvscode拡張のためであります
D署名が完了していない場合はうまくいきません。また、method1(var1, (var1-va2))
のようなパレスチェスの分類で壊れます。
私は自分のタイトルを知っていますか...プログラミング言語の概念に関連する問題を記述するのは難しい – NSjonas
なぜこの質問はダウンボートになるのですか?問題の声明ははっきりしていて、私はすでに試したことに大きな詳細を列挙しました。そして@DouglasDaseecoなぜあなたはあなたの答えを削除しましたか?それは質問に追加され、他の人が役に立つと思うかもしれませんか? – NSjonas
@FauChristianあなたは何について話していますか?私は "パーサー"を求めていません。私は、私が十分に定義した非常に単純な文法の出現回数を数える素早く汚い方法を具体的に求めました。問題は、非常に特定の問題を解決する方法を尋ねることです。前回私はそれがSOのガイドラインの範囲内にあることを確認しました。 あなたはあなたがやっているすべての仕事にこの過剰設計のアプローチを取っていますか? 最近、スタックのオーバーフローは非常に有毒なのですか? – NSjonas