Updated the Parser to try and give 'AddressParameter's more meaning depending on the SymbolType.
This commit is contained in:
+21
-4
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user