public override string VisitCInstruccion([NotNull] gramticSicEstandarParser.CInstruccionContext context) { int codigoObjeto = 0; int indexado = 0; string aux; string modoDir = context.oper().GetText(); if (modoDir[modoDir.Length - 2] == ',') { indexado = 1 << 15; modoDir = modoDir.TrimEnd(',', 'X'); } // Se verifica que la etiqueta exista en la tabla de tabsim. if (tabsim.ContainsKey(modoDir)) { codigoObjeto = Convert.ToInt32(codOp[context.CODOP().GetText()], 16) << 16 | indexado | tabsim[modoDir]; aux = codigoObjeto.ToString("X").PadLeft(6, '0'); } else { codigoObjeto = Convert.ToInt32(codOp[context.CODOP().GetText()], 16) << 16 | indexado | Convert.ToInt32("7FFF", 16); aux = codigoObjeto.ToString("X").PadLeft(6, '0') + ",error"; } listaCodigoObjeto.Add(aux); return(aux); }
private void SumaDirectivaOInstruccion(gramticSicEstandarParser.CInstruccionContext context) { if (context.CODOP() == null) { contadorPrograma = base.VisitCInstruccion(context); } else { if (context.children[0].GetText() != "+") { contadorPrograma += 3; } else { formato4 = true; contadorPrograma += 4; } } }
public override int VisitCInstruccion([NotNull] gramticSicEstandarParser.CInstruccionContext 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); } else { SumaDirectivaOInstruccion(context); throw new Exception("Error: Simbolos Duplicados: "); } } SumaDirectivaOInstruccion(context); } else { string etiqueta = context.etiqueta().GetText(); tabsim.Add(etiqueta, contadorPrograma); contadorPrograma += 3; } return(contadorPrograma); }