Doku_Lexer
클래스를 포함하고 inc/parser/lexer.php
파일의 컨텐츠들 입니다. 이 문서는 parser의 행동방식을 수정하고 싶은 개발자들을 위한 도쿠위키 Parser 설명 문서입니다. HTML 이나 다른 결과 포맷도구를 수정할 수도 있습니다.
parser 로 기존 도쿠위키 문서를 변화시키는 작업을 하면서 별개의 최종 문서를 만듭니다. 각 단계는 한개 이상의 PHP 클래스들에 의해 표현됩니다.
대체로 이러한 요소들은;
핸들러를 렌더러와 연결시키기 위해 필요한 메커니즘은 따로 없습니다. - 이 경우는 특별한 케이스입니다.
밑의 그림은 구성요소들 간의 관계를 그린 대략적인 다이어그램입니다.
+-----------+ +-----------+ | | Input | Client | | Parser |<---------| Code | | | String | | +-----.-----+ +-----|-----+ Modes | /|\ + | Renderer | Input | Instructions| String \|/ | +-----'-----+ +-----------+ | | | | | Lexer |--------->| Handler | | | Tokens | | +-----.-----+ +-----------+ | | +----+---+ | Modes |-+ +--------+ |-+ +--------+ | +--------+
“Client Code”(parser 를 사용하는 코드) 는 Input 과 String 에게 제공하는 parser 를 내포하고 있습니다. 이건 핸들러에 의해 만들어진 “Renderer Instructions”의 리스트를 return 값으로 받습니다. 이것들은 렌더러를 포함하는 오프젝트들에게 전달해주게 됩니다.
Note: 이 디자인의 중요한 포인트는 렌더러가 가능한 “” 같아 지도록 한다는 것입니다. 이건 앞으로의 해석을 만들 필요가 없습니다. 수정할 수는 있지만 결과물을 렌더링 하는 데에는 주의해야 합니다.(e.g. XHTML) - 특히 렌더러 상태를 추적할 필요가 없습니다. 렌더러를 쉬운 요소로 만들며 원칙을 지킨다면 렌더러가 호환이 가능하도록 만들 수 있게 될 것입니다.(e.g. XHTML 로 대체가능한 PDF) 동시에, 핸들러의 지침서는 XHTML 로 렌더하기 적합해집니다.
inc/parser/lexer.php
에 정의되어 있습니다.
Doku_Lexer
클래스를 포함하고 inc/parser/lexer.php
파일의 컨텐츠들 입니다. Doku_Handler
클래스를 포함하고 inc/parser/handler.php
파일의 컨텐츠입니다.$calls
배열을 호출합니다. 이것은 call_user_func_array를 사용하는 것을 의미합니다. Doku_Parser
클래스와 관련있고 inc/parser/parser.php
파일의 컨텐츠들 입니다.Doku_Renderer
를 포함하는 몇몇 클래스와 관련이 있습니다. - see inc/parser/renderer.php
and inc/parser/xhtml.php