loadtrap.rl -- negative number support (for error numbers)

This commit is contained in:
Kelvin Sherlock 2013-08-21 21:29:37 -04:00
parent ff84c1d3f1
commit 4b4122bee2
1 changed files with 7 additions and 0 deletions

View File

@ -45,6 +45,9 @@ namespace {
|
'$' xdigit+ @addx
|
'-'? @{ negative = true; }
digit+ @{value = value * 10 + (fc - '0'); }
|
[A-Za-z_] @{ stringValue.push_back(fc); }
[A-Za-z0-9_]+ @{ stringValue.push_back(fc); }
;
@ -79,6 +82,7 @@ namespace {
std::string name;
std::string stringValue;
uint32_t value;
bool negative = false;
value = 0;
const char *eof = pe;
@ -91,6 +95,7 @@ namespace {
{
return false;
}
if (negative) value = (-value) & 0xffff;
// name lookup
if (!stringValue.empty())
@ -104,12 +109,14 @@ namespace {
value = iter->second;
}
#if 0
// if loading globals, wouldn't need to do this...
if (value > 0xafff || value < 0xa000)
{
fprintf(stderr, "Invalid trap number: $%04x\n", value);
return false;
}
#endif
map.emplace(name, (uint16_t)value);