全球旧事资料 分类
文件偏移量retur
0
i
tCheckE
dBuffercharppcCheckPoi
tcharpcSubName检测是否越界并自动切换缓冲区,bufferL越界返回1,bufferR越界返回2,没有越界返回0staticcharfcBufferL初始化第一次扫描bufferli
tiTempOffset临时偏移量变量fcBufferLiTempOffsetppcCheckPoi
tacSca
BufLiTempOffsetppcCheckPoi
tacSca
BufR计算偏移量ifiTempOffsetSBUFSIZE1越界iffcBufferL
fPreProcesspcSubName装入BufferppcCheckPoi
tacSca
BufR修改当前的指示器到下一个缓冲区的开始fcBufferR修改buffer标志,当前指针在bufferR中retur
1bufferL越界返回1elsePreProcesspcSubName装入BufferppcCheckPoi
tacSca
BufL修改当前的指示器到下一个缓冲区的开始fcBufferL修改buffer标志,当前指针在bufferL中retur
2bufferR越界返回2retur
0没有越界返回0
structsBi
aryRelatio
LexicalA
alyzercharpcSubName词法分析器staticcharfcFirstY初始化扫描指示器为第一个元素staticcharfpcStartcharfppcStartfpcStart取fpcstart的地址staticcharfpcSerchi
gcharfppcfpcSerchi
gfpcSerchi
g取fpcSerchi
g的地址statici
tiLi
e1记录当前的行数i
tpiLi
eiLi
e指向行数的指针structsBi
aryRelatio
sTempResult存放返回结果
iffcFirstY第一次调用装入bufferl
fPreProcesspcSubNamefcFirstNfpcStartacSca
BufL将start和serch都指向第一个地址
whilefpcStart0x20ifCheckE
dBufferfppcStartpcSubNamefpcStart检查是否越界若没越界将start指针指向一个不为空格的字符fpcSerchi
gfpcStartserchi
g指向startfpcSerchi
gserchi
g指向start的下一个位置
whilefpcSerchi
g0x00ifCheckNewLi
efpcStartpiLi
e检查回车,记录行数加一待扩建是否将
也算作标识符fpcStartfpcSerchi
gfpcStartserchi
g指向startelseifisalphafpcStart第一个字符是字母,为关键字charcTempResultSBUFSIZE0charpcCurre
tcTempResult
检查是否为变量或关键字whileisal
umfpcSerchi
g下一个是字符或数字
fifisspacefpcSerchi
gbreak若为空格结束
pcCurre
tfpcSerchi
g将字符保存到临时数组,并且指针后移
ifCheckE
dBufferfppcfpcSerchi
gpcSubNamefpcSerchi
g检查是否越界若没越界将serchi
g循环完成时fpceSerchi
g指向当前标识符的下一个位置将start和serchi
g重合fpcStartfpcSerchi
g
返回当前的标识符放到结构体中i
tKeyWordScript关键字的下标ifKeyWordScriptCheckKeyWordscTempResult0检查是否为关键字还是普通变量sTempResultiId0标志符置为0,关键字的下标sTempResultiSubScriptKeyWordScriptsTempResultacTempValName00赋值else普通变量r
好听全球资料 返回顶部