ByteMap巢狀分析

ByteMap 是一個 key-value => cascaded 的分析器,bytemap 本身不能做什麼,其中一個應用就是用來編程序源碼吧。畢竟這是我寫簡繁轉換器洐生出來的東西,我能想到的大概就是可以用在 AI 的決策方案上?

如何編寫 bytemap compiler

跟據不同的 Compiler class ,ByteMap 可以輸出不同的格式,如 xml、yaml、css,甚至可以像我一樣直接輸出 C++ 源碼。

例:SimpleExample.php ( $level = 0 )參考本文上圖,輪出:
Head Branch a
        Head Branch c a
                 value: 10
        Closed
        Branch a
                Head Branch b
                         value: 4
                Closed
                Branch a
                         value: 3
                Closed
                wholeByte value: 2
        Closed
        wholeByte value: 1
Closed

如果截掉「new ByteMap( function() {} )」裹面的「function() {}」的話,會輸出以下的 log,可以窺見 ByteMap 是如何運作的:
  Sorting sequence...done
    Level: 0
    Group: START 0, END 5 (5)
    Matching Index: 0
    | (61)
    | (61) 63 61
    | (61) 61
    | (61) 61 62
    | (61) 61 61
    Index: 1 Len: 1
    Whole byte-sequence at level: 0
        Level: 1
        Group: START 1, END 2 (1)
        Matching Index: 1
        | 61 (63) 61
        Index: 3 Len: 3
        Group: START 2, END 5 (3)
        Matching Index: 1
        | 61 (61)
        | 61 (61) 62
        | 61 (61) 61
        Index: 2 Len: 2
        Whole byte-sequence at level: 1
            Level: 2
            Group: START 3, END 4 (1)
            Matching Index: 2
            | 61 61 (62)
            Index: 3 Len: 3
            Group: START 4, END 5 (1)
            Matching Index: 2
            | 61 61 (61)
            Index: 3 Len: 3

interface ByteMapCompiler

interface ByteMapCompiler {
    function branchOpen($level, \Branch $b);
    function branchValue($level, $isHead, $byteSequence, $wholeByte, $indexByte);
    function branchClose($level, $isHead);
}

首先我們得先做寫一個 Complier 讓 bytemap 使用,Compiler 就只有三個步䮕,分別是 Open / Value / Close

branchOpen( $level, \Branch $b )
Branch $b - 上例 branchOpen 於 SimpleExample ,這個 function 會跟據 Branch $b 的屬性「$b->isHead」而分別輸出「Head Branch a」、「Head branch c a」和「Branch a」。
int $level - 就是當前所在層級
Boolean $wholeByte - 定義 $byteSequence 是不是 whole byte-sequence。分支包含子分支,而分支本身也有一個值。也就是說「a」本身有一個值,而「a」有很多子分支(aa, aaa⋯),那麼「a」就是一個「whole byte-sequence」
$isHead - 是不是字元組的首個支點
branchValue( $level, $isHead, $byteSequence, $wholeByte, $indexByte )
$level - 當前層級
$byteSequence - 當前的 byte sequence ( a, aa, aaa ... )
$wholeByte -
$indexByte - byte squence 的 index,簡單來說就是上面的 log 裹面,括住的數字的位置。
branchClose( $level, $isHead )
同上
Tag(s): php bytemap analysis
Profile picture
斟酌 鵬兄
Tue Oct 20 2015 14:38:17 GMT+0000 (Coordinated Universal Time)
Last modified: Fri Mar 11 2016 14:59:27 GMT+0000 (Coordinated Universal Time)
Comments
No comments here.
Do you even comment?
website: 
Not a valid website
Invalid email format
Please enter your email
*Name: 
Please enter a name
Submit
抱歉,Google Recaptcha 服務被牆掉了,所以不能回覆了