develooper Front page | perl.perl6.language | Postings from April 2005

Re: embedding languages in Perl 6

Thread Previous | Thread Next
From:
BÁRTHÁZI András
Date:
April 20, 2005 09:56
Subject:
Re: embedding languages in Perl 6
Message ID:
426689DC.1090107@barthazi.hu
Hi,

> : I'm just wondering, if the following would be possible with Perl 6 or not?
> : 
> : > XML
> : 
> : $a=<elems><elem>Content #1</elem><elem>Content #2</elem></elems>;
> : 
> : say $a.elems[0].elem[1].content; # "Content #1"
> : 
> : for ($a.elems) { say $_.content; }
> : 
> : or XPath like syntax on a structure?
> 
> That's somewhat ambiguous with our current qw// notoation.

Yes, I've realized it. One of the reason of my mail was this.

> : > SQL
> : 
> : $a=select * from table;
> : for(select * from table where id>5) {
> :   say $_.id ~ ' -> ' $_.value;
> : }
> 
> That one would be pretty easy to do with a "select" macro, if you could
> figure out how to terminate the SQL parse.

It ends, when a non opened ')', a ';' or a '}' is coming. Of course, 
that's not all cases, but it seems to be not so hard to find the all 
possible cases.

> : The ideas coming from Comega, the next version of CSharp(?). Here's an 
> : intro about it:
> : 
> : http://www.xml.com/pub/a/2005/01/12/comega.html?page=2
> : 
> : Or just search for "comega" with you favourite search engine.
> : 
> : The first one, creating native XML support for a language is not new, 
> : E4X (EcmaScript for XML) is about the same:
> : 
> : http://www.ecma-international.org/publications/standards/Ecma-357.htm
> : 
> : I think both about macros, and it seem's it will be possible extend Perl 
> : 6 with them. But what do you think about extending Perl 6 (or Perl 6.1) 
> : with native XML handling, like it's native regular expression / rule 
> : handling?

Let me note, that E4X is not just about declaring, but processing, too.

> We should avoid installing fads or domain-specific sublanguages into
> Standard Perl 6, but it's easy enough to change the language with a
> single "use" or macro.  I see that doing select is trivial and doesn't
> impact anything in Standard Perl 6, since Perl 5's select() is likely
> going away anyway.

I'm not sure, if XML is more domain specific than regexp or not. I think 
it's somewhere related to text processing as much as regexpes.

> It's a little harder to sneak <foo>...</foo> into the language since 
> we have <foo> to mean qw/foo/ as a term.  Perhaps this is indicating
> that we should reserve a character for introducing user-defined terms.
> I suppose the logical candidate for that is ` these days, since pretty
> much everything else in ASCII land is taken.  So you could write
> a macro on ` that treats the next thing as a self-terminating construct.
> (That is, no terminating ` is required, though the default `...` could
> still parse to mean q:x/.../, I suppose.  You'd lose that if you redefine
> term:<`> to something else, but no big loss, unlike <foo>.)  Anyway,
> you'd get things like:
> 
>     $a=`<elems><elem>Content #1</elem><elem>Content #2</elem></elems>;

I don't like it. I've learned at Perl 5 and in other languages, that ` 
need a closing `.

It would be nicer to say:

$a=xml<elems><elem>Content #1</elem><elem>Content #2</elem></elems>;

But native xml parsing is better, I think. :)

>     $a=`select * from table`;

It looks better, but I think ` isn't needed for it. Anyway, I agree, 
that SQL is a more domain specific language, that it should come from a 
module - at least you have to give for initialization somewhere the 
server address, the user and the password (or other connection 
parameters), so it's better to do it at with a setup sub.

Anyway, it's possible to write:

$a=sql<select * from table>;

> I've gone ahead and terminated the sql variant like a quote construct
> just to clarify the end of it, since SQL is not so obviously self-terminating
> as XML is.

If MS Comega and E4X can do it, I think Perl 6 could do it easily, too. ;)

> You could not, of course, have both of those unless you did lookahead
> to see if the next thing was < or select.  Hmm, maybe that should be
> standard behavior for user-defined ` extensions.  If the actual

I agree, except the notation.

Bye,
   Andras

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About