assembler - Fix 'Too many arguments' error so that it works for normal lines as well as lines with `*` (which might include an optional 2nd arg)
This commit is contained in:
parent
d30050a292
commit
1bf2144a67
19
assembler.js
19
assembler.js
|
|
@ -99,8 +99,19 @@ function preparseSourceCode(source) {
|
|||
info.argument = op_arg_array[1];
|
||||
info.extraArgument = op_arg_array[2];
|
||||
}
|
||||
if (op_arg_array.length > 3) {
|
||||
console.error('Error on line ${info.number}: Too many arguments');
|
||||
// If there's too many arguments, throw an error
|
||||
// NB. there's a special case:
|
||||
// lines with the ASM_IP_LABEL can take an extra argument
|
||||
let maxArgs = 2;
|
||||
if (op_arg_array.length > 2 && op_arg_array[1].startsWith(ASM_IP_LABEL)) {
|
||||
maxArgs = 3;
|
||||
}
|
||||
if (op_arg_array.length > maxArgs) {
|
||||
console.error();
|
||||
console.error(`Error: Too many arguments`);
|
||||
console.error(` at line ${info.number}`);
|
||||
console.error();
|
||||
throw new Error("Too many arguments");
|
||||
}
|
||||
}
|
||||
return info;
|
||||
|
|
@ -226,7 +237,9 @@ function decodeInstructions(source) {
|
|||
// then it's an error
|
||||
if (!line.operation.startsWith('@')) {
|
||||
if (mnemonicsWithOptionalArgs.indexOf(line.operation.toLowerCase()) < 0) {
|
||||
console.error(`Missing operand for line ${line.number}: ${line.source}`);
|
||||
console.error('');
|
||||
console.error(`Error: Missing operand ${line.source}`);
|
||||
console.error(` at line ${line.number}`);
|
||||
console.error('');
|
||||
throw new Error("Missing operand");
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue