EngelsFransSpaans

Ad


OnWorks-favicon

cpphs - Online in de cloud

Voer cpphs uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit zijn de commando cpphs die kunnen worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


cpphs - geliberaliseerde cpp-a-achtige preprocessor voor Haskell

KORTE INHOUD


cpps [BESTANDSNAAM|OPTIE] ...

PRODUCTBESCHRIJVING


cpps is een geliberaliseerde herimplementatie van cpp (1) de C pre-processor, in en voor
Haskell.

Waarom cpp opnieuw implementeren? Terecht of onterecht wordt de C-preprocessor veel gebruikt in Haskell
broncode. Het maakt voorwaardelijke compilatie mogelijk voor verschillende compilers, verschillend
versies van dezelfde compiler en verschillende OS-platforms. Het wordt ook af en toe gebruikt
vanwege zijn macrotaal, die bepaalde vormen van platformspecifieke detail-
vulling, zoals het vervelende standaard genereren van instantiedefinities en FFI
verklaringen. Er zijn echter twee problemen met cpp, afgezien van de voor de hand liggende esthetiek
degenen:

Voor sommige Haskell-systemen, met name Hugs op Windows, is er geen echte cpp beschikbaar
standaard.

Zelfs voor de andere Haskell-systemen, de gemeenschappelijke cpp die wordt geboden door de gcc 3.x-serie
verandert subtiel op manieren die onverenigbaar zijn met de syntaxis van Haskell. Er zijn
altijd problemen geweest met bijvoorbeeld string hiaten en hoofdpersonages in
ID's. Deze problemen worden alleen maar erger.

Het leek dus juist om te proberen een alternatief te bieden voor cpp, die beide beter compatibel zijn
Haskell, en zelf geschreven in Haskell zodat het kan worden gedistribueerd met compilers.

cpps is vrijwel compleet met functies en compatibel met de - traditioneel stijl van cpp.
Het heeft twee modi:

alleen voorwaardelijke compilatie (--nomacro),

en volledige macro-uitbreiding (standaard).

In --nomacro mode, cpps voert alleen voorwaardelijke compilatieacties uit, dwz #include'S,
#als's, en #ifdef's worden verwerkt volgens tekstvervangingsdefinities (beide commando-
lijn en intern), maar er wordt geen geparametriseerde macro-uitbreiding uitgevoerd. Volledig
compatibiliteitsmodus (de standaard), tekstuele vervangingen en macro-uitbreidingen zijn dat ook
verwerkt in de resterende tekst van niet-cpp-tekst.

Werkkenmerken:

#ifdef eenvoudige voorwaardelijke compilatie

#als de volledige booleaanse taal van defined(), &&, ||, ==, etc.

#elif geketende voorwaarden

#define
in-line definities (tekstvervangingen en macro's)

#undef in-line herroeping van definities

#include
bestandsopname

#lijn richtlijnen voor regelnummers

\n regelvoortzettingen binnen alle # richtlijnen

/ ** / token catenatie binnen een macrodefinitie

## ANSI-stijl token catenatie

# Tekenreeksen in ANSI-stijl

__HET DOSSIER__
speciale tekstvervanging voor doe-het-zelf-foutmeldingen

__LIJN__
speciale tekstvervanging voor doe-het-zelf-foutmeldingen

__DATUM__
speciale tekstvervanging

__TIJD__
speciale tekstvervanging

Macro-expansie is recursief. Het herdefiniëren van een macronaam genereert geen waarschuwing.
Macro's kunnen op de opdrachtregel worden gedefinieerd met -D net als tekstuele vervangingen. Makro
namen mogen Haskell-identificaties zijn, bijvoorbeeld met de hoofdletter ` en backtick ´
tekens, wat iets losser is dan in C, maar ze mogen nog steeds geen operator bevatten
symbolen.

Nummering van regels in de uitvoer blijft behouden, zodat elke latere processor kan geven
zinvolle foutmeldingen. Wanneer een bestand is #include'D, cpps inserts #lijn richtlijnen voor
dezelfde reden. De nummering moet correct zijn, zelfs als er lijnvoortzettingen zijn.
Als je niet wilt #lijn richtlijnen in de uiteindelijke uitvoer, gebruik dan de --geen lijn optie.

Elke syntaxisfout in cpp-richtlijnen geeft een bericht aan stderr en stopt het programma.
Het niet vinden van een #include'd bestand geeft een waarschuwing aan stderr, maar de verwerking gaat door.

U kunt een willekeurig aantal bestandsnamen opgeven op de opdrachtregel. De resultaten worden gecategoriseerd
standaard uitvoer.

-Dsym definieer een tekstuele vervanging (standaardwaarde is 1)

-Dsym=golf
definieer een tekstuele vervanging met een specifieke waarde

-Ipad voeg een map toe aan het zoekpad voor #include's

-Ofilet specificeer een bestand voor uitvoer (standaard is stdout)

--nomacro
verwerk alleen #ifdef's en #include's,
vouw geen macro's uit

--geen lijn
verwijder #lijnuitwerpselen uit de uitvoer

--strip
converteer opmerkingen in C-stijl naar witruimte, zelfs daarbuiten
cpp-richtlijnen

--hashes
herken de ANSI # stringise operator, en ## for
token catenation, binnen macro's

--tekst behandel de invoer als platte tekst, niet als Haskell-code

--lay-out
behoud nieuwe regels binnen macro-uitbreidingen

--onverlicht
verwijder opmerkingen in geletterde stijl

--versie
meld het versienummer van cpphs en stop

Standaard zijn er GEEN tekstuele vervangingen gedefinieerd. (Normale cpp heeft meestal definities
voor machine, besturingssysteem, enz. Deze kunnen eenvoudig worden toegevoegd aan de cpphs-broncode als u dat wenst.)
Het zoekpad wordt doorzocht in volgorde van de -I opties, behalve dat de directory van de
het oproepende bestand en vervolgens de huidige map worden altijd eerst doorzocht. Nogmaals, er is geen
standaard zoekpad (en nogmaals, dit kan gemakkelijk worden gewijzigd).

VERSCHILLEN NU CPP


Over het algemeen is cpphs gebaseerd op de - traditioneel gedrag, niet ANSI C, en heeft de
volgende belangrijkste verschillen met de standaard cpp.

Algemeen

De # die een cpp-richtlijn introduceert, moet in de eerste kolom van een regel staan ​​(terwijl
ANSI staat witruimte toe voor de # ).

Genereert de #lijn n "bestandsnaam" syntaxis, niet de # n "bestandsnaam" variant.

C-opmerkingen worden alleen verwijderd binnen cpp-richtlijnen. Ze zijn niet ontdaan van andere
tekst. Bedenk bijvoorbeeld dat in Haskell alle volgende geldige operatoren zijn
symbolen: /* */ * / * U kunt het verwijderen van C-commentaar echter inschakelen met de --strip optie.

Macro taal

Accepteert / ** / voor het plakken van tokens in een macrodefinitie. Echter, /* */ (met elke tekst
tussen de opmerking openen/sluiten) voegt witruimte in.

De ANSI ## token-paste-operator is beschikbaar met de --hashes vlag. Dit is om te vermijden
een geldige Haskell-operator met dezelfde naam verkeerd interpreteren.

Vervangt een macro-formele parameter door de actuele, zelfs binnen een tekenreeks (dubbel of enkel
geciteerd). Dit is -traditioneel gedrag, niet ondersteund in ANSI.

Herkent de # tekenreeksoperator alleen in een macrodefinitie als u de --hashes
keuze. (Het is een ANSI-toevoeging, alleen nodig omdat geciteerde stringisatie (hierboven) is
verboden door ANSI.)

Behoudt witruimte binnen een tekstuele vervangingsdefinitie exact (modulo newlines),
maar voorloop- en volgruimte wordt geëlimineerd.

Behoudt witruimte binnen een macrodefinitie (en erachter) precies (modulo
newlines), maar voorloopruimte wordt geëlimineerd.

Behoudt witruimte binnen macro-aanroepargumenten exact (inclusief nieuwe regels), maar leidend
en volgruimte wordt geëlimineerd.

Met de --lay-out optie, regelvoortzettingen in een tekstuele vervanging of macrodefinitie
worden bewaard als regeleinden in de macro-oproep. (Nuttig voor lay-outgevoelige code in
Haskell.)

Gebruik cpphs online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    facetracknoir
    facetracknoir
    Modulair headtracking-programma dat
    ondersteunt meerdere face-trackers, filters
    en spelprotocollen. Tussen de trackers
    zijn de SM FaceAPI, AIC Inertial Head
    Volger...
    Facetracknoir downloaden
  • 2
    PHP QR-code
    PHP QR-code
    PHP QR-code is open source (LGPL)
    bibliotheek voor het genereren van QR-code,
    2-dimensionale streepjescode. Gebaseerd op
    libqrencode C bibliotheek, biedt API voor
    QR-codebalk maken...
    PHP QR-code downloaden
  • 3
    freeciv
    freeciv
    Freeciv is een gratis turn-based spel
    strategiespel voor meerdere spelers, waarin elk
    speler wordt de leider van een
    beschaving, vechtend om de
    uiteindelijke doel: worden...
    Gratis civ downloaden
  • 4
    Koekoek Zandbak
    Koekoek Zandbak
    Cuckoo Sandbox gebruikt componenten om
    monitor het gedrag van malware in een
    Sandbox-omgeving; geïsoleerd van de
    rest van het systeem. Het biedt geautomatiseerd
    analyse van...
    Koekoek sandbox downloaden
  • 5
    LMS-YouTube
    LMS-YouTube
    YouTube-video afspelen op LMS (porteren van
    Triode's naar YouTbe API v3) Dit is
    een toepassing die ook kan worden opgehaald
    oppompen van
    https://sourceforge.net/projects/lms-y...
    LMS-YouTube downloaden
  • 6
    Windows Presentation Foundation
    Windows Presentation Foundation
    Windows Presentatie Foundation (WPF)
    is een UI-framework voor het bouwen van Windows
    desktop-applicaties. WPF ondersteunt een
    brede set van applicatie-ontwikkeling
    Kenmerken...
    Windows presentatie foundation downloaden
  • Meer "

Linux-commando's

Ad