public override int VisitFuncionByte([NotNull] gramticSicEstandarParser.FuncionByteContext context) { string hexValue = context.constantes().GetText(); int cont = 0; string etiqueta = ""; string ET = context.children[0].GetText(); if (context.children[1].GetChild(1) != null && context.ChildCount != 3) { etiqueta = context.children[1].GetChild(0).GetText(); } //bool band = false; foreach (char C in hexValue) { if (C == '\'') { cont++; } } if (context.etiqueta() != null) { string etiqueta2 = context.etiqueta().GetText(); // Se verifica que no exista la etiqueta de lo contrario se genera un error (SIMBOLO DUPLICADOS). if (!tabsim.ContainsKey(ET)) { tabsim.Add(ET, contadorPrograma); } } if (hexValue.Contains('X') && cont == 2 && !ChecaPalabrasReservadas(etiqueta)) { hexValue = hexValue.Remove(0, 1); char[] delimiter = { '\'' }; hexValue = hexValue.Split(delimiter, StringSplitOptions.RemoveEmptyEntries)[0]; if (hexValue.Length % 2 == 0) { contadorPrograma += hexValue.Length / 2; } else { contadorPrograma += (hexValue.Length + 1) / 2; } } else { if (hexValue.Contains('C') && cont == 2 && !ChecaPalabrasReservadas(etiqueta)) { hexValue = hexValue.Remove(0, 1); char[] delimiter = { '\'' }; hexValue = hexValue.Split(delimiter, StringSplitOptions.RemoveEmptyEntries)[0]; contadorPrograma += hexValue.Length; } } return(contadorPrograma); }
public override string VisitFuncionByte([NotNull] gramticSicEstandarParser.FuncionByteContext context) { string constante = context.constantes().GetText(); if (constante[0] == 'X') { if (constante.Length % 2 != 0) { return(constante.Trim('X', '\'')); } else { return("0" + constante.Trim('X', '\'')); } } constante = constante.Remove(0, 2); constante = constante.Remove(constante.Length - 1); byte[] codigoAscci = Encoding.ASCII.GetBytes(constante); listaCodigoObjeto.Add(BitConverter.ToString(codigoAscci).Replace("-", "")); return(BitConverter.ToString(codigoAscci).Replace("-", "")); }