public override void EnterSingle_blockVarDeclaration(NewDecafParser.Single_blockVarDeclarationContext context) { IType varType = (IType)currentScope.resolve(context.varType().GetText()); VariableSymbol vs = new VariableSymbol(context.Id().GetText(), varType, theVariableType: VariableType.vField); currentScope.define(vs); setNodeScope(context, currentScope); }
public override void EnterMethodSignature(NewDecafParser.MethodSignatureContext context) { IType returnType = (IType)currentScope.resolve(context.methodType().GetText()); MethodSymbol ms = new MethodSymbol(context.Id().GetText(), returnType, currentScope); currentScope.define(ms); currentScope = ms; setNodeScope(context, currentScope); }
public override void EnterArray_varDeclaration(NewDecafParser.Array_varDeclarationContext context) { IType varType = (IType)currentScope.resolve(context.varType().GetText()); int arraySize = Convert.ToInt32(context.Num().GetText()); VariableSymbol vs = new VariableSymbol(context.Id().GetText(), varType, theSize: arraySize, theVariableType: VariableType.vField); currentScope.define(vs); setNodeScope(context, currentScope); }
public override void EnterArray_structVarDeclaration(NewDecafParser.Array_structVarDeclarationContext context) { Template selfTemplate = stg.GetInstanceOf("Field"); selfTemplate.Add("isArray", true); selfTemplate.Add("id", context.Id().GetText()); setNodeRequiresInit(context, true); setNodeTemplate(context, selfTemplate); }
public override void EnterArray_structVarDeclaration(NewDecafParser.Array_structVarDeclarationContext context) { FieldDeclaration FD = new FieldDeclaration(); VarType currentTypeName = getNodeCommand(context.varType()) as VarType; FD.TypeName = currentTypeName; FD.FieldId = context.Id().GetText(); FD.IsArray = true; (getNodeCommand(context.Parent) as StructDeclaration).addCommand(FD); setNodeCommand(context, FD); }
public override void ExitArray_varDeclaration(NewDecafParser.Array_varDeclarationContext context) { FieldDeclaration FD = new FieldDeclaration(); VarType currentTypeName = getNodeCommand(context.varType()) as VarType; FD.TypeName = currentTypeName; FD.FieldId = context.Id().GetText(); FD.IsArray = true; mainClass.addCommand(FD); ArrayDeclaration AD = new ArrayDeclaration { Type = currentTypeName.getGenCode(), Name = FD.FieldId, ArraySize = Convert.ToInt32(context.Num().GetText()) }; mainClass.addCommand(AD); }
public override void EnterAnd_expression(NewDecafParser.And_expressionContext context) { Template selfTemplate = stg.GetInstanceOf("CondOp"); setNodeTemplate(context, selfTemplate); string BTrue = getNodeTrueLabel(context); string BFalse = getNodeFalseLabel(context); string LeftTrue = LabelNameGenerator.getLabelName(); string LeftFalse = BFalse; string RightTrue = BTrue; string RightFalse = BFalse; setNodeTrueLabel(context.left, LeftTrue); setNodeFalseLabel(context.left, LeftFalse); setNodeTrueLabel(context.right, RightTrue); setNodeFalseLabel(context.right, RightFalse); selfTemplate.Add("LeftLabel", LeftTrue); }
public override void EnterSingle_parameterDeclaration(NewDecafParser.Single_parameterDeclarationContext context) { ParameterST.Push(stg.GetInstanceOf("Parameter")); }
public override void EnterProgram(NewDecafParser.ProgramContext context) { MainST.Push(stg.GetInstanceOf("Main")); }
public override void EnterMethodDeclaration(NewDecafParser.MethodDeclarationContext context) { MethodST.Push(stg.GetInstanceOf("Method")); }
public override void EnterBoolean_varType(NewDecafParser.Boolean_varTypeContext context) { TypeNameST.Push(stg.GetInstanceOf("TypeName")); }
public override void ExitMethodDeclaration(NewDecafParser.MethodDeclarationContext context) { MainST.Peek().Add("method", MethodST.Pop().Render()); }
public override void EnterStructDecl_varType(NewDecafParser.StructDecl_varTypeContext context) { TypeNameST.Push(stg.GetInstanceOf("TypeName")); }
public override void EnterProgram(NewDecafParser.ProgramContext context) { setNodeCommand(context, mainClass); }
public override void ExitSingle_parameterDeclaration(NewDecafParser.Single_parameterDeclarationContext context) { ParameterST.Peek().Add("parameterId", context.Id()); MethodST.Peek().Add("parameters", ParameterST.Pop().Render()); }
public override void ExitProgram(NewDecafParser.ProgramContext context) { finalResult = MainST.Pop().Render(); }
public override void ExitParameterType(NewDecafParser.ParameterTypeContext context) { ParameterST.Peek().Add("typeName", context.GetText()); }
public override void ExitMethodType(NewDecafParser.MethodTypeContext context) { MethodST.Peek().Add("type", context.GetText()); }
public override void ExitMethodSignature(NewDecafParser.MethodSignatureContext context) { MethodST.Peek().Add("id", context.Id().GetText()); }
public override void EnterSingle_varDeclaration(NewDecafParser.Single_varDeclarationContext context) { FieldST.Push(stg.GetInstanceOf("Field")); }
public override void EnterStructDeclaration(NewDecafParser.StructDeclarationContext context) { StructDecST.Push(stg.GetInstanceOf("StructDec")); }
public override void ExitSingle_varDeclaration(NewDecafParser.Single_varDeclarationContext context) { FieldDeclaration FD = new FieldDeclaration(); VarType currentTypeName = getNodeCommand(context.varType()) as VarType; FD.TypeName = currentTypeName; FD.FieldId = context.Id().GetText(); FD.IsArray = false; mainClass.addCommand(FD); setNodeCommand(context, FD); }
public override void ExitSingle_varDeclaration(NewDecafParser.Single_varDeclarationContext context) { FieldST.Peek().Add("typeName", TypeNameST.Pop().Render()); FieldST.Peek().Add("id", context.Id().GetText()); MainST.Peek().Add("field", FieldST.Pop().Render()); }
public override void ExitInt_varType(NewDecafParser.Int_varTypeContext context) { TypeNameST.Peek().Add("typeName", "int32"); }
public override void EnterStructDeclaration(NewDecafParser.StructDeclarationContext context) { StructDeclaration SD = new StructDeclaration(); setNodeCommand(context, SD); }
public override void ExitStructDeclaration(NewDecafParser.StructDeclarationContext context) { MainST.Peek().Add("field", StructDecST.Pop().Render()); }
public override void ExitProgram(NewDecafParser.ProgramContext context) { finalResult = mainClass.getGenCode(); }
public override void ExitStructImpl_varType(NewDecafParser.StructImpl_varTypeContext context) { TypeNameST.Peek().Add("typeName", context.Id().GetText()); TypeNameST.Peek().Add("isStruct", true); }
public override void ExitStructDeclaration(NewDecafParser.StructDeclarationContext context) { StructDeclaration SD = getNodeCommand(context) as StructDeclaration; SD.NameField = context.Id().GetText(); mainClass.addCommand(SD); }
public override void ExitVoid_varType(NewDecafParser.Void_varTypeContext context) { TypeNameST.Peek().Add("typeName", "void"); }