tcurtis's blog

GSoC: Wrapping up, and some documentation

The hard "pencils down" date was Monday, so now seems like a good time for a blog post summarizing what I ended up completing.

I have DPDA generation and parsing working for LR(0) and SLR(1) grammars. I have the beginnings of a grammar specification DSL (a grammar, but no actions or tokenizer yet; it's in the dsl branch). I do not have support for LALR(k) grammars or general LR(k) grammars. I have not implemented generating code to parse grammars (as opposed to interpreting the DPDA in order to parse them).

GSoC: LALR Parsing: A revised schedule

I'm far behind on my project, unfortunately, and, upon dukeleto's urging, I've written up a new timeline that I think I will be able to finish before Summer of Code ends.

First, I'll summarize what I have done:

  • An object representation for grammars
  • An object representation for deterministic push-down automata(DPDAs)
  • Generation of DPDAs for LR(0) grammars
  • The beginnings of an interpreter for DPDAs

And what I haven't done:

  • Actually producing a parse tree while parsing

GSoC: LALR Parsing: Midterms over!

We're halfway through the summer, now. I have not made nearly as much progress as I had previously hoped. Partly this is due to the difficulty of the problem, and partl\
y it is because I have not spent enough time on it. I think I'm currently at a point where I'm only a few mostly simple transformations away from producing a Determinis\
tic Push-Down Automaton which will be capable of parsing a LR(0) grammar. Whether implementing those last few mostly simple transformations will show this belief to be \
correct or not, I won't know until I do so.

Here are my next few goals:

GSoC: LALR Parsing: School's out for summer.

I'm rather behind on my blogging schedule, and also somewhat behind on my coding schedule, thanks to finals and packing and moving out of the dorm, but there is good news: finals are over, and now I'm free to focus more on summer of code. In this blog post, I'll describe the representation I've decided on for grammars, and talk about my next steps.

Another piece of good news, I've actually decided on a name: LALRskate.

The adventure begins

Hello, I'm Tyler Curtis (tcurtis on #parrot), and once again, I have the fortune to be doing Google Summer of Code for Parrot. This summer, I will be writing a LALR parser generator targetting Parrot. My proposal contains a tentative schedule and some amount of explanation of what my project involves. I plan to produce some further explanation in a future blog post, as well.

PAST Optimization: GSoC is over

The Google Summer of Code pencils-down date was last Monday. GSoC is now over, but I don't plan to stop working on my project.

The initial goals listed in my project proposal were:

  • A library for PAST traversal.
  • A framework for PAST optimization and analysis tools.
  • A regular-expression-like pattern matching library for PASTs.
  • An optimization to turn tail-calls in PAST into PIR ".tailcall".

PAST Optimization: plans for the final weeks of GSoC

I spent this last week working on Tree::Optimizer (and getting distracted by Rakudo *).

I've got the functionality described in my blog post last week mostly finished. The only thing remaining is making sure that recursive passes correctly handle nulls, which I'm about to work on.

The Google Summer of Code is almost over. Next Monday is the "suggested 'pencils down'" date. The following Monday is the "firm 'pencils down'" date. After that are final evaluations.

Here's my plan for the remainder of GSoC:

  1. Merge the pass-manager branch of my project's repo into master.

Cleaning up and speeding up optimizations with Tree::Optimizer

After a false start earlier this week, I've begun implementing something like LLVM's PassManager. It can be found in the pass-manager branch of my project's git repository.

Today, I'm going to talk about adding optimizations to compilers using my GSoC project without Tree::Optimizer and with it. Note that most of the features of Tree::Optimizer that I describe here are not yet implemented.

The uneventful mid-term week and the future of PAST/Tree Optimization

This has been an uneventful week in my GSoC work.

Parrot's 2.6 release is Tuesday, and I've taken on the task of updating Squaak to modern NQP-rx prior to it. Because of that and my GSoC midterm evaluations, I haven't spent much time hacking on Tree::Pattern or on optimizations using it this week. I plan to finish working on Squaak tonight or tomorrow, commit my fixes to trunk, and finally get back to work on my GSoC project. I'm a little behind schedule now because of that, but I plan to work hard on optimization for the rest of GSoC.

Tail-call elimination and moving to github

My main goals this week have been getting a tail-call elimination optimization to work in NQP-rx and moving my GSoC project to an external repository to make it easier for other projects to use it. Both of these goals have been successful. You can find the tail-call elimination optimization here. My GSoC project can now be found on github or installed via Plumage with ./plumage install tree-optimizations.

Syndicate content