Este es el comando flexml que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
flexml: genera procesadores XML de validación y aplicaciones desde DTD
SINOPSIS
flexml [-ASHDvdnLXV] [-sesqueleto] [-ppubido] [-iencabezado_inicial] [-uuri] [-rRootags] [-aacciones]
nombre [.dtd]
DESCRIPCIÓN
flexml lee nombre.dtd que debe ser una DTD (Definición de tipo de documento) que describa el formato
de documentos XML (Extensible Markup Language) y produce un XML de "validación" procesador
con una interfaz para soportar XML Práctica s. Se pueden generar aplicaciones adecuadas
opcionalmente de "archivos de acción" especiales, ya sea para vincular o combinar textualmente con el
procesador.
El procesador generado solo validará documentos que se ajusten estrictamente a la DTD,
sin extensión it, más precisamente en la práctica restringimos la regla XML [28] a
[28r] doctypedecl :: = ' '
donde el "ExternalId" denota el DTD utilizado. (Se podría decir, de hecho, que flexml
implementa el marcado "no extensible". :)
El procesador generado es un flexionar(1) escáner, por defecto llamado nombre.l con un correspondiente
Archivo de encabezado C nombre.h para la compilación separada de aplicaciones generadas. Opcionalmente
flexml toma un acciones archivo con acciones por elemento y produce un archivo C con elemento
funciones para una aplicación XML con puntos de entrada llamados desde el procesador XML (puede
también incorpore la aplicación XML en el procesador XML para crear aplicaciones XML independientes
pero esto evita compartir el procesador entre aplicaciones).
En "OPCIONES" enumeramos las posibles opciones, en "FORMATO DE ARCHIVO DE ACCIÓN" explicamos cómo escribir
aplicaciones, en "COMPILACIÓN" explicamos cómo compilar procesadores producidos y
aplicaciones en ejecutables, y en "BUGS" enumeramos las limitaciones actuales del sistema
antes de dar referencias estándar.
OPCIONES
flexml toma las siguientes opciones.
--ser único, -A
Generar un autónomo aplicación de escáner. Si se combina con -aacciones entonces el
la aplicación será nombrada como acciones con la extensión reemplazada por .l, de lo contrario
Estará en nombre.l. Conflictos con -S, -Hy -D.
--comportamiento acciones, -a acciones
Utiliza el acciones archivo para producir una aplicación XML en el archivo con el mismo nombre que
acciones después de reemplazar la extensión con .c. Si se combina con -A entonces en cambio el
La aplicación independiente incluirá las funciones de acción.
--ficticio [nombre de la aplicación], -D [nombre de la aplicación]
Genere una aplicación ficticia con solo funciones vacías para ser invocadas por el XML
procesador. Si nombre de la aplicación no se especifica en la línea de comando, por defecto es
nombre-ficticio.c. Si se combina con -a acciones entonces la aplicación insertará el
acciones especificadas y ser nombrado como acciones con la extensión reemplazada por .c.
Conflictos con -A; implicado por -a a menos que cualquiera de -HDD está especificado.
--depurar, -d
Activa el modo de depuración en el escáner flexible y también imprime los detalles de la DTD
análisis realizado por flexml.
--encabezamiento [nombre_del_encabezado], -H [nombre_del_encabezado]
Genere el archivo de encabezado. Si el nombre_del_encabezado no se especifica en la línea de comando,
por defecto es nombre.h. Conflictos con -A; activado de forma predeterminada si ninguno de -HDD especificado.
--lineno, -L
Hace que el procesador XML (producido por flexionar(1)) cuente las líneas en la entrada y mantenga
está disponible para las acciones de la aplicación XML en el entero "yylineno". (Esto es por
predeterminado, ya que la sobrecarga de rendimiento es significativa).
--tranquilo, -q
Evita que el procesador XML (producido por flexionar(1)) de informar el error que se ejecuta
en stderr. En su lugar, los usuarios tendrán que agrupar los mensajes de error con el
parse_err_msg () función. De forma predeterminada, los mensajes de error se escriben en stderr.
- corrida en seco, -n
"Ejecución en seco": no produce ninguno de los archivos de salida.
--pubido pubido, -p pubido
Establece el tipo de documento en "PÚBLICO" con el identificador pubido en lugar de "SISTEMA",
el valor por defecto.
--init_header encabezado_inicial, -i encabezado_inicial
Pone una línea que contiene "#include" init_header "" en la sección "% {...%}" en la parte superior de
el archivo .l generado. Esto puede ser útil para hacer varios flex "#define" s, para
ejemplo "YY_INPUT" o "YY_DECL".
--sid=id del sistema
Reemplaza el ID de "SISTEMA" del DTD aceptado. A veces es útil cuando su dtd es
colocado en un subdirectorio.
- etiquetas de raíz etiquetas de raíz, -r etiquetas de raíz
Restringe el procesador XML para validar solo documentos con uno de los elementos raíz
enumerados en el espacio separado por comas etiquetas de raíz.
--escáner [nombre_escáner], -S [nombre_escáner]
Genere el escáner. Si nombre_escáner no se da en la línea de comando, por defecto es
nombre.l. Conflictos con -A; activado de forma predeterminada si ninguno de -HDD especificado.
--skel esqueleto, -s esqueleto
Usa el escáner de esqueleto esqueleto en lugar del predeterminado.
--act-bin acto flexml, -T acto flexml
Esta es una opción interna que se utiliza principalmente para probar versiones de flexml que aún no están instaladas.
--incremento de pila incremento_pila, -b incremento_pila
Establece FLEXML_BUFFERSTACKSIZE en stack_increment (100000 por defecto). Esto controla
cuánto crece la pila de datos en cada realloc ().
--etiqueta-prefijo CADENA, -O CADENA
Use STRING para diferenciar múltiples versiones de flexml en el mismo código C, al igual que
el argumento -P flex.
--uri uri, -u uri
Establece el URI de la DTD, que se utiliza en el encabezado "DOCTYPE", en el valor especificado uri (la
el predeterminado es el nombre de DTD).
--verboso, -v
Sea detallado: repita cada declaración DTD (después de la expansión de parámetros).
--versión, -V
Imprime la versión de flexml y salir
ACCIÓN ARCHIVO FORMATO
Archivos de acción, pasados al -a opción, ¿los documentos XML se ajustan a la DTD
flexml-act.dtd que es el siguiente:
Los elementos deben usarse de la siguiente manera:
"parte superior"
Úselo para código C de nivel superior, como declaraciones globales, funciones de utilidad, etc.
"comienzo"
Adjunta el código como una acción al elemento con el nombre de la "" etiqueta "" requerida
atributo. El componente ""% C-code; "" debe ser un código C adecuado para su inclusión en un C
bloque (es decir, dentro de "{" ... "}" por lo que puede contener variables locales); además el
las siguientes extensiones están disponibles:
"{"atributo"}": Se puede utilizar para acceder al valor del atributo como se establece con
atributo"="propuesta de en la etiqueta de inicio. C ª, "{"atributo"}" se interpretará
dependiendo de la declaración del atributo. Si el atributo se declara como un
tipo enumerado como
entonces el valor del atributo C es de un tipo enumerado con los elementos escritos
"{"atributo"="alt1"}", "{"atributo"="alt2"}", etc .; además un desarmado atributo
tiene el "valor" "{!"atributo"}". Si el atributo no es una enumeración, entonces
"{"atributo"}" es una cadena C terminada en nulo (de tipo "char *") y "{!"atributo"}"
es nulo".
"fin"
De manera similar, adjunta el código como una acción a la etiqueta final con el nombre de la
atributo "" etiqueta ""; también aquí el componente ""% C-code; "" debe ser código C adecuado para
inclusión en un bloque C. En caso de que el elemento tenga contenido "Mixto", es decir, fue declarado
para permitir "#PCDATA", la siguiente variable está disponible:
"{#PCDATA}": contiene el texto ("#PCDATA") del elemento como una C terminada en nulo
cadena (de tipo "char *"). En caso de que el elemento de contenido mixto en realidad mezcle texto y
elementos secundarios, entonces "pcdata" contiene la concatenación simple de los fragmentos de texto como
una cuerda.
"principal"
Por último, un elemento "" principal "" opcional puede contener la función C "principal" del XML
solicitud. Normalmente, la función "principal" debe incluir (al menos) una llamada del
Procesador XML:
"yylex ()": invoca el procesador XML producido por flexionar(1) en el documento XML que se encuentra en
la entrada estándar (en realidad, el identificador de archivo "yyin": consulte el manual para flexionar(1) para
información sobre cómo cambiar esto, así como el nombre "yylex").
Si no se proporciona una acción "principal", se utiliza lo siguiente:
int main () {salida (yylex ()); }
Es recomendable utilizar las secciones XML <"! [CDATA [" ... "]]"> para el código C para asegurarse de que
todos los caracteres se pasan correctamente al archivo de salida.
Finalmente tenga en cuenta que flexml maneja elementos vacíosetiqueta"/"> como equivalente aetiqueta> <"/"etiqueta>.
COMPILACION
Las siguientes make(1) el fragmento de archivo muestra cómo se puede compilar flexml-programas generados:
# Programas.
FLEXML = flexml -v
# Genere un procesador XML enlazable con encabezado para la aplicación.
% .l% .h:% .dtd
$ (FLEXML) $
# Genere una fuente C desde un escáner flexible.
% .c:% .l
$ (FLEX) -Bs -o "$ @" "$ <"
# Genere la fuente C de la aplicación XML para vincularla con el procesador.
# Nota: La dependencia debe tener el formato "appl.c: appl.act proc.dtd".
% .c:% .act
$ (FLEXML) -D -a $ ^
# Generación directa de procesador + aplicación XML autónomo.
# Nota: La dependencia debe tener el formato "appl.l: appl.act proc.dtd".
% .l:% .act
$ (FLEXML) -A -a $ ^
Use flexml en línea usando los servicios de onworks.net