EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

cpphs - Online în cloud

Rulați cpphs în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda cpphs care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


cpphs - preprocesor liberalizat de tip cpp-a-like pentru Haskell

REZUMAT


cpphs [NUME DE FIȘIER|OPȚIUNE] ...

DESCRIERE


cpphs este o reimplementare liberalizată a cpp (1), pre-procesorul C, în și pentru
Haskell.

De ce să reimplementați cpp? Pe bună dreptate sau greșit, pre-procesorul C este utilizat pe scară largă în Haskell
cod sursa. Permite compilarea condiționată pentru diferite compilatoare, diferite
versiuni ale aceluiași compilator și platforme de SO diferite. De asemenea, este folosit ocazional
pentru limbajul său macro, care poate activa anumite forme de detalii specifice platformei-
umplere, cum ar fi generarea plictisitoare de definiții de instanță și FFI
declarații. Cu toate acestea, există două probleme cu cpp, în afară de estetica evidentă
cele:

Pentru unele sisteme Haskell, în special Hugs pe Windows, un cpp adevărat nu este disponibil de
Mod implicit.

Chiar și pentru celelalte sisteme Haskell, cpp-ul comun oferit de seria gcc 3.x
se schimbă subtil în moduri care sunt incompatibile cu sintaxa lui Haskell. Acolo au
întotdeauna au fost probleme cu, de exemplu, goluri de șir și caractere prime în
identificatori. Aceste probleme se vor agrava doar.

Deci, mi s-a părut corect să încercăm să oferim o alternativă la cpp, ambele mai compatibile cu
Haskell și el însuși scris în Haskell, astfel încât să poată fi distribuit cu compilatoare.

cpphs este aproape complet complet și compatibil cu -tradiţional stilul de cpp.
Are doua moduri:

numai compilare condiționată (--nomacro),

și macro-extindere completă (implicit).

In --nomacro mod, cpphs efectuează numai acțiuni de compilare condiționată, de exemplu #includelui,
#dacălui, și #ifdefsunt procesate conform definițiilor de înlocuire a textului (ambele comenzi-
linie și internă), dar nu se realizează o extindere macro parametrizată. În întregime
modul de compatibilitate (implicit), înlocuirile de text și extinderile macro sunt, de asemenea
procesate în corpul rămas al textului non-cpp.

Caracteristici de lucru:

#ifdef compilare condițională simplă

#dacă limbajul boolean complet al definit(), &&, ||, == etc.

#elif condiționale înlănțuite

#defini
definiții în linie (înlocuiri de text și macrocomenzi)

#undef revocarea în linie a definițiilor

#include
includerea fișierelor

#linia directive de număr de linie

\n continuări de linie în toate # directivele

/ ** / catenare de simboluri în cadrul unei definiții macro

## Catenare de jetoane în stil ANSI

# Încordare de jetoane în stil ANSI

__FIŞIER__
înlocuire specială a textului pentru mesajele de eroare DIY

__LINIA__
înlocuire specială a textului pentru mesajele de eroare DIY

__DATA__
înlocuirea textului special

__TIMP__
înlocuirea textului special

Extinderea macro este recursivă. Redefinirea numelui unei macrocomenzi nu generează un avertisment.
Macro-urile pot fi definite pe linia de comandă cu -D la fel ca înlocuirile textuale. Macro
numelor li se permite să fie identificatori Haskell, de exemplu, cu primul ` și backtick ´
caractere, care este puțin mai liber decât în ​​C, dar este posibil să nu includă operator
simboluri.

Numerotarea liniilor din ieșire este păstrată, astfel încât orice procesor ulterior să poată da
mesaje de eroare semnificative. Când un fișier este #include'd, cpphs inserții #linia directive pentru
acelasi motiv. Numerotarea ar trebui să fie corectă chiar și în prezența continuărilor de rând.
Dacă nu vrei #linia directive în rezultatul final, utilizați --noline opțiune.

Orice erori de sintaxă în directivele cpp dă un mesaj către stderr și oprește programul.
Eșecul de a găsi un fișier #include'd produce un avertisment pentru stderr, dar procesarea continuă.

Puteți da orice număr de nume de fișiere pe linia de comandă. Rezultatele sunt legate
ieșire standard.

-Dsym definiți o înlocuire textuală (valoarea implicită este 1)

-Dsym=val
definiți o înlocuire textuală cu o anumită valoare

-Icale adăugați un director la calea de căutare pentru #include

-Ofişier specificați un fișier pentru ieșire (implicit este stdout)

--nomacro
procesează doar #ifdef și #include,
nu extindeți macrocomenzi

--noline
eliminați excrementele #line din ieșire

--bandă
convertiți comentariile în stil C în spații albe, chiar și în exterior
directivele cpp

--hashes
recunoașteți operatorul ANSI # stringise și ## pentru
catenare de simboluri, în cadrul macro-urilor

--text tratați intrarea ca text simplu, nu cod Haskell

--aspect
păstrează liniile noi în cadrul extinderilor macro

--neluminat
eliminați comentariile în stil alfabetizat

--versiune
raportați numărul versiunii de cpphs și opriți

Nu există înlocuiri de text definite implicit. (Cpp normal are de obicei definiții
pentru mașină, sistem de operare etc. Acestea ar putea fi adăugate cu ușurință la codul sursă cpphs, dacă doriți.)
Calea de căutare este căutată în ordinea -I opțiuni, cu excepția faptului că directorul
fișierul de apelare, apoi directorul curent, sunt întotdeauna căutate mai întâi. Din nou, nu există
calea de căutare implicită (și din nou, aceasta ar putea fi schimbată cu ușurință).

DIFERENȚE DIN CPP


În general, cpphs se bazează pe -tradiţional comportament, nu ANSI C și are
urmând principalele diferențe față de cpp standard.

General

# care introduce orice directivă cpp trebuie să fie în prima coloană a unei linii (în timp ce
ANSI permite spații albe înainte de # ).

Generează #linia n "nume de fișier" sintaxa, nu # n "nume de fișier" variantă.

Comentariile C sunt eliminate numai din directivele cpp. Nu sunt dezbrăcați de ceilalți
text. Luați în considerare, de exemplu, că în Haskell, toate următoarele sunt operatori validi
simboluri: /* */ * / * Cu toate acestea, puteți activa eliminarea comentariului C cu ajutorul --bandă opțiune.

Macro limbă

acceptă / ** / pentru lipirea simbolurilor într-o definiție macro. In orice caz, /* */ (cu orice text
între comentariul de deschidere/închidere) inserează spații albe.

ANSI ## operatorul de lipire a simbolurilor este disponibil cu --hashes steag. Acest lucru este de evitat
interpretând greșit orice operator Haskell valid cu același nume.

Înlocuiește un parametru formal macro cu cel real, chiar și în interiorul unui șir (dublu sau simplu
citat). Acesta este un comportament tradițional, care nu este acceptat în ANSI.

Recunoaște # operator de stringere într-o definiție macro numai dacă utilizați --hashes
opțiune. (Este o adăugare ANSI, necesară doar pentru că stringizarea citată (mai sus) este
interzis de ANSI.)

Păstrează exact spațiul alb într-o definiție de înlocuire textuală (modulo newlines),
dar se elimină spațiul de conducere și de sfârșit.

Păstrează exact spațiul alb în cadrul unei definiții macro (și după aceasta) exact (modulo
linii noi), dar spațiul de conducere este eliminat.

Păstrează exact spațiul alb în argumentele apelului macro (inclusiv liniile noi), dar înainte
iar spatiul de urma este eliminat.

Cu --aspect opțiunea, continuarea liniilor într-o înlocuire textuală sau definiție macro
sunt păstrate ca întreruperi de linie în apelul macro. (Util pentru codul sensibil la aspect în
Haskell.)

Utilizați cpphs online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    facetracknoir
    facetracknoir
    Program modular de urmărire a capului care
    acceptă mai multe face-tracker, filtre
    și protocoale de joc. Printre urmăritori
    sunt SM FaceAPI, AIC Inertial Head
    Urmăritor ...
    Descărcați facetracknoir
  • 2
    Cod QR PHP
    Cod QR PHP
    Codul QR PHP este open source (LGPL)
    bibliotecă pentru generarea codului QR,
    Cod de bare bidimensional. Bazat pe
    libqrencode C biblioteca, oferă API pentru
    se creează codul QR barc...
    Descărcați codul QR PHP
  • 3
    freeciv
    freeciv
    Freeciv este un program gratuit pe rând
    joc de strategie multiplayer, în care fiecare
    jucătorul devine liderul unui
    civilizație, luptă pentru a obține
    Scopul final: a fi...
    Descărcați Freeciv
  • 4
    Cucul Sandbox
    Cucul Sandbox
    Cuckoo Sandbox folosește componente pentru
    monitorizați comportamentul programelor malware într-un
    Mediul Sandbox; izolat de
    restul sistemului. Oferă automată
    analiza de...
    Descărcați Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Redați videoclipul YouTube pe LMS (portare a
    Triode la YouTbe API v3) Aceasta este
    o aplicație care poate fi, de asemenea, preluată
    din
    https://sourceforge.net/projects/lms-y...
    Descărcați LMS-YouTube
  • 6
    Windows Presentation Foundation
    Windows Presentation Foundation
    Windows Presentation Foundation (WPF)
    este un cadru UI pentru construirea Windows
    aplicații desktop. WPF acceptă a
    un set larg de dezvoltare a aplicațiilor
    Caracteristici...
    Descărcați Windows Presentation Foundation
  • Mai mult »

Comenzi Linux

Ad