본 글에서는 PC측 위챗스캔 등록 및 로그인을 위한 예제 코드를 자세히 설명하고 있습니다
어휘 부분을 작성하고 나면 잡일이 많아 드디어 주말에 시간이 나서 구현해봅니다. 훌륭한 문법 분석 부분.
코드를 완성한 후 프로그램이 너무 짧다는 것을 발견했습니다. 상태 머신을 제외하면 186줄(댓글 포함)밖에 없었습니다. 키 코드가 100줄 미만이었습니다. 디버깅을 실행해 보니 괜찮다는 것을 알았습니다. 실제로 OneThink에서 function.php를 구문 분석할 수 있습니다. 이 파일은 PHP 프로그램의 마스터라고 할 수 있습니다. 그 안에는 온갖 종류의 괴물과 괴물이 들어 있습니다. 디버깅하는 것은 정말 고통스럽습니다. 물론 말하지 않겠습니다 ㅎㅎ
프로그램이 너무 짧아서 에서 자세히 설명하겠습니다. 모두가 이해하지 못하는 경우의 비결:)
문법 분석에는 일반적으로 LL(1), LR(0), SLR(1), LALR(1), LR(1) 등이 포함된다는 것을 알고 있습니다. 분석 방법. 더 일반적인 것은 LL(1), LR(0)
LL입니다. 이 분석 방법은 왼쪽에서 오른쪽으로 스캔하고 가장 왼쪽으로 추론합니다. LR은 예측 테이블을 사용하고 LR은 분석 테이블을 사용합니다. LR의 난이도는 LL보다 높고 분석 능력도 LL보다 높으며 LR에 더 많은 변화가 있습니다. 그러므로 이런 재미있는 프로젝트를 위해서는 당연히 LR을 사용하여 꾸준히 새로운(bi)를 만들어내야 합니다.
LR 분석기의 모델은 아래와 같습니다.
에는 두 개의 스택이 포함되어 있으며, 그 중 가장 중요한 것은 LR 분석 테이블을 생성하는 것입니다. 물론, 나는 교과서에 나오는 고전적인 방법을 정직하게 따르지는 않을 것이다. 어떻게 새로운 것을 창조할 것인가? 이것이 핵심입니다.
SLR(1), LALR(1) 및 LR(1)은 모두 LR(0)의 개선 사항임을 알 수 있습니다. 가장 중요한 것은 기대를 나타내는 (1)입니다. 왜 기대합니까? 분석 테이블의 크기를 줄입니다. 앞으로는 셀 수 없이 많은 가능성이 존재하며, 그 가능성도 줄어들고 분석 규모도 크게 줄어들 것입니다. 분석의 규모를 줄이려면 앞을 내다보아야 하며, 보면 볼수록 분석 테이블은 작아지고, 반대로 프로그래밍은 더 어려워집니다. 그렇다면 앞을 보지 않고, 난이도를 높이고 분석표를 줄이지 않고 서서 돈을 벌 수 있는 방법은 없을까?
그렇습니다. 게으른 노인에게는 문제가 되지 않습니다. 우리는 기대의 필요성이 문법 표현 에서 나온다는 것을 알고 있습니다. A → Abc와 같이 단일 표현의 길이가 길수록 불확실성이 커집니다. 따라서 메소드 표현식의 최대 길이를 제한하면 이 길이 내에서 100% 확실성을 보장할 수 있으며, 앞을 내다볼 필요가 전혀 없습니다. 나는 이 방법을 제한된 길이 LR, 즉 LLLR(0,n), n>=3이라고 명명했습니다.
그래서 이번에는 자연스럽게 분석 방법으로 LLLR(0,3)을 선택했고, 구현의 편의를 위해 상태를 저장하지 않기로 했기 때문에 분석 테이블을 생성할 필요는 없고, 그러면 테이블이 더 이상 생성되지 않습니다.
젠장! 이것은 너무 게으르다. 상태를 저장하지 않는다는 것은 매번 처음부터 를 검색해야 한다는 의미입니다. 효율성은 어떻습니까, 이것이 프로그래머의 삶입니다!
걱정하지 마세요. 표현식의 최대 길이는 3이고, 최대 검색 단계는 3단계입니다. :) 이것이 바로 100줄의 초간단 Php 컴파일러의 비결입니다. 소스 코드는 여기에 있습니다: ConverterV0.4.zip 즐겨보세요!
위 내용은 PC측 WeChat 코드 스캐닝 등록 및 로그인 예시 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!