Parrot 2.6.0 | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | fix 'make html' (talk to Coke), merge gc_* branches, fix/replace/optimize hashing
Set by moderator on 3 August 2010.
Austin PTG, That's essentially a language on top of a language. It's possible, but presently awkward to do that in a single program. 00:00
plobsing in that case it should be relatively simple - stick a macro step before the parse step. HLLCompiler has support for configuring compilation steps. 00:01
Paul_the_Greek Each step is performed at what granularity? 00:03
Austin A pass over the current input text, or tree, or whatever. 00:04
plobsing right now, I'm pretty sure it's whole-file. I think there was some talk about changing that.
Paul_the_Greek So the lexing step is performed on the entire file before a macro step could look at it? 00:05
Austin Right
Hence, "presently awkward" 00:06
Paul_the_Greek In particular, the lexer's behavior cannot be altered by anything in the source, such as a pragma.
Austin False. 00:07
Paul_the_Greek Ah, please explain.
Austin There is no lexer. There is a parse step which does both.
Paul_the_Greek Ah. But then what does it mean to put a macro step before the parser step?
Austin There is no reason a pragma could not modify the behavior. 00:08
Paul_the_Greek Yes, the pragmas are fine. But I don't get the macro step.
Austin Imagine something like #define f(x) g(h(x)) 00:09
Paul_the_Greek Okay. 00:10
Austin For most parsers, if you encounter f(x) you're going to convert that to a tree, like (call name='f' args=[ (var name='x') ] )
But suddenly, that's wrong. 00:11
You want to either (1) perform a textual replacement (c preprocessor) or (2) perform a tree replacement (lisp)
And of course, x could be arbitrarily complex. 00:12
There's lots of things that make this awkward. If you have some kind of error, what's the line #?
How do you do scope resolution? 00:13
Things like that.
purl things like that are unusual
Paul_the_Greek So how does the macro step work before the parse step? 00:14
Austin Right now, the "simplest" answer - in the sense of "I can describe this to you simply" is to parse as much as you possibly can, then stop (different step) and perform the edits indicated by your macros, then start again (new step)
For a preprocessor, that would be pretty much exactly like the old-style description of a preprocessor - a separate program that rewrites the text before the "real" compiler sees it. 00:15
Paul_the_Greek Right, but let's say I have something much more complex, which includes, for example, the ability to evaluate arbitrary expressions.
mikehh rakudo (fca2d32) builds on parrot r48342 - make test PASS, make stresstest (pugs r31921) FAIL - Ubuntu 10.04 amd64 (g++ with --optimize) 00:16
t/spec/S03-smartmatch/any-bool.t - No subtests run
t/spec/S05-mass/rx.rakudo - Failed tests: 91, 206-210
Paul_the_Greek It makes sense to put that between the lexer and the parser.
I guess I could do it all as a preprocessing step. 00:17
But it would need its own lexer.
Austin Well, then, you've already assumed an extra step - lexer vs. parser.
Then you've got a third - macro - between them.
mikehh oh forgot to report: All tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48342 - Ubuntu 10.04 amd64 (g++ with --optimize) 00:18
Austin So you write a "parser" that does lexing. And then a macro whatever. And then a parser.
Paul_the_Greek Right, that's how I've organized it.
An interface between the lexer and the parser.
The lexer needs only a little more capability and the parser needs nothing. 00:19
But it certainly does make them two things instead of one. 00:20
mikehh partcl-nqp(ae8abf9) builds on parrot r48342 - make test PASS - Ubuntu 10.04 amd64 (g++ with --optimize) 00:26
t/cmd_expr.t - TODO passed: 287
Austin purl? 00:28
purl yes, Austin?
Austin purl, purl?
purl rumour has it i am an endearing annoyance. or like the MST of bots
Austin purl is also lonely (see xkcd.org/175) 00:29
purl okay, Austin.
Austin purl, purl?
purl rumour has it i am an endearing annoyance. or like the MST of bots. or lonely (see xkcd.org/175)
Paul_the_Greek bite me purl 00:33
Oh, there's an opportunity lost.
plobsing bite me? 00:36
Austin purl, bite me is <reply> suck it, $who.
purl OK, Austin.
Paul_the_Greek Take care, folks. 00:55
00:58 Andy joined 00:59 somebody__ joined 01:37 rurban_ joined 02:11 bacek joined
dalek ee-optimization: 2cc3e32 | tcurtis++ | src/Tree/Optimizer.nqp:
Add Tree::Optimizer.pass-class method.
02:12
ee-optimization: 34eb267 | tcurtis++ | src/Tree/Optimizer/Pass.nqp:
Add Tree::Optimizer::Pass.transformer-class method to simplify subclassing.
02:19 aloha joined 02:22 bacek joined 02:42 janus joined
dalek ee-optimization: 91e9a41 | tcurtis++ | src/Tree/Optimizer/CombinedPass.nqp:
Give Tree::Optimizer::CombinedPass the transformer-class treatment.
02:43
Austin seen Coke? 02:49
purl Coke was last seen on #parrot 3 hours, 6 minutes and 29 seconds ago, saying: that sort of information is much more important on tickets that are not currently being worked on.
Austin msg Coke I notice that config_lib.pir has a ["perl"] variable, but also the ["cat"] entry references $(PERL) - uppercase. Should these two things be consistent? 02:50
purl Message for coke stored.
02:51 somebody__ joined 03:00 theory joined 03:23 Andy joined 03:42 somebody_ joined
cotto ~~ 04:56
Coke Austin: ISTR we went through and updated all those to avoid the makefile references. 05:07
Austin Coke: Apparently not. This is on windows w/ strawberry perl gcc utils, in trunk as of y-day 05:19
06:12 jsut_ joined 06:32 robin-gvx joined 06:58 robin-gvx joined 07:02 Casan joined 07:28 fperrad joined 07:40 Coke joined 07:46 aloha joined 07:47 jjore joined 07:51 cotto joined 07:57 bacek joined 09:37 rurban_ joined 11:21 desertm4x joined
dalek kudo: 7d4a624 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get Digest::MD5 fix, cosimo++
11:31
kudo: 53ee804 | moritz++ | docs/compiler_overview.pod:
[docs] update NQP description in compiler_overview.pod
12:20 whiteknight joined 13:20 kid51 joined 13:23 clinton joined 13:27 mak joined
kid51 mikehh ping 13:27
mak hi
purl hi, mak.
mak is awk implemented on parrot? 13:28
kid51 mak: I don't think so. Somewhere (wiki?) there is a list of languages which people have attempted at one point or another to implement.
mak parrot.org/languages here? 13:29
kid51 That would be useful.
mak awk is not there on that list
kid51 Then no one has attempted it.
I believe there is a TT open stating that that page is very much out-of-date 13:30
msg mikehh Could you comment on my last post in trac.parrot.org/parrot/ticket/1726 ? Thanks. 13:31
purl Message for mikehh stored.
mak I started with trying to understand rakudo, figured that can't learn it without nqp-rx... theres not much documentation on that...
TiMBuS personally i found learning PIR was more useful to understand rakudo 13:33
mak TimBus, yes ultimately it comes down to that ... :) 13:34
especially if the documentation is scanty
TiMBuS there was an old tutorial on using NQP in actions.pm which is still sort of relevant 13:35
mak in the rakudo repo? 13:36
TiMBuS nope, it was something many languages used
the squaak tutorial is what you want
mak ok
TiMBuS but ignor the grammars and stuff. you just want to know about making an AST
mak docs.parrot.org/parrot/latest/html/...orial.html this one? 13:37
TiMBuS that's it 13:38
mak Actually contributing rakudo will require a good touch over nqp and pir
*contributing to rakudo 13:39
TiMBuS not always! sometimes if you just skim the RT there's loads of things that just need implementing or fixing in just perl6 code 13:41
so if you like to learn by doing, that helps a lot
src/core is where you'll find perl6 code for a lot of builtins and objects 13:42
mikehh kid51: pong
dalek TT #1715 closed by jkeenan++: pprof2cg.pl not installed
TT #1715: trac.parrot.org/parrot/ticket/1715
mikehh kid51: kid51: saw your message = was dion' some testring - sorry for the delay 13:43
kid51 mikehh If you can post a thought or 2 in that ticket ... 13:55
have to go afk in a minute
mikehh kid51: done
14:14 ambs joined 14:42 jan joined 14:56 brianwisti joined 15:44 theory joined 15:50 desertm4x joined 16:15 macroron joined 16:24 PacoLinux joined
dalek rrot: r48343 | jkeenan++ | branches/tt1726_pmc_pod:
Creating tt1726_pmc_pod in ļæ½svn.parrot.org/parrot/branches
16:29
rrot: r48344 | jkeenan++ | tags/tt1726_pmc_pod-48342:
Tagging trunk at r48342 so that the tt1726_pmc_pod can later be synched to it.
Coke wonders why we add more tests to enforce boilerplate docs. 16:34
time better spent /writing docs/
(yes, yes, time not fungible.) 16:35
16:45 brianwisti joined
dalek rrot: r48345 | khairul++ | branches/gsoc_instrument/runtime/parrot/library/Instrument (4 files):
Updated Instrument runtime libraries.
16:45
rrot: r48346 | khairul++ | branches/gsoc_instrument/src/dynpmc (6 files):
Please codetest (mostly)
rrot: r48347 | khairul++ | branches/gsoc_instrument (5 files):
Updated tests.
purl updated tests are at the same url, 01_request.t and 02_keepalive.t
rrot: r48348 | khairul++ | branches/gsoc_instrument (4 files):
Updated stub generators and regenerated stubs.
rrot: r48349 | khairul++ | branches/gsoc_instrument (7 files):
deleted instrumentvtable.pmc (merged into instrumentclass.pmc)
rrot: r48350 | jkeenan++ | branches/tt1726_pmc_pod (1 files):
First draft of a codingstd file testing for the presence of POD in .pmc files. This first draft follows approach taken in c_function_docs.t. Detects 3 files lacking POD not detected by tools/build/headerizer.pl.
17:03
17:37 rurban_ joined 18:18 desertm4x joined 18:20 desertm4x joined 18:42 lucian joined 19:02 AzureStone joined 20:07 smash joined
smash hello everyone 20:07
Austin Hello, smash 20:08
moritz o/ 20:10
20:12 smash joined 20:16 lucian joined 20:23 perlite joined
cotto ~~ 20:26
Austin Under what circumstances can a call to pir::get_hll_namespace with a key of 'ResizableStringArray' return a namespace first, and then return null? 20:33
Tene Austin: if you changed HLLs? 20:52
Austin Better'n any idea I've got, tene. Thanks 20:55
But no, get_root_namespace [parrot::ResizableStringArray] returns null, too. 20:56
Tene Just to confirm, you *do* mean ['parrot';'ResizableStringArray'], yes? 20:57
20:57 whiteknight joined
Austin Yeah, just lazy 20:57
Tene I figured, just checking.
Austin %r = get_root_namespace ['parrot';'ResizableStringArray']
So "obviously" I'm storing / destroying something into the RSA slot in the root namespace. 20:59
Tene That sounds reasonable.
Doesn't sound obviously wrong, at least.
Austin And I am calling P6metaclass.register twice...
dalek rtcl-nqp: f0c25ae | Coke++ | (2 files):
make [fileevent] actually check its channel arg.
rtcl-nqp: 7548f1a | Coke++ | (37 files):
Merge branch 'master' of github.com:partcl/partcl-nqp
Austin We have a winner 21:02
purl you have your choice of the first, second, or third door. Or.. the box.
Austin the box?
purl the box is down, really down
Austin no, the box is <reply> okay, the box ... but first: chichi!
purl okay, Austin.
Austin the box?
purl the box is probably down, really down
Austin rats. 21:03
That trick never works.
purl nothin' up my sleeve
Austin botsnack
purl thanks Austin :)
Austin Calling P6metaclass.register twice on the same name ('ReziableStringArray') destroys the namespace.
Seems obvious to me, in retrospect. 21:04
*ResizableStringArray
nopaste "Austin" at 192.168.1.3 pasted "This sucks" (40 lines) at nopaste.snit.ch/22627 21:12
Austin Of course, it turns out I already knew that: TT#1481 21:13
Tene That's... unfortunate. 21:14
That doesn't sound too difficult to fix, either. 21:15
Austin Presuming you can locate the problem, I guess not. 21:16
21:44 Chandon joined
Coke hurm. if I want to use P6Regexen in my NQP code, do I have to load anything? 21:47
Regex::P6Regex::Compiler.compiler('stuff'); gives me a NPE. 21:58
Austin P6regex as different from nqp regex? 21:59
Coke Those would be fine. 22:00
Austin Then I don't think you need to load anything.
Coke haz you a sample? 22:01
Austin But outside a grammar, I haven't done it.
Check the plumage source. I think they have a pattern replace sub
that uses rexen
gitorious.org/parrot-plumage/parrot...qp#line353 22:03
Here's a call: gitorious.org/parrot-plumage/parrot...nqp#line55
Coke plumage? 22:04
purl somebody said plumage was the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. The repository is at gitorious.org/parrot-plumage/parrot-plumage and the design docs are at trac.parrot.org/parrot/wiki/ModuleEcosystem
Austin So inline regex looks like /foo/
And match looks like $text ~~ $regex
Coke if you match with ~~, where's the match object? 22:09
$/ ? 22:10
purl $/ is just one of those things that if you have to ask about it you probably shouldn't use it or if i am still doing join('',<STDIN>)
Austin my $match := $text ~~ $regex;
while $match { @matches.push: $match; $match := $match.CURSOR.parse($text, :rule($regex), :c($match.to)); } 22:11
See the "all_matches" sub in my first link, above.
dafrito cotto ping
Austin (Please note: I don't really grok this stuff.)
Coke is the regex there a regex object or just a string containing a regexz? 22:13
in my code, using my own regex subclass, I have to do a .compile() first. 22:14
Austin It's a regex
Coke e.g. github.com/partcl/partcl-nqp/blob/m...ng.pm#L372 22:15
Austin: that is my question. how do I get that regex. =-) just a literal /foo/ ? 22:16
Austin If you do literal /foo/ you get a regex.
Run parrot-nqp --target=pir on the nopaste, above.
nopaste "Austin" at 192.168.1.3 pasted "Regex resultant" (8 lines) at nopaste.snit.ch/22628 22:17
Austin You'll see something like this ^^ in the output. That sub $P16 is the compiled regex.
Coke Austin: ... I'm writing this in NQP, not pir. 22:18
Austin Right. And the pir I just nopasted was the compiled output of the nqp I nopasted above.
My point is that the nqp statement :: my $regex := /foo/;
Stores a sub reference in $regex
Not a string.
Actually, it's a regex wrapping a sub reference. 22:19
22:19 pjcj joined
Austin So if you want to "compile a string to a regex" you'll want a Compiler.compile call. 22:20
If you want to code a regex in line, you want /foo/
Coke Austin: ahhhh, thank you.
I think I missed a nopaste in there somewhere. Thank you.
nopaste "Austin" at 192.168.1.3 pasted "Coke: have a look at this" (7 lines) at nopaste.snit.ch/22629 22:21
Austin My bad, the nopaste failed but I didn't see it.
Coke 22:23
+1. familytime, but Austin++
kthakore Coke: hi 22:36
Coke: you left me a message?
whiteknight holyshit, did anybody else see that proposed proof that P != NP? 22:56
sorear I've lost count 22:58
proposed proofs of P != NP are like patents for perpetual motion machines, every marginal mathematician-crank needs to write one
O 22:59
I'll pay attention *after* Clay doex
23:42 brianwisti joined 23:59 Psyche^ joined