Estoy usando el analizador identifier
de FParsec para analizar los nombres de variables y funciones, que normalmente son una mezcla de caracteres Unicode y ASCII. Pero a veces he escapado de los caracteres Unicode al principio (como \u03C0
) o dentro del identificador (como swipe_board\u003A_b
). Todavía puedo hacerlos parseables usando las opciones isAsciiIdStart
y isAsciiIdContinue
, pero no puedo definir mi propia función personalizada para el procesamiento previo antes de la normalización. ¿Qué podría ser una solución aquí?¿Utilizando la función de preprocesamiento con el analizador de identificador en FParsec?
Respuesta
El analizador identifier
internamente primero analiza una cadena y luego la pasa a una instancia de IdentifierValidator
para su validación. Puesto que la clase C# IdentifierValidator
es accesible al público (aunque no documentado), fácilmente se podría adaptar el analizador identifier
a sus necesidades (haciendo que la etapa de colocación sucesiva de análisis inicial también reconoce los escapes).
El análisis de identificadores es un poco complicado debido a la compatibilidad con los pares de sustitución UTF-16, la normalización y la categoría de caracteres Unicode XID, que no se admite nativamente en .NET. Tal vez sólo tienen que apoyar identificadores ASCII o UCS-2 especificados en términos de categorías de caracteres con el apoyo de CharUnicodeInfo.GetUnicodeCategory
, en cuyo caso es probable que podría poner en práctica el análisis y validación en un solo paso utilizando many1Satisfy2
o many1Chars2
.
- 1. Aplicación de función de análisis con FParsec utilizando OperatorPrecedenceParser?
- 2. Análisis fragmentado con FParsec
- 3. Información de posición en fparsec
- 4. Gramáticas recursivas en FParsec
- 5. Números de análisis en FParsec
- 6. Cómo analizar comentarios con FParsec
- 7. Cómo analizar XML utilizando el analizador SAX
- 8. C++ identificador de llamada de función
- 9. En PHP 5.3.0, ¿cuál es el identificador de función "usar"?
- 10. Cómo resolver el error de FParsec "El combinador 'muchos' se aplicó a un analizador que tiene éxito sin consumir ..."
- 11. utilizando la función de C en C#
- 12. Coincide con el identificador Unicode de C# con Regex
- 13. error C/C++ preprocesamiento
- 14. Preprocesamiento de imágenes para reconocimiento de texto
- 15. Diferencia entre el analizador XML SAX, el analizador de arrastre y el analizador DOM en Android
- 16. ocr y técnicas de preprocesamiento de imágenes
- 17. ¿Existe una herramienta de preprocesamiento C#?
- 18. Comparación de fechas en Oracle utilizando la función de decodificación
- 19. El perfil no coincide con el identificador de aplicación
- 20. Preprocesamiento del lado del servidor para el mapa de calor con PHP
- 21. Utilizando C# Conde() con una función
- 22. Resaltador Lucene con analizador de origen
- 23. montaje LLVM: llamar a una función utilizando varargs
- 24. Obtención de nombre de archivo (o eliminación de archivo) utilizando el identificador de archivo
- 25. directiva de preprocesamiento no válido para #elseifdef en Xcode
- 26. Hibernate: objeto diferente con el mismo valor de identificador ya estaba asociado con la sesión
- 27. ¿Cómo entreno un identificador de identificador de entidad con nombre en OpenNLP?
- 28. Problema con HTML Analizador en IE
- 29. En clojure, ¿cómo escribir la función de identidad utilizando la función anónima literal?
- 30. Utilizando argumentos de función en update.formula