Commit Graph

72 Commits

Author SHA1 Message Date
a74462bc52 even better performance for read_line 2013-08-31 12:03:48 -05:00
473bd192d9 better read_line performance in preprocessor
Jump out of read_line early if the line is an empty string or a newline.
2013-08-31 11:57:01 -05:00
70be18427b don't call load_pokecrystal_macros 2000 times
Also, don't call make_macro_table 2000 times by only calling it once and
passing the result.
2013-08-31 11:04:27 -05:00
a429bce189 Merge branch 'master' into preprocessor-macro-function 2013-08-31 10:22:35 -05:00
ba67d3ba46 Merge branch 'master' into preprocessor-asserts 2013-08-31 10:17:25 -05:00
5815edf382 refactor preprocessor macros into a function
Remove the "macros" global and instead use a function to construct a
list of macros.
2013-08-31 10:13:17 -05:00
ebb591a7ec make a MacroException more verbose in preprocessor 2013-08-31 09:56:24 -05:00
93514b1862 convert a macro_translator assert in preprocessor
AssertionError -> PreprocessorException
2013-08-31 09:54:03 -05:00
95f7270141 raise MacroException instead of Exception
A more specific exception means that error handling can actually work in
the future.
2013-08-31 09:51:31 -05:00
2c22d9220c fix "raise Exception" formatting in preprocessor 2013-08-31 09:50:17 -05:00
ecedde1993 replace an assert in macro_translator
Use a MacroException instead of an AssertionError.
2013-08-31 09:46:11 -05:00
1ce2bccd37 generic preprocessor-specific exception classes
These are basic python Exception subclasses that can be used to throw
more specific errors and exceptions from within the preprocessor.

AssertionError is not a good idea.
2013-08-31 09:45:12 -05:00
998fa0b198 remove the do_macro_sanity_check global 2013-08-31 09:37:55 -05:00
0f28e96e4d remove the show_original_lines global 2013-08-31 09:37:02 -05:00
a6237d6825 remove an Exception from preprocessor
It wasn't meant to be left in there anyway.
2013-08-31 09:29:54 -05:00
5e70ac56ea remove ItemFragment from preprocessor
It's not required.

see #178
2013-08-30 18:36:14 -05:00
69adf48a54 remove "skippable_macros" from preprocessor
The preprocessor no longer has the concept of skippable_macros and now
always skips any line that starts with "db" or "dw" because neither of
these should be treated as macros.

fixes #178
2013-08-30 18:27:03 -05:00
8fe7f4c3a5 HACK: re-instate the ItemFragment macro hack
This is to fix the preprocessor temporarily. Maybe ItemFragment can be
removed completely.
2013-08-30 17:23:43 -05:00
3fb03e9981 two more unused imports from preprocessor 2013-08-28 20:31:17 -05:00
e4d3ea7256 don't use globals in the preprocessor
Macros are now passed around as lists and dicts.
2013-08-28 17:53:26 -05:00
16bfc01124 use generic skippable macros in preprocessor
This removes TextEndingCommand from the preprocessor. Instead, there is
a generic concept of a skippable type of macro like "db".

This adds SkippableMacro to the preprocessor.
2013-08-28 17:18:29 -05:00
b602cc9bd6 don't directly reference two macro classes
Ideally the macro classes will be removed from the preprocessor core
soon, there's no reason they should be infecting these functions.
2013-08-28 16:48:29 -05:00
6d612c8828 remove MoneyByteParam from preprocessor
It didn't belong in there. All of the references were removed.
2013-08-28 16:33:27 -05:00
a4782d9b5a Merge branch 'master' into remove-another-moneybyteparam-special-case 2013-08-28 16:32:15 -05:00
0236b59360 remove another MoneyByteParam special case
This updates the preprocessor to just look for a from_asm method on the
class for the parameter it's processing. If there's a from_asm method,
then it uses it to spit out the right asm.
2013-08-28 16:30:47 -05:00