Articles of pyparsing

Emparejando líneas no vacías con pyparsing

Estoy tratando de hacer una pequeña aplicación que utiliza el uso de pyparsing para extraer datos de archivos producidos por otro progtwig. Estos archivos tienen el siguiente formato. SOME_KEYWORD: line 1 line 2 line 3 line 4 ANOTHER_KEYWORD: line a line b line c ¿Cómo puedo construir una gramática que ayude a extraer la line […]

Cómo hacer coincidir paréntesis / paréntesis en pyparsing

Tengo un token de gramática especificado como: list_value = Suppress(oneOf(“[ (“)) + Group( delimitedList(string_value | int_value))(“list”) + Suppress(oneOf(“] )”)) Sin embargo, esto obviamente permite (foo, bar] ¿Cómo hago cumplir que las listas de apertura y cierre de caracteres deben coincidir?

Pyparsing – donde el orden de los tokens es impredecible

Quiero poder extraer el tipo y el recuento de letras de un texto donde las letras pueden estar en cualquier orden. Hay algunos otros análisis en los que estoy trabajando, ¡pero este bit me ha dejado perplejo! input -> result “abc” -> [[‘a’,1], [‘b’,1],[‘c’,1]] “bbbc” -> [[‘b’,3],[‘c’,1]] “cccaa” -> [[‘a’,2],[‘c’,3]] Podría usar la búsqueda o […]

No se puede pyparsing Dict () para devolver el diccionario nested

Estoy tratando de analizar cadenas de la forma: ‘foo(bar:baz;x:y)’ Me gustaría que los resultados se devuelvan en forma de un diccionario nested, es decir, para la cadena anterior, los resultados deberían tener este aspecto: { ‘foo’ : { ‘bar’ : ‘baz’, ‘x’ : ‘y’ } } A pesar de las numerosas combinaciones de Dict () […]

Análisis de llamadas de funciones anidadas mediante pyparsing

Estoy tratando de usar pyparsing para analizar las llamadas de función en la forma: f(x, y) Eso es fácil. Pero como se trata de un analizador de descendencia recursiva, también debería ser fácil de analizar: f(g(x), y) Eso es lo que no puedo conseguir. Aquí hay un ejemplo resumido: from pyparsing import Forward, Word, alphas, […]

¿Cómo puedo configurar PyParsing en Google App Engine?

Vi en la documentación de Google App Engine que http://www.antlr.org/ Antlr3 se utiliza como la biblioteca de terceros de análisis. Pero por lo que sé, Pyparsing parece ser más fácil de usar y solo apunto a analizar una syntax simple. ¿Hay alguna alternativa? ¿Puedo obtener pyparsing trabajando en App Engine?

Pyparsing: ¿Cómo obtener la ubicación del token?

Tengo una gramática simple de pyparsing que coincide con números separados por espacios: from pyparsing import * NUMBER = Word( nums ) STATEMENT = ZeroOrMore( NUMBER ) print( STATEMENT.parseString( “1 2 34” ) ) Dado 1 2 34 cadena de prueba, devuelve 3 cadenas que son símbolos analizados. Pero, ¿cómo encuentro la ubicación de cada […]

Analizar los datos de línea hasta la palabra clave con pyparsing

Estoy tratando de analizar los datos de línea y luego agruparlos en la lista. Aquí está mi guión: from pyparsing import * data = “””START line 2 line 3 line 4 END START line a line b line c END “”” EOL = LineEnd().suppress() start = Keyword(‘START’).suppress() + EOL end = Keyword(‘END’).suppress() + EOL line […]

Problema de propagación con operadores.

Hice una gramática con pyparsing, y tengo un problema. La gramática intenta analizar una consulta de búsqueda (con precedencia de operador, paréntesis, etc.) y necesito espacios para trabajar como el operador y. Por ejemplo, esto funciona bien: (word and word) or word Pero esto falla: (word word) or word Y quiero que la segunda consulta […]

¿Cómo puedo analizar sangrías y deducciones con pyparsing?

Aquí hay un subconjunto de la gramática de Python: single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE stmt: simple_stmt | compound_stmt simple_stmt: small_stmt (‘;’ small_stmt)* [‘;’] NEWLINE small_stmt: pass_stmt pass_stmt: ‘pass’ compound_stmt: if_stmt if_stmt: ‘if’ test ‘:’ suite (‘elif’ test ‘:’ suite)* [‘else’ ‘:’ suite] suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT (Puedes leer la gramática […]