영어프랑스어스페인어

Ad


온웍스 파비콘

cpphs - 클라우드 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 cpphs 실행

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 cphs 명령입니다.

프로그램:

이름


cpphs - Haskell을 위한 자유화된 cpp와 유사한 전처리기

개요


cphs [파일 이름|OPTION] ...

기술


cphs 의 자유화된 재구현이다. CPP (1) C 전처리기, in 및 for
하스켈.

cpp를 다시 구현하는 이유는 무엇입니까? 옳고 그름, C 전처리기는 Haskell에서 널리 사용됩니다.
소스 코드. 다른 컴파일러에 대한 조건부 컴파일을 가능하게 합니다.
동일한 컴파일러의 버전 및 다른 OS 플랫폼. 가끔 사용하기도 합니다
특정 형식의 플랫폼별 세부 사항을 활성화할 수 있는 매크로 언어의 경우-
인스턴스 정의 및 FFI의 지루한 상용구 생성과 같은 채우기
선언. 그러나 명백한 미학 외에도 cpp에는 두 가지 문제가 있습니다.
그들 :

일부 Haskell 시스템, 특히 Windows의 Hugs에서는 진정한 cpp를 사용할 수 없습니다.
태만.

다른 Haskell 시스템의 경우에도 gcc 3.x 시리즈에서 제공하는 공통 cpp
Haskell의 구문과 호환되지 않는 방식으로 미묘하게 변경되고 있습니다. 있다
예를 들어 문자열 간격 및 프라임 문자와 같은 문제가 항상 발생했습니다.
식별자. 이러한 문제는 더욱 악화될 뿐입니다.

따라서 cpp에 대한 대안을 제공하려는 시도가 옳은 것 같았습니다.
하스켈, 그리고 컴파일러와 함께 배포될 수 있도록 하스켈로 작성되었습니다.

cphs 기능이 거의 완벽하며 -전통적인 cpp 스타일.
두 가지 모드가 있습니다.

조건부 컴파일 전용(--노마크로),

전체 매크로 확장(기본값).

In --노마크로 모드, cphs 조건부 컴파일 작업만 수행합니다. #포함'에스,
#만약'모래 #ifdef는 텍스트 대체 정의에 따라 처리됩니다(둘 다 명령-
라인 및 내부), 그러나 매개변수화된 매크로 확장은 수행되지 않습니다. 전부
호환성 모드(기본값), 텍스트 대체 및 매크로 확장도
비 cpp 텍스트의 나머지 본문에서 처리됩니다.

작업 기능:

#ifdef 간단한 조건부 컴파일

#만약 defined(), &&, ||, == 등의 전체 부울 언어

#엘리프 연결된 조건문

#밝히다
인라인 정의(텍스트 대체 및 매크로)

#언데프 인라인 정의 취소

#포함
파일 포함

#선 줄 번호 지시어

\n 모든 # 지시문 내 줄 연속

/ ** / 매크로 정의 내의 토큰 연결

## ANSI 스타일 토큰 연결

# ANSI 스타일 토큰 문자열화

__파일__
DIY 오류 메시지에 대한 특수 텍스트 교체

__선__
DIY 오류 메시지에 대한 특수 텍스트 교체

__데이트__
특수 텍스트 교체

__시각__
특수 텍스트 교체

매크로 확장은 재귀적입니다. 매크로 이름을 재정의해도 경고가 생성되지 않습니다.
매크로는 다음을 사용하여 명령줄에서 정의할 수 있습니다. -D 텍스트 대체와 같습니다. 매크로
이름은 Haskell 식별자로 허용됩니다. 예를 들어 프라임 ` 및 백틱 ´
문자는 C보다 약간 느슨하지만 여전히 연산자를 포함하지 않을 수 있습니다.
기호.

출력의 라인 번호 매기기는 이후 프로세서가 제공할 수 있도록 보존됩니다.
의미 있는 오류 메시지. 파일이 #포함'디, cphs 삽입 #선 지시문
같은 이유. 줄이 계속되는 경우에도 번호 매기기가 정확해야 합니다.
원하지 않으면 #선 최종 출력의 지시문을 사용하려면 --놀린 옵션을 선택합니다.

cpp 지시문의 모든 구문 오류는 stderr에 메시지를 제공하고 프로그램을 중지합니다.
#include 파일을 찾지 못하면 stderr에 대한 경고가 생성되지만 처리는 계속됩니다.

명령줄에서 원하는 수의 파일 이름을 지정할 수 있습니다. 결과는 다음에 연결됩니다.
표준 출력.

-DSYM 텍스트 대체 정의(기본값은 1)

-Dsym=
특정 값으로 텍스트 대체 정의

-I통로 #include의 검색 경로에 디렉토리 추가

-O파일 출력할 파일 지정(기본값은 stdout)

--노마크로
#ifdef 및 #include만 처리합니다.
매크로를 확장하지 마십시오

--놀린
출력에서 #line 배설물 제거

--조각
외부에서도 C 스타일 주석을 공백으로 변환
cpp 지시문

--해시
ANSI # 문자열화 연산자를 인식하고 ##
토큰 연결, 매크로 내

--본문 입력을 Haskell 코드가 아닌 일반 텍스트로 처리

--형세
매크로 확장 내 줄 바꿈 유지

--꺼짐
문맹 스타일 주석 제거

--번역
cpphs의 버전 번호 보고 및 중지

기본적으로 정의된 텍스트 교체는 없습니다. (일반 cpp에는 일반적으로 정의가 있습니다.
기계, OS 등. 원하는 경우 cpphs 소스 코드에 쉽게 추가할 수 있습니다.)
검색 경로는 다음 순서대로 검색됩니다. -I 옵션을 제외하고는
호출 파일 다음에 현재 디렉토리가 항상 먼저 검색됩니다. 다시 말하지만, 없다
기본 검색 경로(또한 쉽게 변경할 수 있음).

차이점 FROM CPP


일반적으로 cpphs는 -전통적인 ANSI C가 아닌 동작이며
표준 cpp와의 주요 차이점은 다음과 같습니다.

일반

XNUMXD덴탈의 # 모든 cpp 지시문을 도입하는 것은 줄의 첫 번째 열에 있어야 합니다(반면에
ANSI는 문자 앞에 공백을 허용합니다. # ).

생성 #선 n "파일 이름" 구문이 아니라 # n "파일 이름" 변종.

C 주석은 cpp 지시문 내에서만 제거됩니다. 그들은 다른 것에서 벗겨지지 않습니다
텍스트. 예를 들어 Haskell에서 다음은 모두 유효한 연산자입니다.
기호 : /* */ * / * 그러나 다음을 사용하여 C-댓글 제거를 켤 수 있습니다. --조각 옵션을 선택합니다.

매크로 언어

수락 / ** / 매크로 정의에서 토큰 붙여넣기용. 하지만, /* */ (어떤 텍스트로
열기/닫기 주석 사이) 공백을 삽입합니다.

ANSI ## 토큰 붙여넣기 연산자는 --해시 깃발. 이것은 피하는 것입니다
동일한 이름의 유효한 Haskell 연산자를 잘못 해석합니다.

문자열 내부에서도 매크로 형식 매개변수를 실제 매개변수로 바꿉니다(double 또는 single
인용). 이것은 ANSI에서 지원되지 않는 전통적인 동작입니다.

인식 # 문자열화 연산자를 사용하는 경우에만 매크로 정의에서 --해시
옵션. (ANSI 추가이며 인용 문자열화(위)가 있기 때문에 필요합니다.
ANSI에서 금지합니다.)

텍스트 교체 정의 내에서 공백을 정확하게 유지합니다(모듈로 개행).
그러나 선행 및 후행 공백은 제거됩니다.

매크로 정의(및 후행) 내에서 공백을 정확하게 유지합니다(modulo
newlines), 그러나 선행 공백은 제거됩니다.

매크로 호출 인수 내의 공백을 정확하게 유지하지만(개행 포함) 선행
후행 공백이 제거됩니다.

와 더불어 --형세 옵션, 텍스트 교체 또는 매크로 정의의 줄 연속
매크로 호출에서 줄 바꿈으로 보존됩니다. (레이아웃에 민감한 코드에 유용
하스켈.)

onworks.net 서비스를 사용하여 온라인에서 cphs 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad