Articles of pyparsing

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 […]

Distinguir partidos en pyparsing

Quiero analizar algunas palabras y algunos números con pyparsing. Derecho simple from pyparsing import * A = Word(nums).setResultsName(‘A’) B = Word(alphas).setResultsName(‘B’) expr = OneOrMore(A | B) result = expr.parseString(“123 abc 456 7 d”) print result El código anterior imprime [‘123’, ‘abc’, ‘456’, ‘7’, ‘d’] . Así que todo funcionó. Ahora quiero trabajar un poco con […]

¿Cómo puedo usar pyparsing para analizar expresiones anidadas que tienen múltiples tipos de apertura / cierre?

Me gustaría usar pyparsing para analizar una expresión de la forma: expr = ‘(gimme [some {nested [lists]}])’ , y recuperar una lista de python de la forma: [[[‘gimme’, [‘some’, [‘nested’, [‘lists’]]]]]] . En este momento mi gramática se ve así: nestedParens = nestedExpr (‘(‘, ‘)’) nestedBrackets = nestedExpr (‘[‘, ‘]’) nestedCurlies = nestedExpr (‘{‘, ‘}’) […]

¿Cuál es la mejor manera de analizar una gramática simple?

Ok, entonces he hecho un montón de preguntas más pequeñas sobre este proyecto, pero todavía no tengo mucha confianza en los diseños que se me ocurren, así que voy a hacer una pregunta en una escala más amplia. Estoy analizando las descripciones de requisitos previos para un catálogo de cursos. Las descripciones casi siempre siguen […]