Perl 핵심 소스 코드를 읽는 방법
5843 단어 perl
이것은 원래 The way to read Perl core source codes | Perl ABC
주요 기능은 어디에 있습니까?
main
함수는 perl
명령의 진입점입니다.perlmain.c
로 작성되었지만 Perl에는 이름이 perlmain.c
인 C 소스 코드가 없습니다.perlmain.c
는 Makefile.SH을 사용하여 ExtUtils::Miniperl에 의해 생성됩니다.perl 명령줄 인수를 처리하는 곳은 어디입니까?
perl 명령줄 인수 처리는 perl_parse 함수에서 시작됩니다.
perl_parse
는 perl.c에서 정의됩니다.parse_body 함수로 이동합니다.
parse_body
는 perl.c에서 정의됩니다.명령줄 인수의 처리 논리를 볼 수 있습니다.
토크나이저는 어디에 있습니까?
다음은 토크나이저입니다. Perl 구문의 일부는 토큰으로 변환됩니다.
토큰화는 lex_start 함수에서 시작됩니다.
lex_start
는 toke.c에서 정의됩니다.파서는 어디에 있습니까?
다음은 파서입니다. 파서는 토큰을 AST(추상 구문 트리)로 변환합니다.
구문 분석은 yyparse 함수에서 시작됩니다.
yyparse
는 perly.c에서 정의됩니다.perly.c
는 perly.y을 사용하여 bison에서 생성됩니다.Perl 데이터 구조는 어디에 있습니까?
스칼라 값
SV
의 유형과 해당 기능은 sv.h 및 sv.c에 정의되어 있습니다.배열의 유형
AV
과 해당 기능은 av.h 및 av.c에 정의되어 있습니다.해시 유형
HV
과 해당 기능은 hv.h 및 hv.c에 정의되어 있습니다.Perl은 어디에서 실행됩니까?
AST가 최적화된 후 Perl은 perl_run 함수에서 실행됩니다.
perl_run
는 perl.c에서 정의됩니다.run_body 함수로 이동합니다.
run_body
는 perl.c에서 정의됩니다.CALLRUNOPS 앞으로 이동합니다.
CALLRUNOPS
는 perl.h에서 PL_runops
로 정의됩니다.또한 매크로는 다음과 같이 정의됩니다.
perl.h:#define CALLRUNOPS PL_runops embedvar.h:#define PL_runops (vTHX->Irunops) intrpvar.h:PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) perl.h:# define RUNOPS_DEFAULT Perl_runops_standard
Perl_runops_standard
함수로 이동합니다.Perl_runops_standard
는 run.c에서 정의됩니다.OP
구조체의 멤버op_ppaddr가 호출됩니다.op_ppaddr
는 작업을 수행하기 위한 함수 포인터입니다.연산자는 어디에 정의되어 있습니까?
연산자는 다음 소스에서 정의됩니다.
Reference
이 문제에 관하여(Perl 핵심 소스 코드를 읽는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yukikimoto/the-way-to-read-perl-core-source-codes-34i4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)