|
@@ -35,6 +35,7 @@ import java.util.Map.Entry;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
+import de.mcs.tools.sps.exceptions.SyntaxError;
|
|
|
import de.mcs.tools.sps.mnemonic.Mnemonic;
|
|
|
import de.mcs.tools.sps.mnemonic.MnemonicFactory;
|
|
|
|
|
@@ -47,6 +48,7 @@ public class SPSAssembler {
|
|
|
private static File source;
|
|
|
private static File destination;
|
|
|
private static int lineNumber;
|
|
|
+ private static int srcLineNumber;
|
|
|
private static Map<String, Integer> labels = new HashMap<>();
|
|
|
private static boolean inBlockComment;
|
|
|
private static List<Mnemonic> mnemonics = new ArrayList<>();
|
|
@@ -62,7 +64,7 @@ public class SPSAssembler {
|
|
|
* @param args
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
- public static void main(String[] args) throws IOException {
|
|
|
+ public static void main(String[] args) throws IOException, SyntaxError {
|
|
|
if (args.length == 0) {
|
|
|
showHelp();
|
|
|
}
|
|
@@ -82,7 +84,10 @@ public class SPSAssembler {
|
|
|
System.out.println();
|
|
|
|
|
|
List<String> sourceFile = Files.readAllLines(source.toPath(), Charset.forName("UTF-8"));
|
|
|
- sourceFile.forEach(line -> parseLine(line));
|
|
|
+ for (String line : sourceFile) {
|
|
|
+ srcLineNumber++;
|
|
|
+ parseLine(line);
|
|
|
+ }
|
|
|
|
|
|
System.out.println("Mnemonics");
|
|
|
int pos = 0;
|
|
@@ -99,7 +104,7 @@ public class SPSAssembler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static void parseLine(String line) {
|
|
|
+ private static void parseLine(String line) throws SyntaxError {
|
|
|
if (line.startsWith(":")) {
|
|
|
String label = getLabel(line);
|
|
|
labels.put(label, lineNumber);
|
|
@@ -112,10 +117,10 @@ public class SPSAssembler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static Mnemonic getMnemonic(String line) {
|
|
|
+ private static Mnemonic getMnemonic(String line) throws SyntaxError {
|
|
|
String newLine = stripComments(line);
|
|
|
if (StringUtils.isNotEmpty(newLine)) {
|
|
|
- Mnemonic mnemonic = MnemonicFactory.getMnemonic(newLine);
|
|
|
+ Mnemonic mnemonic = MnemonicFactory.getMnemonic(newLine, srcLineNumber);
|
|
|
return mnemonic;
|
|
|
}
|
|
|
return null;
|