Updated the Parser to try and give 'AddressParameter's more meaning depending on the SymbolType.

This commit is contained in:
2022-10-08 18:21:11 -05:00
parent 48a77950be
commit fd44e03b1b
4 changed files with 48 additions and 8 deletions
+21 -4
View File
@@ -148,11 +148,28 @@ Parameter* GetParameterType() {
//case LabelClass:
case IdentifierClass:
param->ParameterType = AddressParameter;
param->InterpretedAs = AddressParameter;
//param->InterpretedAs = AddressParameter;
symbol = TryGetSymbol(token->Lemexe, MachineState.SymbolsTable);
if (!symbol) symbol = AddSymbolToTable(token->Lemexe, UnresolvedSymbol, MachineState.SymbolsTable);
if (!symbol) {
symbol = AddSymbolToTable(token->Lemexe, UnresolvedSymbol, MachineState.SymbolsTable);
param->InterpretedAs = UnresolvedParameter;
}
else {
switch(symbol->Type) {
case InstructionPointerSymbol:
case StringSymbol:
param->InterpretedAs = AddressParameter;
break;
case NumericSymbol:
param->InterpretedAs = ConstantParameter;
break;
default:
param->InterpretedAs = UnresolvedParameter;
break;
}
}
param->Value.Symbol = symbol->Name;
@@ -298,9 +315,9 @@ void PrintSymbols(void) {
break;
case StringSymbol:
if (symbol->Value.String->Terminated)
printf("[S] %s, %d", symbol->Name, symbol->Value.String->TerminatingByte);
printf("[S] %s {%s}, %d", symbol->Name, symbol->Value.String->String, symbol->Value.String->TerminatingByte);
else
printf("[S] %s", symbol->Value.String->String);
printf("[S] %s {%s}", symbol->Name, symbol->Value.String->String);
break;
case UnresolvedSymbol:
printf("[U] %s", symbol->Name);