IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

cpphs - Online nel cloud

Esegui cpphs nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando cpphs che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


cpphs - preprocessore cpp-a-like liberalizzato per Haskell

SINOSSI


cpp [NOME DEL FILE|OPZIONE] ...

DESCRIZIONE


cpp è una reimplementazione liberalizzata di cpp (1) il preprocessore C, in e for
Haskell.

Perché re-implementare cpp? A torto oa ragione, il preprocessore C è ampiamente utilizzato in Haskell
codice sorgente. Consente la compilazione condizionale per diversi compilatori, diversi
versioni dello stesso compilatore e piattaforme OS diverse. Viene anche usato occasionalmente
per il suo linguaggio macro, che può abilitare alcune forme di dettagli specifici della piattaforma-
riempimento, come la noiosa generazione standard di definizioni di istanze e FFI
dichiarazioni. Tuttavia, ci sono due problemi con cpp, a parte l'ovvia estetica
quelli:

Per alcuni sistemi Haskell, in particolare Hugs su Windows, un vero cpp non è disponibile da
predefinito.

Anche per gli altri sistemi Haskell, il comune cpp fornito dalla serie gcc 3.x
sta cambiando sottilmente in modi che sono incompatibili con la sintassi di Haskell. ci sono
sono sempre stati problemi, ad esempio, con gli spazi tra le stringhe e i caratteri primi in
identificatori. Questi problemi non faranno che peggiorare.

Quindi, mi è sembrato giusto tentare di fornire un'alternativa a cpp, entrambi più compatibili con
Haskell, ed esso stesso scritto in Haskell in modo che possa essere distribuito con i compilatori.

cpp è praticamente completo di funzionalità e compatibile con il -tradizionale stile di cpp.
Ha due modalità:

solo compilazione condizionale (--nomacro),

e l'espansione macro completa (impostazione predefinita).

In --nomacro modalità, cpp esegue solo azioni di compilazione condizionale, ad es #includere'S,
#Se's, e #ifdefvengono elaborati in base alle definizioni di sostituzione del testo (entrambi i comandi
linea e interno), ma non viene eseguita alcuna espansione macro parametrizzata. In toto
anche la modalità di compatibilità (predefinita), le sostituzioni testuali e le espansioni macro
elaborato nel corpo rimanente del testo non cpp.

Caratteristiche di lavoro:

#ifdef semplice compilazione condizionale

#Se il linguaggio booleano completo di define(), &&, ||, ==, ecc.

#elif condizionali concatenati

#define
definizioni in linea (sostituzioni di testo e macro)

#indif revoca in linea delle definizioni

#includere
inclusione di file

#linea direttive del numero di riga

\n continuazioni di riga all'interno di tutte le # direttive

/ ** / catena di token all'interno di una definizione di macro

## Catena di gettoni in stile ANSI

# Stringizzazione di token in stile ANSI

__FILE__
sostituzione speciale del testo per i messaggi di errore fai da te

__LINEA__
sostituzione speciale del testo per i messaggi di errore fai da te

__DATA__
sostituzione speciale del testo

__VOLTA__
sostituzione speciale del testo

L'espansione macro è ricorsiva. La ridefinizione di un nome di macro non genera un avviso.
Le macro possono essere definite sulla riga di comando con -D proprio come le sostituzioni testuali. macro
i nomi possono essere identificatori Haskell, ad esempio con il primo ` e il backtick ´
caratteri, che è leggermente più ampio rispetto a C, ma potrebbero comunque non includere l'operatore
simboli.

La numerazione delle righe nell'output è preservata in modo che qualsiasi processore successivo possa dare
messaggi di errore significativi. Quando un file è #includere'D, cpp Inserti #linea direttive per
lo stesso motivo. La numerazione deve essere corretta anche in presenza di continuazioni di riga.
Se non vuoi #linea direttive nell'output finale, utilizzare il --nolina opzione.

Qualsiasi errore di sintassi nelle direttive cpp invia un messaggio a stderr e arresta il programma.
L'impossibilità di trovare un file #include'd produce un avviso per stderr, ma l'elaborazione continua.

Puoi dare un numero qualsiasi di nomi di file sulla riga di comando. I risultati sono concatenati su
uscita standard.

-Dsym definire una sostituzione testuale (il valore predefinito è 1)

-Dsim=val
definire una sostituzione testuale con un valore specifico

-Isentiero aggiungi una directory al percorso di ricerca per #include's

-Ofiletto specifica un file per l'output (il valore predefinito è stdout)

--nomacro
elabora solo #ifdef e #include,
non espandere le macro

--nolina
rimuovi #line dropping dall'output

--striscia
converti i commenti in stile C in spazi bianchi, anche all'esterno
direttive cpp

--hash
riconoscere l'operatore ANSI # stringise e ## for
catena di token, all'interno di macro

--testo trattare l'input come testo normale, non codice Haskell

--disposizione
preservare le nuove righe all'interno delle espansioni macro

--spento
rimuovere i commenti in stile letterato

--versione
riporta il numero di versione di cpphs e stop

Non ci sono sostituzioni testuali definite per impostazione predefinita. (Il cpp normale di solito ha delle definizioni
per macchina, sistema operativo, ecc. Questi potrebbero essere facilmente aggiunti al codice sorgente di cpphs, se lo desideri.)
Il percorso di ricerca viene cercato in ordine di -I opzioni, tranne che la directory del
il file chiamante, quindi la directory corrente, vengono sempre cercati per primi. Ancora una volta, non c'è
percorso di ricerca predefinito (e ancora, questo potrebbe essere facilmente modificato).

DIFFERENZE DA CPP


In generale, cpphs si basa su -tradizionale comportamento, non ANSI C, e ha il
seguenti principali differenze rispetto allo standard cpp.

Generale

I # che introduce qualsiasi direttiva cpp deve essere nella prima colonna di una riga (mentre
ANSI consente gli spazi prima del # ).

Genera il #linea n "Nome del file" sintassi, non la # n "Nome del file"variante.

I commenti C vengono rimossi solo all'interno delle direttive cpp. Non sono spogliati dagli altri
testo. Si consideri per esempio che in Haskell, tutti i seguenti sono operatori validi
simboli: /* */ * / * Tuttavia, puoi attivare la rimozione dei commenti C con il --striscia opzione.

Macro Lingua

accetta / ** / per l'incollaggio di token in una definizione di macro. Però, /* */ (con qualsiasi testo
tra il commento di apertura/chiusura) inserisce spazi bianchi.

L'ANSIA ## l'operatore di incollaggio dei token è disponibile con il --hash bandiera. Questo è da evitare
interpretare erroneamente qualsiasi operatore Haskell valido con lo stesso nome.

Sostituisce un parametro formale macro con l'effettivo, anche all'interno di una stringa (doppio o singolo
citato). Questo è un comportamento tradizionale, non supportato in ANSI.

Riconosce il # operatore di stringizzazione in una definizione di macro solo se si utilizza il --hash
opzione. (È un'aggiunta ANSI, necessaria solo perché la stringatura citata (sopra) è
vietato dall'ANSI.)

Conserva esattamente gli spazi bianchi all'interno di una definizione di sostituzione testuale (modulo newlines),
ma lo spazio iniziale e finale viene eliminato.

Conserva esattamente lo spazio bianco all'interno di una definizione di macro (e lo segue) (modulo
newline), ma lo spazio iniziale viene eliminato.

Conserva esattamente gli spazi bianchi all'interno degli argomenti di chiamata macro (incluse le nuove righe), ma in testa
e lo spazio finale viene eliminato.

Grazie alla --disposizione opzione, continuazioni di riga in una sostituzione testuale o definizione di macro
vengono conservati come interruzioni di riga nella chiamata macro. (Utile per codice sensibile al layout in
Haskel.)

Usa cpphs online usando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

  • 1
    facetrack noir
    facetrack noir
    Programma headtracking modulare che
    supporta più face tracker, filtri
    e protocolli di gioco. Tra i tracker
    sono SM FaceAPI, AIC Inertial Head
    Inseguitore...
    Scarica facetrack noir
  • 2
    Codice QR PHP
    Codice QR PHP
    Il codice QR PHP è open source (LGPL)
    libreria per la generazione di QR Code,
    Codice a barre bidimensionale. Basato su
    libreria libqrencode C, fornisce API per
    creazione barra QR Code...
    Scarica codice QR PHP
  • 3
    freeciv
    freeciv
    Freeciv è un gioco a turni gratuito
    gioco di strategia multiplayer, in cui ciascuno
    giocatore diventa il leader di a
    civiltà, lottando per ottenere il
    obiettivo finale: diventare...
    Scarica Freeciv
  • 4
    Sandbox cuculo
    Sandbox cuculo
    Cuckoo Sandbox utilizza i componenti per
    monitorare il comportamento del malware in a
    Ambiente sandbox; isolato dal
    resto del sistema. Offre automatizzato
    analisi o...
    Scarica Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Riproduci video di YouTube su LMS (porting di
    Triode's to YouTbe API v3) Questo è
    un'applicazione che può anche essere recuperata
    da
    https://sourceforge.net/projects/lms-y...
    Scarica LMS-YouTube
  • 6
    Fondazione per la presentazione di Windows
    Fondazione per la presentazione di Windows
    Fondazione presentazione Windows (WPF)
    è un framework dell'interfaccia utente per la creazione di Windows
    applicazioni desktop. WPF supporta a
    ampio set di sviluppo di applicazioni
    Caratteristiche...
    Scarica Windows Presentation Foundation
  • Di Più "

Comandi Linux

Ad