Carl Mäsak
Carl Mäsak
> * In #210, we can _pretend that the expression parser is a recursive descent parser_, and then specify a `Context` at the exact precedence level we want: `new Context...
We have a small problem with a [type/instance homonym](https://martinfowler.com/bliki/TypeInstanceHomonym.html). "Context" refers to two things: * The thing that we instantiate with `new Context`, which helps tie together different macros under...
> `{{{opLhs}}} {{{Q::Infix @ op}}} {{{lhs}}}` No, that's not gonna fly. It assumes the junction operators are on the right of the `==`. Likely, but not guaranteed. I'm back to...
I'm having a related thought. As I was describing [class declarations in 007](https://gist.github.com/masak/010ba2ab93a5632c1667155339ffd05b#classes-and-objects), that _also_ felt like a situation in which the `class` body is a context of sorts, and...
> We have a small problem with a [type/instance homonym](https://martinfowler.com/bliki/TypeInstanceHomonym.html). "Context" refers to two things: > > * The thing that we instantiate with `new Context`, which helps tie together...
Ok, I think I see this much more clearly now. Maybe not at the level of being able to provide an implementation all the way, but... pretty much. I have...
Summarizing the summary: the context is an API carrier that gives the nested macro controlled read/write access to the containing macro.
Also worth pointing out that we'd want to make the following `Q` types implement `Iterable`: - `Q::ArgumentList` - `Q::ParameterList` - `Q::PropertyList` - `Q::TraitList` - `Q::StatementList`
Hm, `.iterator()` should probably be a method, because we can take as many as we want from a given object, and they're orthogonal/independent.
> Note that these three are three separate solutions to the semipredicate/out-of-band problem — you can't use any particular value to signify "no more elements", because any value is a...