def enterSimple_assign(self, ctx: ConfigParser.Simple_assignContext): varName = ctx.id_str().getText() rhsValName = ctx.value().getText() assignVar = Cm.CfgVariable.resolveLhsExpression( varName, Cm.CfgNumDataType) # TODO assign numeric only for now rhsVal = Cm.CfgVariable.resolveRhsExpression( rhsValName, Cm.CfgNumDataType) # TODO assign numeric only for now #print('enterSimple_assign: var=' + varName + ', rhsValName=' + rhsValName) Cm.CfgAssign(assignVar, Cm.ConfigAssignType.EQ, rhsVal)
def enterRead_config_call(self, ctx: ConfigParser.Read_config_callContext): #print('enterRead_config_call: ') readType = ctx.getChild(2).getText() readPath = ctx.path().getText() readVar = ctx.id_str().getText() #print(' ' + readType + ' ' + readPath + ' ' + readVar) rNode = Cm.CfgReadNode(readPath, readType, None) #print('enterRead_config_call: findVar name=' + readVar + ", ret=" + str(Cm.BaseCfgNode.peekNode().findVar(readVar, True))) rVar = Cm.CfgVariable.resolveLhsExpression( readVar, Cm.CfgNumDataType) # read return variable Cm.CfgAssign(rVar, Cm.ConfigAssignType.EQ, rNode)
def enterClass_assign(self, ctx: ConfigParser.Class_assignContext): varName = ctx.path_elem().getText() className = ctx.id_str().getText() classParms = ctx.call_parms().getText() assignVar = Cm.CfgVariable.resolveLhsExpression( varName, Cm.CfgClassNode ) # read return variable - special case using CfgClass rather than data type foundClass = Cm.CfgClassNode.findClass( className) # find the class that is being called #print('enterClass_assign: var=' + varName + ', cfgClass=' + className + ', parms=' + classParms + ', foundClass=' + foundClass.name) # extract parms and check vs class signature resolvedInputList = foundClass.verifyInputParms( classParms, Cm.BaseCfgNode.peekNode()) assignVar.val = (foundClass, resolvedInputList) Cm.CfgAssign(assignVar, Cm.ConfigAssignType.EQ, foundClass)