?? wordpro.l
字號:
%{{* * 基于符號列表定制的單詞識別 *}program WordPro;{$APPTYPE CONSOLE}uses SysUtils, LexLib, Classes;type TWordState=(wsLookUp, wsVerb, wsAdj, wsAdv, wsNoun, wsPrep, wsPron, wsConj); TWord=class(TObject) public word:string; State:TWordState; end;var state:TWordState; WordList:TStringList;function LookUpWord(word:string):TWordState;var I:integer;begin I:=WordList.IndexOf(Word); if I>-1 then begin result:=TWord(WordList.Objects[I]).State; end else result:=wsLookUp;end;function AddWord(State:TWordState; Word:string):integer;var WordObj:TWord;begin //struct word *wp; if (LookUpWord(Word)<>wsLookUp) then begin Writeln(format('!!! %s 已經被定義了', [word])); result:=0; exit; end; WordObj:= TWord.Create; WordObj.Word:=Word; WordObj.State:=State; WordList.AddObject(Word, WordObj); result:=1;end;%}%%\n state := wsLookUp;^verb state := wsVerb;^adj state := wsAdj;^adv state := wsAdv;^noun state := wsNoun;^prep state := wsPrep;^pron state := wsPron;^conj state := wsConj;[a-zA-Z]+ begin if(state <> wsLookUp) then AddWord(state, yytext) else begin Case LookUpWord(yytext) of wsVerb: Writeln(format('%s 是動詞', [yytext])); wsAdj: Writeln(format('%s 是形容詞', [yytext])); wsAdv: Writeln(format('%s 是副詞', [yytext])); wsNoun: Writeln(format('%s 是名詞', [yytext])); wsPrep: Writeln(format('%s 是介詞', [yytext])); wsPron: Writeln(format('%s 是代詞', [yytext])); wsConj: Writeln(format('%s 是連詞', [yytext])); else Writeln(format('%s 無法識別', [yytext])); end; end; end;. {* 忽略剩下的所有的字符串 *} ;%%begin WordList:=TStringList.Create; try yylex; finally //Todo:釋放WordObj WordList.Free; end;end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -