Flashback to July 2016!
Peruvian ITiCSE

teaching machines

Madeup Status Report #2

Madeup saw a major behind-the-scenes shift this fortnight: I switched to a handwritten lexer and parser! I can honestly say my life has improved significantly since the change. Parser generators are great, but I’m not sure decoupling a grammar specification from the code that recognizes utterances conforming to that grammar is really what we want to do. To generate meaningful error messages and make on-the-fly parsing decisions using semantic predicates, we need to be fully informed about the parse. We don’t get much context information in a grammar specification without tightly coupling it to the parser code.

We also see a major visible update: Madeup has initial support for a block-based code editor. Google’s Blockly made defining custom blocks and generating Madeup programs pretty straightforward. Both text and block editors will be actively supported, but I’m not anticipating that translating back and forth between the two modes is going to be supported. Frameworks like Droplet can help with this, but I have a list of higher priority issues I need to address first.

Below is a breakdown of the week’s progress and the model of the week.

Fixlog

2015/06/08

2015/06/07

2015/06/06

2015/06/05

2015/06/04

2015/06/03

2015/06/02

2015/06/01

2015/05/31

2015/05/30

2015/05/29

2015/05/28

2015/05/27

Model of the Week

My sons are enamored with DragonBox Elements, a geometry game for iOS and Android. Its players build up an army of triangles and quadrilaterals by tracing them out and proving properties about their sides and angles. I asked my oldest, “What shape has three sides and three right angles?” He said it wasn’t possible. We then grabbed a racquetball and I asked him to trace out this algorithm and shape:

A triangle in curved space.

A triangle in curved space.

It’s got three corners and three sides, so it’s a triangle, right? He wasn’t sure.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Past Posts

Categories