InglésFrancésEspañol

Ad


icono de página de OnWorks

cpphs: en línea en la nube

Ejecute cpphs en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando cpphs 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


cpphs - preprocesador cpp-a-like liberalizado para Haskell

SINOPSIS


cpps [NOMBRE DEL ARCHIVO|OPCIÓN] ...

DESCRIPCIÓN


cpps es una reimplementación liberalizada de cpp (1) el preprocesador C, en y para
Haskel.

¿Por qué volver a implementar cpp? Correcta o incorrectamente, el preprocesador C se usa ampliamente en Haskell
código fuente. Permite la compilación condicional para diferentes compiladores, diferentes
versiones del mismo compilador y diferentes plataformas de sistema operativo. También se usa ocasionalmente
por su lenguaje macro, que puede permitir ciertas formas de detalles específicos de la plataforma-
llenado, como la tediosa generación repetitiva de definiciones de instancia y FFI
declaraciones. Sin embargo, hay dos problemas con cpp, además de la estética obvia
unos

Para algunos sistemas Haskell, notablemente Hugs en Windows, un verdadero cpp no ​​está disponible por
predeterminado.

Incluso para los otros sistemas Haskell, el cpp común proporcionado por la serie gcc 3.x
está cambiando sutilmente de formas que son incompatibles con la sintaxis de Haskell. Allí tienen
siempre ha habido problemas con, por ejemplo, los espacios entre cadenas y los caracteres principales en
identificadores. Estos problemas solo van a empeorar.

Por lo tanto, parecía correcto intentar proporcionar una alternativa a cpp, ambas más compatibles con
Haskell, y escrito en Haskell para que pueda distribuirse con compiladores.

cpps tiene muchas funciones y es compatible con el -tradicional estilo de cpp.
Tiene dos modos:

solo compilación condicional (--nomacro),

y macroexpansión completa (predeterminado).

In --nomacro modo, cpps realiza solo acciones de compilación condicionales, es decir #incluir'S,
#Si's y #ifdefse procesan de acuerdo con las definiciones de reemplazo de texto (ambos comandos
línea e interno), pero no se realiza ninguna expansión de macro parametrizada. En su totalidad
El modo de compatibilidad (el predeterminado), los reemplazos textuales y las expansiones de macros también son
procesado en el resto del cuerpo del texto que no es CPP.

Características de trabajo:

#ifdef compilación condicional simple

#Si el lenguaje booleano completo de defined (), &&, ||, ==, etc.

#elif condicionales encadenados

#definir
definiciones en línea (reemplazos de texto y macros)

#undef revocación en línea de definiciones

#incluir
inclusión de archivos

#línea directivas de número de línea

\n Continuaciones de línea dentro de todas las # directivas

/ ** / catenation de tokens dentro de una macrodefinición

## Catenation de tokens de estilo ANSI

# Cadena de tokens de estilo ANSI

__EXPEDIENTE__
reemplazo de texto especial para mensajes de error de bricolaje

__LÍNEA__
reemplazo de texto especial para mensajes de error de bricolaje

__FECHA__
reemplazo de texto especial

__TIEMPO__
reemplazo de texto especial

La expansión macro es recursiva. La redefinición de un nombre de macro no genera una advertencia.
Las macros se pueden definir en la línea de comandos con -D al igual que los reemplazos textuales. Macro
se permite que los nombres sean identificadores de Haskell, por ejemplo, con el número primo `y la comilla invertida ´
caracteres, que es un poco más flojo que en C, pero aún no pueden incluir el operador
símbolos.

La numeración de líneas en la salida se conserva para que cualquier procesador posterior pueda dar
mensajes de error significativos. Cuando un archivo es #incluir'D, cpps insertos #línea directivas para
la misma razon. La numeración debe ser correcta incluso en presencia de continuaciones de línea.
Si no quieres #línea directivas en la salida final, utilice la --no hay línea .

Cualquier error de sintaxis en las directivas cpp envía un mensaje a stderr y detiene el programa.
Si no se encuentra un archivo # incluido, se genera una advertencia a stderr, pero el procesamiento continúa.

Puede dar cualquier número de nombres de archivo en la línea de comandos. Los resultados están catenados en
salida estándar.

-Dsym definir un reemplazo textual (el valor predeterminado es 1)

-Dsym =val
definir un reemplazo textual con un valor específico

-Icamino agregue un directorio a la ruta de búsqueda para # include's

-Opresentar especificar un archivo para la salida (el valor predeterminado es stdout)

--nomacro
solo procesa # ifdef's y # include's,
no expanda macros

--no hay línea
eliminar #line excrementos de la salida

--banda
convertir comentarios de estilo C en espacios en blanco, incluso fuera
directivas cpp

- hash
reconocer el operador ANSI # stringise, y ## para
catenation de token, dentro de macros

--texto tratar la entrada como texto sin formato, no como código Haskell

--diseño
preservar nuevas líneas dentro de expansiones macro

- sin luz
eliminar comentarios de estilo alfabetizado

--versión
informe del número de versión de cpphs y deténgase

NO hay reemplazos textuales definidos por defecto. (El CPP normal suele tener definiciones
para máquina, sistema operativo, etc. Estos podrían agregarse fácilmente al código fuente de cpphs si lo desea).
La ruta de búsqueda se busca en orden de -I opciones, excepto que el directorio del
archivo de llamada, luego el directorio actual, siempre se buscan primero. De nuevo, no hay
ruta de búsqueda predeterminada (y nuevamente, esto podría cambiarse fácilmente).

DIFERENCIAS DESDE CPP


En general, cpphs se basa en el -tradicional comportamiento, no ANSI C, y tiene el
siguiendo las principales diferencias con el estándar cpp.

General

El # que introduce cualquier directiva cpp debe estar en la primera columna de una línea (mientras que
ANSI permite espacios en blanco antes de # ).

Genera el #línea n "nombre de archivo"sintaxis, no la # n "nombre de archivo"variante.

Los comentarios de C solo se eliminan dentro de las directivas cpp. No están despojados de otros
texto. Considere, por ejemplo, que en Haskell, todos los siguientes son operadores válidos
símbolos: /* */ * / * Sin embargo, puede activar la eliminación de comentarios C con el --banda .

Macro idioma

Acepta / ** / para pegar tokens en una definición de macro. Sin embargo, /* */ (con cualquier texto
entre el comentario de abrir / cerrar) inserta un espacio en blanco.

El ANSI ## El operador de pegado de tokens está disponible con el - hash bandera. Esto es para evitar
malinterpretar cualquier operador válido de Haskell del mismo nombre.

Reemplaza un parámetro formal macro con el real, incluso dentro de una cadena (doble o simple
citado). Este es un comportamiento tradicional, no compatible con ANSI.

Reconoce el # operador de cadena en una definición de macro solo si usa el - hash
opción. (Es una adición ANSI, solo es necesaria porque la cadena entre comillas (arriba) es
prohibido por ANSI.)

Conserva los espacios en blanco dentro de una definición de reemplazo textual exactamente (modulo nuevas líneas),
pero se elimina el espacio inicial y final.

Conserva los espacios en blanco dentro de una definición de macro (y al final) exactamente (módulo
nuevas líneas), pero se elimina el espacio inicial.

Conserva el espacio en blanco dentro de los argumentos de llamada a macro exactamente (incluidas las líneas nuevas), pero al principio
y se elimina el espacio final.

Con la --diseño opción, continuaciones de línea en un reemplazo textual o definición macro
se conservan como saltos de línea en la llamada de macro. (Útil para código sensible al diseño en
Haskel.)

Utilice cpphs en línea utilizando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

  • 1
    facetracknoir
    facetracknoir
    Programa de headtracking modular que
    admite múltiples rastreadores faciales, filtros
    y protocolos de juego. Entre los rastreadores
    son SM FaceAPI, AIC Inertial Head
    Rastreador ...
    descargar facetracknoir
  • 2
    Código QR PHP
    Código QR PHP
    El código QR de PHP es de código abierto (LGPL)
    biblioteca para generar código QR,
    Código de barras bidimensional. Residencia en
    biblioteca libqrencode C, proporciona API para
    creando código de barras QR ...
    Descargar Código QR PHP
  • 3
    libreciv
    libreciv
    Freeciv es un programa gratuito por turnos
    juego de estrategia multijugador, en el que cada
    jugador se convierte en el líder de un
    civilización, luchando por obtener el
    objetivo final: bec ...
    Descargar Freeciv
  • 4
    Sandbox de cuco
    Sandbox de cuco
    Cuckoo Sandbox utiliza componentes para
    monitorear el comportamiento del malware en un
    Entorno de caja de arena; aislado de la
    resto del sistema. Ofrece automatizado
    análisis de ...
    Descargar Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Reproducir video de YouTube en LMS (portación de
    Triode's to YouTbe API v3) Esto es
    una aplicación que también se puede buscar
    en
    https://sourceforge.net/projects/lms-y...
    Descargar LMS-YouTube
  • 6
    Fundación de presentación de Windows
    Fundación de presentación de Windows
    Fundación de presentación de Windows (WPF)
    es un marco de interfaz de usuario para construir Windows
    aplicaciones de escritorio. WPF admite una
    amplio conjunto de desarrollo de aplicaciones
    caracteristicas...
    Descargar la Fundación para presentaciones de Windows
  • Más "

Comandos de Linux

Ad