summaryrefslogtreecommitdiff
path: root/lexer.l
Commit message (Collapse)AuthorAgeFilesLines
* nqasm: support binary arithmetic operators in immediate operandsBobby Bingham2017-01-181-0/+4
|
* nqasm: support unary operators in immediate expressionsBobby Bingham2017-01-181-1/+5
|
* nqasm: allow "." to refer to current pc in immediate operandBobby Bingham2017-01-181-0/+1
|
* nqasm: lex registers as if they were labelsBobby Bingham2017-01-181-4/+2
| | | | | This makes parsing registers trickier, but allows a label to have a name 'r0'-'r7', which would otherwise conflict with the registers.
* nqasm: allow specifying labels for operandsBobby Bingham2017-01-181-0/+1
|
* nqasm: parse labelsBobby Bingham2017-01-171-0/+5
|
* nqasm: Handle immediate argumentsBobby Bingham2017-01-151-0/+14
|
* nqasm: Handle register and register indirect argumentsBobby Bingham2017-01-151-0/+7
|
* nqasm: Improve parsing at end of fileBobby Bingham2017-01-151-1/+4
| | | | | | | | | Bison's implicit $accept rule ends with the END token. The fact that input could also end with END (via the line non-terminal) resulted in a shift reduce conflict. We resolve the conflict by modifying the lexer so that if it encounters end of file partway through a line, it produces a final EOL token before EOF.
* nqasm: Initial stab at a lexer and parserBobby Bingham2017-01-151-0/+61
So far, this only understands instructions, but no operands or labels. It doesn't handle bad input gracefully. It's just enough to test the basics.