function _getnexttoken() //返回的是規定的幾種預定義字元 ,[,],;,:,datum,eof
if ($this->_offset >= $this->_sourcelength) //到頭了
$str = $this->_source; //原始字串
$str_length = $this->_sourcelength; //原始字串長度
//偏移量,注意,i的位置位於正規表示式結束的地方!對decode乙個buddylist而言,i==0
$i = $this->_offset;
$start = $i; //開始位置
switch ($str[$i]) //現在的位置,得到現在的token,並賦值給token ,此處僅檢驗乙個字元
//注意:在swtich語句中使用的是i,this->_offset並未改變
':$this->_token = rbrace;
break;
case '[':
$this->_token = lbracket;
break;
case ']':
$this->_token = rbracket;
break;
case ',':
$this->_token = comma;
break;
case ':':
$this->_token = colon;
break;
case '"': //雙引號哦!
$result = ''; //空
do //將遍歷結果存在result中
$chr = $str[$i]; //得到當前字元
if ($chr == '//') //如果當前字元為反斜槓/,注意下乙個字元為轉義字元
// result 加上改轉義字元
$chr = $str[$i]; //得到字元
switch ($chr)
}else if ($chr == '"') // 不跟在反斜槓後的雙引號,字串匹配結束,case語句終止
else //既不是轉義字元,也不是雙引號
}while ($i < $str_length); //直到字串結束
$this->_token = datum; //常規字元
//$this->_tokenvalue = substr($str, $start + 1, $i - $start - 1);
$this->_tokenvalue = $result; //注意!result是個字串
break;
case 't': //tab
if (($i + 3) < $str_length && substr($str, $start, 4) == 'true')
$this->_tokenvalue = true;
$i += 3;
break;
case 'f':
if (($i + 4) < $str_length && substr($str, $start, 5) == 'false')
$this->_tokenvalue = false;
$i += 4;
break;
case 'n':
if (($i + 3) < $str_length && substr($str, $start, 4) == 'null')
$this->_tokenvalue = null;
$i += 3;
break;
}if ($this->_token != eof) //switch語句中的case得到匹配
// 未得到匹配
$chr = $str[$i]; //當前字元
// this->_token==eof,switch語句都沒有執行,表明該字元非token,注意,_getnexttoke()一開始就this->_token==eof
if (preg_match('/-?([0-9]*)(/.[0-9]*)?(([ee])[-+]?[0-9]+)?/s', $str, $matches, preg_offset_capture, $start) && $matches[0][1] == $start)
return($this->_token);}}
讀核日記 《Linux核心完全注釋》
linux核心完全注釋 v1.9.5版說明 linux 核心 6.程序間通訊機制 linux 核心 4.記憶體管理 linux 核心 5.linux程序 linux 核心 3.軟體基礎 linux 核心 2.硬體基礎 linux 核心 1.前言 讀核日記 八 linux的記憶體管理機制 2 讀核日記...
Linux核心完全注釋(0 11版)DAY2
fs目錄是檔案系統實現程式的目錄,包含17個c語言程式。這些程式可分為四個部分 高速緩衝區管理 底層檔案操作 檔案資料訪問和檔案高層函式。核心檔案buffer.c是高速緩衝區程式,因為檔案系統資料訪問都需要首先讀取到高速緩衝區。圖為fs目錄中各程式函式之間引用關係 標頭檔案主目錄include 頭檔...
專案實戰一(注釋轉換)
1單行注釋轉換 int a 0 int a 0 2 塊注釋轉換 int a 0 int b 0 轉換後 int a 0 int b 0 3c語言型別注釋型別大全 int a 10 1.一般情況 int num 0 int i 0 2.換行問題 int i 0 int j 0 int i 0 int ...