简体   繁体   中英

Extract function names in python code using javascript regex

I am using prism.js to highlight python code but for some reasons it is not highlighting function names which are called for example deep_flatten() or flatten([1,2,3]) or flatten(list(map(lambda x: x*2,[1,2,3]))) .

So made the following code to overcome this problem

[...document.getElementsByClassName('code')].forEach(x => {
      x.innerText = x.innerText.replace(/(\w+)\([^\(\)]*\)/gi,match=>{
        if(match.match(/^\d/)){
             return match
                              }

        else {
              return `<span class="called-function">${match}</span>`
            }

        }
   })

It works fine for the first two ones but fails for the other two ones. On doing google search I found that this is called something recursive and can be done only with parsers. On searching for python parsers in javscript I found a lot of them but they are very big and for parsing whole code.

How can I make a parser/regex which extracts all function names and encloses them within span tags.

I don't want the specific code just some psuedo-code or algorithm as to how to proceed.

The default re package in std libs can't handle recursive regexes, however seems the regex package can

/(\w+)\([^\(\)]*\)/gi

can be changed to

/(\w+)(\((?:[^\(\)]|(?2))*\))/gi

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM