diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2018-11-11 18:52:45 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2018-11-11 18:53:06 -0800 |
| commit | 2b4196bc2027096f070c07fb279cf18d5fb20ee5 (patch) | |
| tree | f599f4ef058ab99bf9bc3c1195db4c9c95bfb5c5 | |
| parent | 2305f075b7e6309db72488d6ce9f8bd4260f02f3 (diff) | |
Added (% as hex) and fixed bug with text interpolation codegen not
adding parens around indexchains.
| -rw-r--r-- | core/text.nom | 8 | ||||
| -rw-r--r-- | nomsu_decompiler.lua | 2 | ||||
| -rw-r--r-- | nomsu_decompiler.moon | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/core/text.nom b/core/text.nom index 86d8d45..50a0ab5 100644 --- a/core/text.nom +++ b/core/text.nom @@ -48,6 +48,14 @@ test: test: assume "\n" == (newline) +test: + assume (0xDEADBEEF as hex) == "0xDEADBEEF" +externally (%num as hex) means: + if (%num < 0): + return ("-0x%X"::formatted with (- %num)) + ..else: + return ("0x%X"::formatted with %num) + # Text literals %escapes = {..} nl: "\n", newline: "\n", tab: "\t", bell: "\a", cr: "\r", "carriage return": "\r" diff --git a/nomsu_decompiler.lua b/nomsu_decompiler.lua index 4312f6a..9dd2316 100644 --- a/nomsu_decompiler.lua +++ b/nomsu_decompiler.lua @@ -392,7 +392,7 @@ tree_to_nomsu = function(tree) if type(tree[i + 1]) == 'string' and not match(tree[i + 1], "^[ \n\t,.:;#(){}[%]]") then interp_nomsu:parenthesize() end - elseif bit.type == "EscapedNomsu" or bit.type == "Block" then + elseif bit.type == "EscapedNomsu" or bit.type == "Block" or bit.type == "IndexChain" then interp_nomsu:parenthesize() end end diff --git a/nomsu_decompiler.moon b/nomsu_decompiler.moon index 6053979..918779e 100644 --- a/nomsu_decompiler.moon +++ b/nomsu_decompiler.moon @@ -309,7 +309,7 @@ tree_to_nomsu = (tree)-> if bit.type == "Var" if type(tree[i+1]) == 'string' and not match(tree[i+1], "^[ \n\t,.:;#(){}[%]]") interp_nomsu\parenthesize! - elseif bit.type == "EscapedNomsu" or bit.type == "Block" + elseif bit.type == "EscapedNomsu" or bit.type == "Block" or bit.type == "IndexChain" interp_nomsu\parenthesize! nomsu\append interp_nomsu if interp_nomsu\is_multiline! |
