Estoy buscando acelerar un poco mi proceso de descubrimiento aquí, ya que esta es mi primera incursión en el mundo del análisis léxico. Tal vez este es incluso el camino equivocado. Primero, describiré mi problema:Python - análisis léxico y tokenización
Tengo archivos de propiedades muy grandes (del orden de 1,000 propiedades) que, cuando se destilan, son solo unas 15 propiedades importantes y el resto se puede generar o rara vez cambio.
Así, por ejemplo:
general {
name = myname
ip = 127.0.0.1
}
component1 {
key = value
foo = bar
}
Este es el tipo de formato que quiero crear a tokenize algo como:
property.${general.name}blah.home.directory = /blah
property.${general.name}.ip = ${general.ip}
property.${component1}.ip = ${general.ip}
property.${component1}.foo = ${component1.foo}
en
property.mynameblah.home.directory = /blah
property.myname.ip = 127.0.0.1
property.component1.ip = 127.0.0.1
property.component1.foo = bar
análisis léxico y tokenización suena como mi mejor ruta, pero esta es una forma muy simple de hacerlo. Es una gramática simple, una sustitución simple y me gustaría asegurarme de no llevar un mazo para golpear un clavo.
Pude crear mi propio lexer y tokenizer, o ANTlr es una posibilidad, pero no me gusta reinventar la rueda y ANTlr suena como overkill.
No estoy familiarizado con las técnicas de compilación, por lo que los punteros en la dirección correcta & serían más apreciados.
Nota: Puedo cambiar el formato de entrada.
Por qué no usar JSON en lugar de crear su propio programa de análisis ?? – AndiDog
Su traducción de ejemplo parece tener algunos errores. Si no, no puedo ver por qué "$ {component1} .ip" se tradujo en "component1" en la línea 3 del ejemplo. Si la sintaxis es así de regular, probablemente estallaría los $ {identificadores} con expresiones regulares y los reemplazaría con búsquedas de diccionario de paso cuando no haya entradas de diccionario. – msw
Hubo un par de errores allí, creo que los he corregido. –