我正在构建 LISP 解释器。我遇到的问题是我需要在遇到“(”时立即将整个子字符串发送到函数。例如,如果我有,
( begin ( set x 2 ) (set y 3 ) )
那么我需要通过
begin ( set x 2 ) (set y 3 ) )
当我再次遇到“(”时,我需要通过
set x 2 ) (set y 3 ) )
然后
set y 3 ) )
我尝试通过计算长度来使用 substr 这样做,但这并不完全奏效。如果有人可以提供帮助,那就太好了。
请求的代码
int a=0;
listnode *makelist(string t) //t is the substring
{
//some code
istringstream iss(t);
string word;
while(iss>>word){
if(word=="(")//I used strcmp here. Just for the sake for time saving I wrote this
//some operations
int x=word.size();
a=a+x;
word=word.substr(a);
p->down=makelist(word);//function called again and word here should be the substring
}}