Estoy tratando de utilizar Parsec para analizar algo como esto:Haskell Parsec y propiedades no ordenadas
property :: CharParser SomeObject
property = do
name
parameters
value
return SomeObjectInstance { fill in records here }
Me estoy poniendo en práctica la especificación de iCalendar y en cada que hay un nombre: parámetros: valor de triplete, muy parecido la forma en que XML tiene un nombre: atributos: contenido triplete. Infact you could very easily convert an iCalendar into XML format (pensé que realmente no puedo ver las ventajas).
Mi punto es que los parámetros no tienen que venir en orden alguno y cada parámetro puede tener un tipo diferente. Un parámetro puede ser una cadena mientras que el otro es la identificación numérica de otro elemento. Es posible que todavía no compartan ninguna similitud. Al final, quiero ubicarlos correctamente en los campos de registro correctos para cualquier 'SomeObjectInstance' que desee que el analizador devuelva. ¿Cómo hago este tipo de cosas (o puede señalarme un ejemplo de dónde alguien tuvo que analizar datos como este)?
Gracias, sé que mi pregunta es probablemente un poco confusa, pero eso refleja mi nivel de comprensión de lo que debo hacer.
Editar: yo estaba tratando de evitar dar el resultado esperado (porque es grande, no porque se oculta) pero aquí es un ejemplo de un archivo de entrada (de Wikipedia):
COMENZAR : VCALENDAR
VERSION: 2.0
PRODID: - // hacksw/handcal // NONSGML v1.0 // EN
BEGIN: VEVENT
UID: [email protected]
DTSTAMP: 19970714T170000Z
ORGANIZADOR; CN = John Doe: mailto: [email protected]
DTSTART: 19970714T170000Z
DTEND: 19970715T035959Z
RESUMEN: partido del día Bastille
END: VEVENT
END: VCALENDAR
Como puede ver, contiene un VEvent dentro de un VCalendar, hice data structures that represent them here.
Estoy tratando de escribir un analizador sintáctico que analiza ese tipo de archivo en mis estructuras de datos y estoy atascado en el bit donde necesito manejar las propiedades que vienen en cualquier orden con cualquier tipo; fecha, hora, int, cadena, uid, etc. Espero que tenga más sentido sin repetir toda la especificación de iCalendar.
No estoy seguro de lo que estás preguntando. ¿Podría dar un ejemplo de una posible entrada y el resultado esperado? – sepp2k
Di más información y espero que tenga más sentido ahora, usted ha esperado la entrada y las estructuras de datos que estoy tratando de completar con el analizador. Ahora solo estoy tratando de descubrir cómo hacerlo con parsec. –