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.

Editor de Monaco Monarch: Tokenizando Paréntesis.

Estoy teniendo problemas con MonarchTokensProvider. En mi aplicación, estoy escribiendo una función de autocompletar personalizada y necesito ser capaz de identificar los paréntesis de apertura/cierre.

Como tal, espero que el tokenizador divida “()” en “(“, “)”. Sin embargo, al usar la configuración predeterminada de Monaco, los paréntesis que están uno al lado del otro se agrupan juntos.

Versión de monaco-editor: 0.30.1

Navegadores: Firefox, Chrome, Safari

SO: MacOS

Código de ejemplo que reproduce el problema:

Ver:

https://microsoft.github.io/monaco-editor/monarch.html

  • Presione F1 y seleccione “Desarrollador: Inspeccionar tokens”.
  • Mueva el cursor a los paréntesis en “main()”. Verá que “() “se muestra como un único token.

¿Alguien sabe la expresión regular que debo usar para los paréntesis? En general, solo he visto esto utilizado:

  // delimitadores y operadores
  [/[{}()\[\]]/, ' @brackets '],
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con MonarchTokensProvider para identificar paréntesis de apertura y cierre como tokens separados se puede solucionar utilizando una expresión regular personalizada para los paréntesis. Por defecto, la expresión regular busca delimitadores y operadores, incluyendo paréntesis, y los agrupa juntos como un único token.

    Para especificar una expresión regular personalizada para los paréntesis, modifique la regla brackets en el objeto de configuración monarchTokensProvider. Por ejemplo, para identificar los paréntesis de apertura y cierre como tokens separados, utilice la siguiente expresión regular:

    /[\(\)]/
    

    Esta expresión regular coincide con cualquier paréntesis de apertura o cierre y los tokeniza como tokens separados.

    A continuación se muestra un ejemplo de cómo utilizar esta expresión regular en la configuración de monarchTokensProvider:

    monaco.languages.register({ id: 'myCustomLanguage' });
    
    monaco.languages.setMonarchTokensProvider('myCustomLanguage', {
      brackets: [
        { token: 'delimiter.parenthesis', open: '(', close: ')' }
      ],
    
      // Otros tipos de token y reglas van aquí
    });
    

    En este ejemplo, la regla brackets especifica sólo la expresión regular para los paréntesis y le asigna el tipo de token delimiter.parenthesis, que se puede estilizar en el editor.

    Esto debería solucionar el problema de identificar los paréntesis de apertura y cierre como tokens separados en MonarchTokensProvider.

Comments are closed.