public override object VisitParameter_Array([NotNull] CMinusParser.Parameter_ArrayContext context) { string parameterName = context.ID().GetText(); this.symbolTable.AddVariable(parameterName, 1); int parameterIndex = this.symbolTable.GetVariableIndex(parameterName); this.writer.WriteVariableAddress(parameterName, parameterIndex); this.writer.WriteContextRegisterRead(); this.writer.WriteBinaryArithmeticExpression("+"); this.writer.WriteMemoryWrite(); return(null); }
public override object VisitParameter_Array([NotNull] CMinusParser.Parameter_ArrayContext context) { string symbolType = SymbolTable.Symbol.RemoveExtras(context.typeSpecifier().GetText()); if (symbolType == "void") { this.EmitSemanticErrorMessage("Variable declared as void type", context); } return(new SymbolTable.Symbol( id: context.ID().GetText(), type: symbolType, construct: SymbolTable.Symbol.Construct.ARRAY, scope: 1, size: 1, pointerCount: SymbolTable.Symbol.CountStringAsterisks(context.typeSpecifier().GetText()) )); }