주요 단계 :
Lexer 업데이트 : lexer가 수정되었습니다 (zend/zend_language_scanner.l) "| & gt;" a 토큰을 생성합니다. 그런 다음 RE2C는 Lexer를 재생하는 데 사용됩니다.
파서 업데이트 : 파서 (Zend/zend_language_parser.y)는 사용, 우주선 (우주선 연산자와 동일) 및 연관성 (비 연관성, 연쇄 방지)을 정의하도록 업데이트됩니다. 🎜> 운영자. 새 AST 노드 ()는 . 에서 생성됩니다
opcode를 방출합니다.
T_RANGE
Zend VM 업데이트 : T_RANGE
Zend VM (Zend/Zend_vm_def.h)은 opcode를 처리하도록 업데이트되었습니다. 여기에는 다양한 피연산자 유형 (정수 및 플로트 만 해당) 처리, 오류 처리 (잘못된 입력 또는 과도하게 큰 범위에 대한 예외) 및 결과 배열을 생성하는 등 Opcode의 동작을 정의하는 것이 포함됩니다. Zend VM은 ext/tokenizer/tokenizer_data.c
를 사용하여 재생됩니다. 마지막으로, tokenizer_data_gen.sh
의 AST Pretty Printer는 새 연산자를 올바르게 표시하도록 업데이트됩니다.
연산자는 두 개의 피연산자 (최소 및 최대)를 기반으로 배열을 만듭니다.
T_RANGE
if 는 단일 요소 배열을 반환합니다
피연산자가 유효하지 않은 경우 ZEND_AST_RANGE
예외를 던지거나 범위가 너무 큽니다.
Zend/zend_ast.h
예 :
1 |> 3; // [1, 2, 3] 2.5 |> 5; // [2.5, 3.5, 4.5] $a = $b = 1; $a |> $b; // [1] 2 |> 1; // Error exception 1 |> '1'; // Error exception new StdClass |> 1; // Error exception
위 내용은 PHP에서 범위 운영자 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!