On 14 December 2010 22:03, Etienne MELEARD <[email protected]> wrote: > Le 14/12/2010 11:58, Lex Trotman a écrit : >> >> On 14 December 2010 21:38, Murray Collingwood >> <[email protected]> wrote: >> >>> >>> Hi Lex >>> >>> Thanks for your response. >>> >>> One simple solution would be to drop the trailing bracket from the regex. >>> Do you think this would be an acceptable change? >>> >> >> Unfortunately then the parser would not be able to identify the >> argument list for one line declarations (notice that the \\(.*\\) is >> in () as a capture group) and that would mean no arglist, or worse an >> incorrect arglist, for those declarations that work right at the >> moment. >> >> Maybe the regex could be changed to \\([^)]\\)? making the ) optional >> and if its not there counting all the rest of the line as the >> arguments. Its not pretty, but at least the function should be >> recognised. >> >> Anyone else's thoughts? >> >> Cheers >> Lex >> >> PS I don't know much PHP, but I should note that if a ) can occur >> anywhere in the declaration then no regex is correct. >> > > Yeah, declarations can be like this to describe optionnal arguments and > their default values : > > function foo($arg1, $arg2 = array('random', 'stuff'), $arg3 = 'bar') { > // ... > } > > Hope im clear enough ...
Thanks, clearly nested brackets and multiline declarations are beyond the regex system. It needs someone with C and PHP capability to create a proper parser similar to the one used for C. Cheers Lex >> >> >>> >>> Cheers >>> Murray >>> >>> >>> On 14 December 2010 18:34, Lex Trotman<[email protected]> wrote: >>> >>>> >>>> On 14 December 2010 18:23, Murray Collingwood >>>> <[email protected]> wrote: >>>> >>>>> >>>>> Hello (first time on this list) >>>>> >>>>> Just a question, maybe something I can hack, maybe something somebody >>>>> else >>>>> needs to hack? >>>>> >>>>> I have php code that looks like this: >>>>> >>>>> function puctstatus($puctid) { >>>>> ... >>>>> } >>>>> >>>>> The 'Symbols' list in the sidebar then lists for me the function name >>>>> and >>>>> all is good. >>>>> >>>>> However if my code is like this: >>>>> >>>>> function puctstatus($puctid, >>>>> $category, >>>>> $flags) { >>>>> ..... >>>>> } >>>>> >>>>> Then the function is not recognised and does not appear in the symbols >>>>> list. >>>>> >>>>> Is there a file somewhere full of regex type codes that I can edit to >>>>> modify >>>>> this or is it all hardcoded in a program somewhere? >>>>> >>>> >>>> Yes there is a regex, but its hard coded. >>>> >>>> This is it, where ALPHA and ALNUM are the ranges you would expect >>>> >>>> "^[ \t]*[(public|protected|private|static|final)[ \t]*]*[ >>>> \t]*function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM >>>> "_]*)[[:space:]]*(\\(.*\\))" >>>> >>>> I'd guess the problem is that \\(.*\\) matches anything in () after >>>> the function name but the regex code only matches against a line at a >>>> time and has no way of continuing the match beyond a line. >>>> >>>> The only way to go beyond a line seems to be to use a character by >>>> character hardcoded parser such as C uses. >>>> >>>> In tagmanager/php.c there is a bunch of code that looks like someone >>>> started to do it, status unknown. >>>> >>>> Cheers >>>> Lex >>>> >>>> >>>>> >>>>> Cheers >>>>> mc >>>>> >>>>> >>>>> >>>>> -- >>>>> Murray Collingwood >>>>> Focus Computing >>>>> p +61 415 24 26 24 >>>>> http://www.focus-computing.com.au >>>>> >>>>> _______________________________________________ >>>>> Geany mailing list >>>>> [email protected] >>>>> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany >>>>> >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Geany mailing list >>>> [email protected] >>>> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany >>>> >>> >>> >>> -- >>> Murray Collingwood >>> Focus Computing >>> p +61 415 24 26 24 >>> http://www.focus-computing.com.au >>> >>> _______________________________________________ >>> Geany mailing list >>> [email protected] >>> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany >>> >>> >>> >> >> _______________________________________________ >> Geany mailing list >> [email protected] >> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany >> >> > > _______________________________________________ > Geany mailing list > [email protected] > http://lists.uvena.de/cgi-bin/mailman/listinfo/geany > _______________________________________________ Geany mailing list [email protected] http://lists.uvena.de/cgi-bin/mailman/listinfo/geany
