이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 genparse입니다.
프로그램:
이름
genparse - 명령줄 파서 생성기
개요
젠파스 [옵션] 파일...
기술
젠파스 일반 명령줄 파서 생성기입니다. 단순하고 간결한 것부터
사양 파일에서 원하는 명령줄 매개변수와 스위치를 정의할 수 있습니다.
프로그램에 전달할 수 있기를 원합니다. Genparse는 C, C++ 또는 Java 코드를 생성합니다.
당신을 위한 파서.
Genparse는 GNU가 getopt_long(3) 함수는 C 라이브러리에 내장되어 있습니다. 을위한
Java Java 컴파일러에 적절한 jar 파일을 지정해야 할 수도 있습니다.
옵션
젠파스 다음 옵션을 허용합니다.
-c, --cppext 확장자
C++ 파일 확장명 (기본값 = 참조)
-d 로깅을 켭니다.
-f, --로그 파일 name
로그 파일 이름. (기본값 = genparse.log)
-h, --도움
도움말 정보를 표시합니다.
-g, --그눌립
GNU 호환성 라이브러리 사용(Gnulib, http://www.gnu.org/software/gnulib/).
C 출력에만 사용할 수 있습니다. 더 많은 유형을 허용합니다(unsigned long, intmax_t 등).
Gnulib는 변환 기능을 제공합니다.
-i, --국제화
국제화 매크로 _()를 텍스트 출력 주위에 두어 생성된 프로그램이
GNU gettext 명령을 사용하여 국제화할 수 있습니다. 현재만 구현됨
C 출력용.
-l, --언어 랭
출력 언어. C, C++ 및 Java만 지원됩니다. 다음 중 하나
C++: "c++", "cpp", "cc" 및 "cxx"를 나타냅니다. Java 사용: "java" 또는 "Java".
(기본값 = c)
-o, --아웃파일 name
출력 파일 이름. (기본값 = parse_cl)
-m, --longmembers
파서 클래스(구조체)의 구성원에 대해 긴 옵션을 사용하십시오. 기본값은
정의된 긴 표현만 있는 경우를 제외하고 짧은 표현을 사용합니다.
genparse 파일에서 이 옵션이 설정되면 동작이 되돌아갑니다. NS
짧은 표현만 있는 경우를 제외하고 긴 표현이 사용됩니다.
한정된.
-o, --아웃파일 파일 이름
출력 파일의 루트 이름입니다. 확장자는 출력 언어에 따라 결정됩니다.
그리고 아마도 다른 옵션에 의해. 예를 들어, 출력 언어가 C일 때,
"file"의 이 옵션 인수는 "file.h"의 출력 파일 이름을 생성합니다.
헤더, 파서 및 콜백 파일의 경우 각각 "file.c" 및 "file_cb.c"입니다.
기본값은 "parse_cl"입니다.
-p, --parsefunc 펑크
구문 분석 기능/클래스의 이름입니다. 이 옵션을 사용하면 사용자가 이름을 지정할 수 있습니다.
실제 명령을 수행하는 함수(C의 경우) 또는 클래스(C++ 및 Java의 경우)
라인 구문 분석(기본값 = "Cmdline").
-P, --다수
별도의 인쇄 명령에서 모든 명령줄 매개변수에 대한 도움말 텍스트를 출력합니다.
-q, --조용한
저소음 모드 - 화면 출력 없음.
-s, --정적 헤더
생성된 파일 위에 있는 설명 헤더를 정적으로 유지합니다. 이것 없이
옵션 genparse는 생성 날짜와 시간, Linux 커널 버전, 커널 빌드를 인쇄합니다.
시간, 컴퓨터 아키텍처 이름, 호스트 이름 및 사용자 이름.
-v, --번역
출력 버전.
-D, --예배 규칙서
결과를 저장하기 위한 디렉토리입니다.
입력 FILE
genparse 사양 파일(일반적으로 'genparse 파일'이라고 함)은
다음 형식의 명령줄 매개변수당 하나의 항목
짧은 이름[*|!] [/ 긴 이름[*|!][=선택_이름]] 유형 [ 옵션 ]
A 짧은 이름 단일 문자(소문자 또는 대문자) 또는 단일 숫자입니다. 긴 이름 하는
더 긴(보다 설명적인) 옵션 이름입니다. 명령줄에서 짧은 이름이 앞에 옵니다.
하나의 대시(예: '-a')로, 긴 버전은 두 개의 대시(예:
'--모두'). 긴 매개변수 이름이 필요하지 않은 경우 짧은 이름만 지정할 수 있습니다.
(그리고 슬래시는 나타날 필요가 없다). 긴 매개변수만 지정하려면
이름 세트 짧은 이름 에 없음. 여러 개의 짧은 옵션을 가질 수 있으므로
예시 설정 짧은 이름 'aA'에 그리고 긴 이름 'all'로 지정하면
명령줄 스위치는 '-a' 또는 '-A' 또는 '--all'로, 모두 동일한 작업을 수행합니다.
A * 시간 내에 짧은 이름 or 긴 이름 인수를 선택 사항으로 만듭니다. 이것은 다음에 대해 지정할 수 있습니다.
짧은 옵션과 긴 옵션이 별도로 있습니다.
A ! 시간 내에 짧은 이름 or 긴 이름 옵션을 부울로 만듭니다. 이것은 하나를 결합 할 수 있습니다
선택적 또는 필수 인수가 있는 긴 옵션이 있는 짧은 부울 옵션 또는
부울 긴 옵션과 선택 또는 필수 인수가 있는 짧은 옵션을 결합합니다.
A ! 옵션 유형이 다음과 같으면 의미가 없습니다. 플래그.
유형 다음 중 하나여야 합니다. INT 뜨다 이륜 전차 현 or 플래그. 처음 XNUMX개는 자기 자신이어야 합니다.
설명. 마지막은 인수를 사용하지 않는 "스위치" 옵션입니다. C 출력의 경우
--gnulib는 명령줄에 추가로 다음 유형이 허용됩니다. 긴
(long int의 경우), 울롱 (부호 없는 long int의 경우), 인트맥스 (Gnulib에 정의된 intmax_t의 경우),
최대 단위 (uintmax_t의 경우), 더블.
다음 옵션 지원됩니다. 순서에 관계없이 나타날 수 있으며 다음을 제외하고
설명 옵션당 각 필드 중 하나만 정의할 수 있습니다.
A 디폴트 값 가치 매개변수에 대해. 문자열의 경우 이것은 단순한 기본값입니다.
가치, 그것이 무엇이든. 문자열의 경우 중괄호 안에 기본값을 지정해야 하고
따옴표를 사용하고 공백을 포함할 수 있습니다(예: {"my default value"}). 문자의 경우
매개변수는 작은따옴표로 묶어야 합니다(예: 'a' 또는 '\n').
A 범위 괄호 안의 값. 낮은 값과 높은 값은 사이에 지정됩니다.
범위 지정자('...' 또는 '..'). 값이 높거나 낮을 수 있습니다.
한쪽에만 경계가 있는 범위에 대해서는 생략됩니다. 매개변수는 다음을 확인합니다.
이 범위 내에 있는지 확인하십시오.
A 콜백 기능. 이 함수는 범위 검사가 완료된 후에 호출됩니다.
수행. 유효성 검사를 수행하는 콜백의 목적은
genparse 파일에 지정할 수 있는 것보다 복잡합니다. 예를 들어 다음과 같이 할 수 있습니다.
입력이 소수, 특정 문자열이어야 하는 프로그램을 작성하십시오.
길이 등
A 설명 큰따옴표로 묶습니다. 에 의해 인쇄됩니다. 용법() 기능. 하나라면
한 줄로 충분하지 않은 경우 여러 설명을 한 줄에 하나씩 지정하십시오.
큰따옴표로 묶습니다. 설명이 Genparse의 첫 번째 열에서 시작되는 경우
파일의 첫 번째 열에도 인쇄됩니다. 용법() 기능.
A #gp_include 지시문은 다른 genparse 파일을 포함하도록 genparse에 지시합니다.
예 #gp_include 또 다른.GP. 포함된 파일에는 매개변수 정의만 허용됩니다.
파일, 전역 지시문 없음.
An __ERR_MSG__(err_txt) 지령. 인쇄되는 오류 메시지를 지정합니다.
인수를 변환할 수 없는 경우. 예시: __ERR_MSG__("%s: 무효의
논쟁"). 이 메시지는 변환 기능이
실패했거나 인수가 범위를 벗어났을 때. 하나를 포함한다고 가정 %s 어느 것
변환할 수 없는 agrumment로 대체됩니다. 때만 사용 가능
Genparse는 다음과 같이 호출됩니다. --그눌립, 그렇지 않으면 무시됩니다.
선택적으로 변환 함수를 두 번째 인수로 추가할 수 있습니다. 예:
__ERR_MSG__("%s: 무효의 논쟁", 인용). 이것은 오류 메시지로 이어질 것입니다
처럼 오류 (종료_실패, 0, "%NS: 무효의 논쟁", 인용구 (선택)).
An __추가_플래그__ 지령. 명령줄 매개변수가 아닌 경우에만 의미가 있습니다.
이미 플래그, 이 경우 추가 플래그 매개변수가 추가되어
명령줄 매개변수가 명령줄에 지정된 경우 설정됩니다. 이 옵션
매개변수에 선택적 인수가 있으면 자동으로 설정됩니다.
A __CODE__(문) 지령. 지정된 코드 문이 복사됩니다.
문자 그대로. 예시: __CODE__(프린트프 ("매개변수 x 였다 세트");). 지정된 코드
한 줄 이상으로 확장할 수 있습니다. Genparse에게 기회를 주기 위해
코드를 적절하게 들여쓰기하고 공백과 탭 들여쓰기를 한 번에 혼합하지 마십시오. __암호__
성명서.
A __STORE_LONGINDEX__ 지령. Interer 유형 필드를 추가하도록 Genparse에 지시합니다.
longindex 변수로 설정될 결과 클래스로 (마지막 인수
@code{getopt_long()}에 대한 호출). 이 새 필드는 다음과 같은 이름을 갖게 됩니다.
결과 필드와 관련되어 있지만 _리 접미사.
다음 글로벌 ��ħ 지원됩니다. 어떤 순서로든 나타날 수 있습니다.
An #포함 지시문은 genparse에게 해당 include 문을 복사하도록 지시합니다.
genparse에 의해 생성된 C 또는 C++ 코드로, 헤더 파일이나 콜백은 아님
파일.
A #필수적인 지시문을 사용하면 usage() 함수 호출을 더 멋지게 만들 수 있습니다. 그것은 허용
스위치 다음에 올 수 있는 필수 명령줄 매개변수를 지정합니다. 메모
Genparse는 필수 매개변수를 확인하지 않고
용법 () 기능 __필수__ 지침. 사용되지 않음 : 더하다 필수
매개 변수 in 전에, #용법 섹션에 있어야 합니다. 대신.
An #exit_value 오류 발생 시 종료 값을 지정하는 지시문.
기본값은 EXIT_FAILURE입니다.
A #break_lines 줄이 끊어질 너비를 지정하는 지시문
도움말 화면에서 그렇지 않은 경우 #break_lines 지시문이 지정되면 행은
genparse 파일에 지정된 대로 정확하게 인쇄됩니다.
If #no_struct 가 지정되면 다음으로 채워질 구조체가 정의되지 않습니다.
생성된 파서의 명령줄 매개변수. 다음과 같은 경우 유용할 수 있습니다.
자신의 코드를 추가하고 싶습니다. __암호__ 대신 진술. C에서만 지원됨
출력.
A #export_long_options 지령. 만약에 #export_long_options 다음으로 정의됩니다.
기능 #get_long_options() 에서 사용하는 longoptions 배열을 내보내는 항목이 추가되었습니다.
#getopt_long(). 이 지시문은 다른 언어의 C 출력에만 사용할 수 있습니다.
무시됩니다.
A 글로벌 콜백 기능. 이 함수는 상호 의존성을 확인하는 데 유용합니다.
매개변수 사이. 각 개인 내에서 상호 의존성을 확인할 수 없습니다.
콜백 함수는 이러한 함수가 호출되는 순서가 다르기 때문에
명령줄의 매개변수 순서에 따라 다릅니다.
Genparse도 생성합니다. 용법() 도움말 텍스트를 stdout에 출력하는 함수
Genparse가 파서를 생성하는 프로그램의 사용. 그것은 사용자 정의 할 수 있습니다
Genparse 파일의 맨 아래에 사용 섹션을 지정합니다. 해당 섹션이 없는 경우
기본값으로 지정
#usage_begin
사용법: __PROGRAM_NAME__ __OPTIONS_SHORT__ __MANDATORIES__
__용어 사전__
#usage_end
사용 섹션은 다음으로 시작합니다. #usage_begin 끝으로 #usage_end. 사이의 모든 텍스트는
나열된 대로 대체될 다음 키워드를 제외하고 그대로 인쇄됨
아래 :
__PROGRAM_NAME__: 프로그램 이름. C 및 C++에서 프로그램 이름은
인수[0].
__옵션_단축__: 사용 가능한 짧은 형식 옵션의 목록(예: [ -abc ]).
__필수__: #mandatory로 정의된 모든 필수 매개변수 목록
명령. 사용되지 않음 : 명부 필수 매개 변수 여기에서 지금 확인해 보세요. 직접.
__용어 사전__: 모든 명령줄 옵션에 대한 설명입니다. 이것은 정보입니다
사람이 읽을 수 있는 형식으로 매개변수 정의에 대해 제공됩니다. 여기에는 다음이 포함됩니다.
매개변수 유형, 기본값, 범위 및 모든 설명. 을 포함하는 라인
__용어 사전__ 매개변수의 용어집으로 대체되며,
같은 줄은 무시됩니다.
__용어집_GNU__: 와 같음 __용어 사전__ 그러나 GNU 스타일에서. 선택적으로 뒤에
설명 텍스트의 들여쓰기를 지정하는 괄호 안의 정수(예:
__용어 사전__(30)). 기본 들여쓰기는 24입니다.
__STRING__(초): 문자열 상수, C에서 아마도 다음으로 정의된 문자열 매크로
#define 전처리기 명령. 이 매크로는 다음을 사용하여 다른 파일에서 가져올 수 있습니다.
genparse 파일의 include 지시문. Java 출력을 생성할 때 무시됩니다.
__INT__(엑스): 정수 상수, C에서 아마도 다음으로 정의된 정수 매크로
#define 전처리기 명령. 이 매크로는 다음을 사용하여 다른 파일에서 가져올 수 있습니다.
genparse 파일의 include 지시문. Java 출력을 생성할 때 무시됩니다.
__CODE__(문): 매개변수 옵션과 동일합니다. 위 참조.
__DO_NOT_문서__: 이 매크로가 포함된 줄은 인쇄되지 않습니다.
용법() 기능. 없이 명령줄 매개변수를 구현하는 데 사용할 수 있습니다.
도움말 화면에 나열합니다.
__NL__: 새로운 라인. 자동 줄 바꿈 중에 수동으로 줄 바꿈에 유용
켜져 있습니다(참조 #break_lines). Java 출력을 생성할 때 무시됩니다.
__NEW_인쇄__: 활성 인쇄 명령을 닫고 새 명령을 시작합니다.
__COMMENT__(텍스트): 사용 텍스트를 인쇄하기 위한 코드에 주석을 추가합니다.
긴 옵션 뒤에 = 기호와 선택적 지정이 올 수 있습니다. 선택_이름 하는 수
다음 설명에서 참조하십시오. 에서 사용될 것입니다. 용법() 기능
오직. 예를 들어 다음 genparse 라인
s / block-size=SIZE int "SIZE 바이트 블록 사용"
도움말 화면에서 다음 행으로 연결됩니다.
[ -s ] [ --block-size=SIZE ] (유형=INTEGER)
SIZE바이트 블록 사용
genparse 스타일(__용어 사전__) 또는
-s, --block-size=SIZE는 SIZE 바이트 블록을 사용합니다.
GNU 스타일(__용어집_GNU__).
표시하기 위해 선택적 이름 주위에 대괄호를 둘 수도 있습니다.
인수는 선택 사항입니다. 그러나 생성된 파서에는 의미가 없습니다. 사용하다
* 인수를 선택 사항으로 만들기 위한 접미사.
s* / block*[=SIZE] int "블록을 사용합니다."
"SIZE가 지정되지 않으면 1kB의 크기를 갖게 됩니다."
도움말 화면에서 다음 행으로 연결됩니다.
-s, --block[=SIZE]는 블록을 사용합니다.
SIZE가 주어지지 않으면 1kB의 크기를 갖게 됩니다.
예
다음은 샘플 genparse 파일입니다.
#포함하다
/* 논평 */
my_callback()
i / 반복 int 100 [10...1000] iter_callback()
"실행할 반복 횟수입니다."
/*
* 댓글
*/
n / 이름 문자열 {"mike"} name_cb() "사용자 이름"
s / str 문자열 "테스트 문자열"
f 플래그 "바보 같은 플래그!"
#usage_begin
사용법: __PROGRAM_NAME__ __OPTIONS_SHORT__ 파일 이름
이것은 어리석은 테스트 프로그램일 뿐입니다.
__용어 사전__
#usage_end
onworks.net 서비스를 사용하여 genparse 온라인 사용