📄 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 + -