nanabozo 는 CHTML 스크립트를 순수한 C 코드로 변환하는 명령 줄 애플리케이션입니다. 다른 용어로는 PHP와 마찬가지로 HTML (또는 동등한)과 C/C ++를 혼합 할 수 있습니다.
간단한 CHTML 예는 다음과 같습니다.
<?
#define page_title "Hello World 예제"
int main (void) {
char *world = "세계";
/ * 헤더 */
print ( "content-type : text/html; charset = utf-8 n n");
?>
<html>
<헤드>
<title> <? = page_title?> </title>
</head>
<body>
<h1> <? % "hello % s!", World?> </h1>
</body>
</html>
<?
반환 0;
} // end main ()
?>
helloworld.php (왜 그렇지 않습니까?)라는 파일에 nanabozo 니펫을 넣어 봅시다.
Nanabozo Helloworld.php Helloworld.c
그리고 이제 helloworld.c 의 모습을 살펴 보겠습니다.
/* * Nanabozo에 의해 생성 (편집하지 않음) * 1 월 14 일 11:08:12 CET 2018 */
그것은 정보적이고 자기 설명적인 의견입니다. 옵션 -c 로 해당 주석 헤더를 비활성화하거나 빈 문자열 ( -c "" )을 전달하거나 원하는 경우 대신 자신의 주석을 가질 수 있습니다 ( -c "$(cat license.txt)" ).
#include <stdio.h> #define print (x) fputs (x, stdout)
기본적으로 stdio.h 포함되어 있으며 함수 print 정의되었습니다. 보시다시피, stdout 은 다른 CGI 응용 프로그램과 마찬가지로 텍스트를 보내는 파일입니다.
/ * 시작 C (1 행) */
#define page_title "Hello World 예제"
int main (void) {
char *world = "세계";
/ * 헤더 */
print ( "content-type : text/html; charset = utf-8 n n");
/ * 종료 c (줄 8) */
시작/종료 주석으로 동봉 된 C 코드의 첫 번째 부분은 첫 번째 파일과 마찬가지로 여기에 제공됩니다. 원하는 경우 옵션 -N을 사용하여 해당 주석을 생략 할 수 있지만 디버깅 목적으로 유용합니다.
여기에 특별한 것은 없습니다. 우리의 CGI에는 main() 함수가 필요합니다. 기능 print 일반적인 필수 헤더를 보내는 데 사용됩니다.
print ( "<html> n" "<head> n" "<title>");
HTML 스크립트가 시작됩니다. 함수 print 그것을 stdout 으로 전달하는 데 사용됩니다.
/ * 시작 c = (11 행) */ print (page_title); / * 종료 c = (11 행) */
태그 사이에있는 C 코드는 <?= 및 ?> 함수 print 에 대한 인수로 제공됩니다.
또 다른 HTML 부분은 다음과 같습니다.
print ( "</title> n" "</head> n" "<body> n" "<h1>");
그런 다음 태그 사이에 무엇이든지 <?% 와 ?> 함수 printf 에 인수로 전달됩니다.
/ * 시작 C% (14 행) */ printf ( "hello %s!", World); / * 종료 c% (라인 14) */
마지막으로, 나머지 HTML 및 main() 함수의 끝 :
print ( "</h1> n"
"</body> n"
"</html> n");
/ * 시작 C (17 행) */
반환 0;
} // end main ()
/ * 종료 C (라인 20) */
helloworld.c 를 컴파일 할 수 있으며 CGI 응용 프로그램이 준비되었습니다. 서두르면 다음과 같은 것을 시도 할 수 있습니다.
Nanabozo Helloworld.php | gcc -xc -o helloorld.cgi-
nanabozo 에는 다양한 워크 플로에 대한 숙박 시설이 있습니다.
옵션 -M은 스크립트를 감싸는 기본 주 기능 정의를 포함하는 데 사용할 수 있습니다.
옵션 -t는 다른 출력 전에 기본 컨텐츠 유형 HTTP 헤더 (Text/HTML, Charset UTF-8)를 보내는 데 사용될 수 있습니다.
옵션 -a는 문자열을 전달하여 CHTML 스크립트의 내용으로 전달할 수 있습니다.
옵션 -z는 문자열을 전달하여 CHTML 스크립트의 내용에 추가 할 수 있습니다.
우리의 간단한 예제는 main() 함수의 정의없이 다시 작성할 수 있습니다. bash 에서는 다음과 같을 수 있습니다.
nanabozo -a $ 'int main (void) { n'-z $ ' n treturn 0; n}'helloworld.php helloorld.c
# 다음과 같습니다.
Nanabozo -M HelloWorld.php Helloworld.c
그러나 당신은 일을 더 악화시킬 수 있습니다.
<helloworld.php nanabozo -a "$ (cat myfile.h myfile.c)"> helloworld.c
옵션 -P는 print 기능을 대체하기 위해 대체 기능 이름을 전달하는 데 사용될 수 있습니다.
옵션 -f는 printf 함수를 대체하기 위해 대체 함수 이름을 전달하는 데 사용될 수 있습니다.
그리고 print 및 printf 모두 교체하면 stdio.h 포함되지 않습니다. 다음과 같은 명령
nanabozo -p print -f printf helloorld.php helloorld.c
stdio.h 포함되어 있거나 인쇄 된 print 정의되지 않습니다. 당신은 당신의 편에 그들을 돌봐야합니다.
옵션 -V 버전 정보 및 종료를 인쇄합니다.
옵션 -H는 사용 정보 및 종료를 인쇄합니다.
CHTML 파일에 512 자 이상의 라인이있는 경우 (인간적으로 허용 가능한) INPUTSIZE 로 더 높은 값으로 정의 할 수 있습니다.
그리고 버그 또는 문제가있는 것을 발견하면 stan(at)astrorigin.com 문의하십시오.
간단히:
설치하십시오
데비안 시스템을위한 패키지는 Github 및 홈페이지에서 찾아야합니다.
nanabozo 는 GPL V2 라이센스에 따라 라이센스가 부여됩니다.
Nanabozo- CHTML 스크립트 코딩을위한 도구 저작권 (c) 2018-2020 Stanislas marquis <[email protected]> 이 프로그램은 무료 소프트웨어입니다. 재분배 및/또는 수정할 수 있습니다. GNU 일반 공개 라이센스의 조건에 따라 라이센스의 버전 2 버전 2 또는 무료 소프트웨어 재단 (옵션에서) 이후 버전. 이 프로그램은 유용하기를 희망하여 배포됩니다. 보증없이; 묵시적 보증조차없이 상업성 또는 특정 목적을위한 체력. 참조 자세한 내용은 GNU 일반 공개 라이센스. GNU 일반 공개 라이센스 사본을 받았어야합니다. 이 프로그램과 함께. 그렇지 않은 경우 <https://www.gnu.org/licenses/>를 참조하십시오.