es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resaltando la Sintaxis en mcedit para ensamblador

Quiero resaltar un código de la siguiente manera:

jmp label ;comentarios

Quiero que solo se resalte label. He intentado algo como esto:

context exclusive jmp\t \n brightmagenta

Pero en este caso, “;comentarios” también se vuelve de color magenta brillante, lo cual no es lo que quiero. Para los comentarios, hay otro contexto exclusivo. También he intentado lo siguiente:

keyword jmp\t[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@] brightmagenta

Pero en este caso, jmp también aparece de color magenta brillante.

¿Cómo puedo implementar esto? Solo quiero que label se vea afectado por el resaltado, mientras que los comentarios se resaltan de la misma manera en todas partes (en la imagen adjunta, los comentarios de jnz son de color magenta brillante y en la línea siguiente son de color marrón) y todos los saltos no se ven afectados por el resaltado, por lo tanto, no necesito agregarlos (y todas las demás instrucciones, variables, constantes, etc.) manualmente al archivo de sintaxis.

Pregunta estrechamente relacionada, ya que cada programador de ensamblador utiliza la macro invoke, ¿es posible resaltar solo la función como se muestra en la captura de pantalla? La función se escribió como una palabra clave en el archivo de sintaxis, sin embargo, no quiero que se agreguen todas las funciones al archivo de sintaxis.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resaltar solo la etiqueta en el código “jmp etiqueta ;comentarios”, dejando el resto del código sin afectar, se puede utilizar una expresión regular para coincidir solo con la parte de la etiqueta. A continuación, se muestra un ejemplo de cómo se podría hacer esto en el archivo de sintaxis:

    contexto exclusivo resaltado-etiqueta
        coincidencia \bjmp\s+(\w+)\b(?=.*;)
        palabra_clave \1
    

    Esto crea un nuevo contexto exclusivo llamado “resaltado-etiqueta” que se aplicará solo a las etiquetas coincidentes con la expresión regular. La expresión regular coincide con la palabra clave “jmp” seguida de uno o más caracteres de palabra (es decir, la etiqueta) y asegura que haya un comentario con punto y coma más adelante en la línea (“(?=.*;)” es una afirmación de búsqueda adelante positiva).

    La línea “palabra_clave \1” aplica el estilo de “palabra_clave” (es decir, el color magenta brillante) a la etiqueta coincidente. Ten en cuenta que, dado que este es un contexto exclusivo, no interferirá con otros contextos que también puedan coincidir con la etiqueta (por ejemplo, si aparece como parte de un operando de instrucción).

    Para la segunda pregunta sobre resaltar solo el nombre de la función en una macro “invoke”, puedes utilizar un enfoque similar:

    contexto exclusivo resaltado-invoke
        coincidencia \binvoke\s+(\w+)\b
        palabra_clave \1
    

    Esto coincide con la palabra clave “invoke” seguida de un nombre de función (una serie de caracteres de palabra) y aplica el estilo de “palabra_clave” solo al nombre de la función. Como este también es un contexto exclusivo, no interferirá con otras reglas de sintaxis para la macro “invoke” u otras instrucciones.

Comments are closed.