Connor Olding
ec76e37014
add \x escapes to strings...
...
also adds the plain \e escape and allows escapes in filenames.
2016-12-28 04:04:05 -08:00
Connor Olding
9f6252117e
allow comments after filenames
...
this is hack city but it will do until i refactor this crap
2016-11-29 09:58:08 -08:00
Connor Olding
8546411e14
handle ; comments in variable definitions again
...
this is hacky but i don't wanna break existing code.
if you used // comments, then you'll have to change.
2016-11-27 22:16:32 -08:00
Connor Olding
e5cc5fd068
improve variable name checks
2016-11-27 22:01:15 -08:00
Connor Olding
63ddf558df
parse variable definitions as expressions
2016-11-27 21:37:57 -08:00
Connor Olding
64ef102183
disallow variable names beginning with a number
...
this makes lexing easier.
i don't think this worked properly anyway.
2016-11-27 21:16:38 -08:00
Connor Olding
ad0269cc61
fix incbin parsing again
2016-11-27 20:03:26 -08:00
Connor Olding
0d1527a773
refactor Muncher into separate TokenIter class
...
this also fixes lexing the EOL after an include directive.
2016-11-27 05:58:08 -08:00
Connor Olding
e1ae1fdd64
optimize incbin via string passthru
2016-11-23 12:22:31 -08:00
Connor Olding
cdc0f8edb2
add a barebones expression parser
...
at the moment, this probably only works in directives.
some of the operators are still unimplemented, and the errors are poor.
there will be support for accessing variables in the future.
2016-10-14 09:27:19 -07:00
Connor Olding
bfbe2845e6
actually implement path handling for .incasm
2016-05-14 03:27:30 -07:00
Connor Olding
f3765a0300
fix incbin directive
2016-04-24 13:19:18 -07:00
Connor Olding
1188543cd2
more verbose errors
2016-04-23 16:24:46 -07:00
Connor Olding
5f74f178d3
actually fix hex and inc directives
2016-04-23 15:51:29 -07:00
Connor Olding
91e028ef6a
rename internal DEF to VAR
2016-04-20 16:28:59 -07:00
Connor Olding
d10c0f0ee9
use Base class pattern; extend off existing classes
2016-04-20 13:15:17 -07:00
Connor Olding
7ccc2b180f
rename "defines" to "variables"
...
this follows bass' terminology:
constants don't care where they're defined, but can never be changed.
variables must be defined before use, but can be redefined.
defines aren't necessarily numbers.
bass: https://github.com/ARM9/bass
2016-04-20 01:41:44 -07:00
Connor Olding
7af890c3b5
add 0o and 0b prefixes for lexing octal and binary
2016-04-20 01:16:19 -07:00
Connor Olding
67ce15feee
fail to lex 0X hex prefix in favor of lowercase 0x
...
you are a terrible person if you do this
2016-04-20 01:12:57 -07:00
Connor Olding
59994cd15d
fix binary lexing; add comments
2016-04-20 01:12:18 -07:00
Connor Olding
071169df48
redo internal paths/requires
2016-04-14 07:33:33 -07:00
Connor Olding
b8601031f3
add named relative labels
2016-04-10 05:09:38 -07:00
Connor Olding
a58ad83c92
implement incbin directive
2016-04-10 04:03:00 -07:00
Connor Olding
b7831b49c3
be smarter about lexing spaces
2016-04-10 03:26:23 -07:00
Connor Olding
311b1e362f
implement offsets for constants
2016-04-10 03:25:11 -07:00
Connor Olding
3febafef02
fix parsing of files lacking a trailing newline
...
ensures files yield an EOL token before EOF
2016-03-13 20:27:13 -07:00
Connor Olding
195236a52c
begin work on specials; big refactor
2016-01-15 11:15:02 -08:00
Connor Olding
c0c4d81b5a
handle parenthesis after lexing instead
2016-01-15 07:49:43 -08:00
Connor Olding
fffe542d10
fix most line numbers in errors
...
this might be a bit of a hack;
i feel like nextc() should always happen after yield(),
not a mix of before and after.
2016-01-14 10:32:08 -08:00
Connor Olding
bf3f86e568
allow labels in WORD directives
2016-01-13 13:07:00 -08:00
Connor Olding
f8805e6deb
implement SPACE,HALF directive aliases
2016-01-13 11:41:00 -08:00
Connor Olding
a47c924e75
implement ascii/asciiz directives, basic string lexing
2016-01-13 11:18:36 -08:00
Connor Olding
9fd46b571f
set up as a proper module; fix some stuff
2016-01-13 07:40:14 -08:00