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.

Destacando PsiElement con múltiples hijos en el complemento Intellij.

En mi lenguaje de sintaxis, mis cadenas pueden contener tokens (macros). Por lo tanto, necesito dividir una cadena en sus partes:

'  partes * '

Esto me da un árbol PSI de:

Value(value)(14,33)
  StringElement(string)(14,33)
    PsiElement(QUOTE_START)('"')(14,15)
    PsiElement(PART)('....')(15,32)
    PsiElement(QUOTE_END)('"')(32,33)

Quiero darle a toda la cadena un color de resaltado. Sin embargo, mi resaltador de sintaxis nunca se consulta para el StringElement. (Funciona bien para sus componentes).

¿Está limitado el PSI solo a nodos que son directamente analizados por el Lexer?

Tags:  

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en intellij-plugin, puedo decir que PSI no se limita solo a los nodos que son analizados directamente por el Lexer. Sin embargo, en este caso específico, el nodo “StringElement” podría no ser considerado por el resaltador de sintaxis porque no se considera un token separado por el Lexer. En su lugar, se considera parte del token de cadena más grande.

    Para abordar este problema, puede modificar el Lexer para identificar el nodo “StringElement” como un token separado y agregarlo a la lista de nodos que deben ser resaltados. Alternativamente, puede modificar el resaltador de sintaxis para reconocer el nodo “StringElement” como parte del token de cadena más grande y aplicar el resaltado deseado a todo el token de cadena.

Comments are closed.