SourceFileSpan: Report error line and column number as 1-based index. Line and column indices are generally 1-based in editors. Thanks to p_gimeno and santiontanon for reporting.
README/pom: Update project page & source hosting.
ExpressionBuilder: Move evaluation loop to operator objects.
Literal: Remove. It was a no-op base class.
Type: Extend from Expression, compare with is().
ExpressionBuilderTest: Add test for index associativity.
ExpressionBuilder: Correct group open associativity. If there are two groups ((a)), the inner group comes first. Though in practice this doesn’t matter because groups are enclosing.
ExpressionBuilder: Let operators decide how many operands to push back.
ExpressionBuilder: Add tokens names to operators for better error output.
Scope/InstructionObject: Change address and resolve type to expression.
Expression: Remove resolve(), only have it on Passthrough (abstract).
Sequence: Support indexing into strings.
Expression: Rename getList() to getFlatList(). Because it flattens deeply nested sequences.
Sequence: Support nested and indirect lists for db / dw / dd. Adds a sequence type for matching. Not used it in Expression getHead / getTail yet because those are used in parameter matching where it doesn’t work yet.
Expression: Rename getElement / getNext to getHead / getTail. Match the methods on Sequence.
IntegerLiteral: Provide “of” factory method rather than new-ing everywhere. Including an overload for booleans.
expressions: Replace get*-methods with a get(type) method. This cleans up the code a lot and allows us to more easily reason over types.
Annotation: Add to pass-through expressions and add proper is-checks. Also make the default implementations not return null and this.
expressions: Replace is*-methods with an is(type) method. This cleans up the code a lot and allows us to more easily reason over types.
Instruction: Make context mandatory.