Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: Perl Programming Tools - (who, what, where, when, and why)

by John M. Dlugosz (Monsignor)
on Oct 14, 2002 at 19:22 UTC ( #205185=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Perl Programming Tools - (who, what, where, when, and why)
in thread Perl Programming Tools - (who, what, where, when, and why)

Source Insight does more than "just" lexical parsing to highlight keywords. However, it doesn't hook the Perl parsing engine. Admittedly, the concept is much more useful in a strongly-typed language like C++, where I can see a list of available members and word-completion after typing an expression thus-far, because it knows the type of that expression result and can look up the class definition.

For Perl, limited typing of lexicals are available, and simply scanning the Package lexically to find potential member names is not going to work in "fancy" frameworks.

Using Perl's parsing engine is not enough. It would need to execute the script to some point to determine what gets set up on-the-fly in the package's symbol table, and even then, you can't truely know the set of all X where $p->X is legal, because of AUTOLOAD tricks for lazy loading, generation of members on first-use from a declared template, etc.


Comment on Re^3: Perl Programming Tools - (who, what, where, when, and why)
Re: Re^3: Perl Programming ToolsPerl and IDEs
by stefp (Vicar) on Oct 14, 2002 at 19:47 UTC
    Yes, with tied variables, even reading variables can have side effects. I hope that perl6 will be more friendly to IDEs. For example a tied variable that has a side-effect should be flagged as dangerous by an appropriate property.<o> That's my main grief against Perl. Natural languages come with an environment, so should computer languages. Well, perlmonks is a social environment. That's already something. :)

    -- stefp -- check out Nemo

      I don't know if it can!

      If you tie something, you are basically saying that you're implementing the interface for a built-in type, so that value can be stored in any so-typed variable.

      Code is written that uses an INTEGER (In Perl6, the all-cap is the class, and the lowercase is the machine primitive, right?). You pass in a value that is really the Perl6 equivilent of Perl 5's tie feature, whatever it is called (the normal isa/implements syntax should do it, I suppose).

      If assigning a value to it really has bizzare side effects, that code doesn't know it. Neither can a compiler or other tool doing static analysis of the code.

      That's a property of the run-time value, not the lexical variable that holds it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://205185]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (10)
As of 2014-10-23 18:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (126 votes), past polls