public override int VisitFuncionDirectiva([NotNull] gramticSicEstandarParser.FuncionDirectivaContext context) { string etiqueta1 = ""; string ET = context.children[0].GetText(); if (context.children[1].GetChild(1) != null && context.ChildCount != 3) { etiqueta1 = context.children[1].GetChild(0).GetText(); } if (!ChecaPalabrasReservadas(etiqueta1)) { if (context.etiqueta() != null) { string etiqueta = context.etiqueta().GetText(); // Se verifica que no exista la etiqueta de lo contrario se genera un error (SIMBOLO DUPLICADOS). if (!tabsim.ContainsKey(etiqueta)) { tabsim.Add(etiqueta, contadorPrograma); } } string valor = context.operdir().GetText(); if (valor.Contains("H")) { string AUX = context.tipodir().GetText(); switch (AUX) { case "RESW": contadorPrograma += 3 * Convert.ToInt32(valor, 16); break; case "RESB": contadorPrograma += Convert.ToInt32(valor.TrimEnd('H'), 16); break; case "WORD": contadorPrograma += 3; break; } } else { String dir = context.tipodir().GetText(); switch (dir) { case "RESW": contadorPrograma += 3 * Convert.ToInt32(valor); break; case "RESB": contadorPrograma += Convert.ToInt32(valor);; break; case "WORD": contadorPrograma += 3; break; } } } return(contadorPrograma); }
public override string VisitFuncionDirectiva([NotNull] gramticSicEstandarParser.FuncionDirectivaContext context) { string constante = context.children[1].GetText().ToString(); string valor = context.operdir().GetText(); String val = context.tipodir().ToString(); if (valor.Contains("H")) { switch (context.tipodir().GetText()) { case "RESW": listaCodigoObjeto.Add("------"); constante = "------"; break; case "RESB": listaCodigoObjeto.Add("------"); constante = "------"; break; case "WORD": char[] delimiter = { 'h', 'H' }; if (valor.Contains("h") || valor.Contains('H')) { constante = valor.TrimEnd(delimiter).PadLeft(6, '0'); } else { constante = (int.Parse(valor).ToString("X").PadLeft(6, '0')); } listaCodigoObjeto.Add(constante); break; } } else { String dir = context.tipodir().GetText(); switch (dir) { case "RESW": listaCodigoObjeto.Add("------"); constante = "------"; break; case "RESB": listaCodigoObjeto.Add("------"); constante = "------"; break; case "WORD": char[] delimiter = { 'h', 'H' }; if (valor.Contains("h") || valor.Contains('H')) { constante = valor.TrimEnd(delimiter).PadLeft(6, '0'); } else { constante = (int.Parse(valor).ToString("X").PadLeft(6, '0')); } listaCodigoObjeto.Add(constante); break; } } return(constante); }