开源代码:Delphi词法分析全过程

Delphi 实现汉语分词 delphi与搜索引擎的资料很少了 分词技主了了无几今天传一个让大家参考一下 有了改进别忘记告诉我一下 谢谢 立即下载

unit DelphiToken;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StringOperations;

const
  WM_TOKENERROR  = WM_USER + 2034;
 
const
  CHR_SYMHEADER  = 1;       //当第1位为1时,可以做为标识符的字符//
  CHR_NUMHEADER  = 2;       //当第2位为1时,可以做为数字的字符//
  CHR_SYMGLOBAL  = 4;       //当第3位为1时,可以做为//
  CHR_NUMGLOBAL  = 8;
  CHR_QUOTE      = 16;       //当第4位为1时,可以做为字符串界符//
  CHR_WHITE      = 32;      //当第5位为1时,可以做为空白符//

const
  bs   = 8; (* BackSpace字符 *)
  tab  = 9; (* TAB字符 *)
  nl   = 10; (* NewLine字符 *)
  cr   = 13; (* Return字符*)
  ff   = 12; (* form feed 字符 *)

const
  LEN_OPRSYMTAB = 13;
  LEN_BNDSYMTAB = 8;

type
  TCharClass=(
    ccUnknown,
    ccSymbolHeader,
    ccSymbolGlobal,
    ccNumberHeader,
    ccNumberGlobal,
    ccQuote,
    ccToDo,
    ccWhite
  );

  TCharClasses=Set of TCharClass;
 
  TDKeywordID=(
    DKW_AND,             //and
    DKW_ARRAY,           //array
    DKW_BEGIN,           //begin
    DKW_BOOL,            //bool
    DKW_BYTE,            //byte
    DKW_CALL,            //call
    DKW_CARDINAL,        //cardinal
    DKW_CASE,            //case
    DKW_CDECL,           //cdecl
    DKW_CHAR,            //char
    DKW_CLASS,           //class
    DKW_CONSTANT,        //constant
    DKW_COMP,            //comp
    DKW_CONST,           //const
    DKW_CURRENCY,        //currency
    DKW_DIV,             //div
    DKW_DO,              //do
    DKW_DOUBLE,          //double
    DKW_ELSE,            //else
    DKW_END,             //end
    DKW_EXCEPT,          //except
    DKW_EXTENTED,        //extented
    DKW_FALSE,           //false
    DKW_FILE,            //file
    DKW_FINALIZATION,    //finalization
    DKW_FINALLY,         //finally
    DKW_FOR,             //for
    DKW_IF,              //if
    DKW_IN,              //in
    DKW_INITIALIZATION,  //initialization
    DKW_INPUT,           //input
    DKW_INTEGER,         //integer
    DKW_INTERFACE,       //interface
    DKW_INT64,           //int64
    DKW_IMPLEMENTATION,  //implementation
    DKW_IMPLEMENTS,      //implements
    DKW_LIBRARY,         //library
    DKW_LONGINT,         //longint
    DKW_LONGWORD,        //longword
    DKW_MOD,             //mod
    DKW_NOT,             //not
    DKW_OF,              //of
    DKW_OR,              //or
    DKW_OUTPUT,          //output
    DKW_PASCAL,          //pascal
    DKW_PRIVATE,         //private
    DKW_PROCEDURE,       //procedure
    DKW_PROGRAM,         //program
    DKW_PROTECTED,       //protected
    DKW_PUBLIC,          //public
    DKW_PUBLISHED,       //published
    DKW_RAISE,           //raise
    DKW_READ,            //read
    DKW_REAL,            //real
    DKW_REAL48,          //real48
    DKW_REGISTER,        //register
    DKW_REPEAT,          //repeat
    DKW_PROPERTY,        //property
    DKW_SAFECALL,        //safecall
    DKW_SINGLE,          //single
    DKW_SET,             //set
    DKW_SMALLINT,        //smallint
    DKW_SHORTINT,        //shortint
    DKW_STDCALL,         //stdcall
    DKW_THEN,            //then
    DKW_TO,              //to
    DKW_TRY,             //try
    DKW_TRUE,            //true
    DKW_TYPE,            //type
    DKW_UNIT,            //unit
    DKW_UNTIL,           //until
    DKW_USES,            //uses
    DKW_VAR,             //var
    DKW_WHILE,           //while
    DKW_WORD,            //word
    DKW_WRITE            //write
  );

  TDKeywordType=(
    kwtUnknown,
    kwtControl,
    kwtOperator,
    kwtInt,
    kwtFloat,
    kwtBool,
    kwtChar
  );

  PKeyword=^TDKeyword;
 
  TDKeyword=record
    id:TDKeywordID;
    str:string;
    type_:TDKeywordType;
  end;

  TDKeywordList = class
  private
    FList:TList;
    function GetItemCount:Integer;
    function GetItem(Index:Integer):PKeyword;
  public
    constructor Create;
    destructor Destroy;override;

    procedure Add(Value:PKeyword);overload;
    function Add:PKeyword;overload;
    function AddAndInit(const id:TDKeywordID; str:string;
      type_:TDKeywordType):PKeyword;overload;
    procedure Insert(const Index:Integer;Value:PKeyword);overload;
    function Insert(const Index:Integer):PKeyword;overload;
    procedure Delete(const Index:Integer);
    procedure Clear;

    function IndexOf(const Keyword:TDKeywordID):Integer;
    function FindKey(const Keyword:TDKeywordID):PKeyword;
    function Lookup(const AStr:string; const bCase:Boolean;
      var KeyInfo:PKeyword):Boolean;

    procedure LoadFromFile(const FileName:string);
    procedure SaveToFile(const FileName:string);
    procedure LoadFromStream(Stream:TStream);
    procedure SaveToStream(Stream:TStream);

    property ItemCount:Integer read GetItemCount;
    property Items[Index:Integer]:PKeyword read GetItem;
  end;

  TCharSet=set of Char;

  TTokenType=(
    //UnknownToken类型//
    ttUnknown,
    //一般Token类型//
    tTDKeyword,
    ttSymbol,
    ttInt,
    ttFloat,
    ttString,
    //操作符Token类型   //
    ttAddr,             // @
    ttPointer,          // ^
    ttAdd,              // +
    ttSub,              // -
    ttMul,              // *
    ttDiv, 

delphi 实现简单链表和分词 实现链表,简单汉语分词 1、利用指针; 2、汉字索引,实现gbk内码作索引 3、简单分词,正向匹配 与 <<Delphi 实现带索引链表实现简单汉语分词>> 相同,当时上传错误,重新弄的. 立即下载

相关推荐

delphi源码分词

delphi源码分词 例如 大海是浩瀚的 结果: 大海 是 浩瀚 的

Delphi实现的简单中文分词v1.1

新版本,改为采用最大匹配法,效果有一定提升,并且加入非中文的支持。

PythonForDelphi分词.zip

PythonForDelphi分词.zip

delphi+Python结巴分词例子源代码

delphi+Python结巴分词例子源代码,用到组件PythonForDelphi

delphi实的词法分析与编译器实现,yacc&lex

lex是词法分析和语法分析器,本来以为这东西只有c++的呢,没想到也有delphi的 大家可以学习一下lex算法,想搞编译器的可以学习下yacc 非常不错的东西

Delphi实现的简单中文分词

简单中文分词,采用基于词库的正向最大频率匹配算法,效果还过得去,但速度太慢,有待改进。

Delphi实现的简单中文分词.rar

Delphi实现的简单中文分词 可以使用一下

华为2022数字芯片笔试题

单选 1、ASIC开发流程中,如下环节的先后顺序是? A. RTL-> Synthesis->P&R B. Synthesis->P&R->RTL C. Synthesis->RTL->P&R D.RTL->P&R->Synthesis 2、o10换算成十进制是多少? A. 8 B.16 C.10 D.2 3、reg [7:0] mem [1:256];initial $readmemh("me..

weixin_44072819的博客 1万+

PX4算法解析:L1制导律

一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算...

weixin_44616080的博客 8254

Ansys -PEmag 平面变压器仿真与circuit电路模型验证

ansys 软件集成了电路、磁路、PCB参数提取,结构参数提取等功能仿真,基于内置模块的功能参数的仿真后可以提取出主要关键参数,寄生参数,频域响应参数等。该软件的优势在于能够将所有的仿真参数导出为电路模型文件,可以在自带的模块中仿真也可以导出在其他第三方软件中仿真,比如matlab-simulink文件扥。主要介绍ANSYS插件的使用,对PEmag做了详细使用说明并通过案例得到对用的变压器参数;基于变压器参数再将其磁路模型导入到电路中进行建模仿真,实现PEmag与circuit的联合仿真。

weixin_41609745的博客 3016

【Python爬虫】爬取企业专利信息

本来是个美好的周末的,但是周五晚上领导给了一个公司名称的Excel,让把这些公司的专利信息爬取下来。本文记录了爬取企业专利信息的心酸过程。码字不易,喜欢请点赞!!! 一、找寻目标网页 在接到这个任务之后,我的内心是拒绝的。但是又不能不干。因此首先我需要先找到有公司专利信息的地方。在一番查找和问了问朋友之后,我知道中国专利网、国家知识产权网、Incopat、天眼查、企查查这些网站上面都有企业的专利...

Asher117的博客 2万+

与rkipc通信

函数名称功能系统模块初始化系统模块反初始化重启恢复出厂设置导出日志导出配置文件导入配置文件系统升级获取用户数设置用户数获取用户权限设置用户权限获取用户名设置用户名获取密码(已加密)设置密码(已加密)新增用户删除用户。

qq_44643189的博客 1612

YOLOv11改进 | 特殊场景改进篇 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

本文给大家带来的改进机制是2024.3月份最新改进,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络CPA-Enhancer通过引入链式思考提示机制,实现了对未知退化条件下图像的自适应增强。该方法的核心在于能够利用CoT提示对图像退化进行动态分析和适应,从而显著提升物体检测性能。

Snu77的博客 2013

DeepSeek + 微信:手把手教你把 AI 接入个人微信,秒变“高情商”聊天助手(防封指南)

将 DeepSeek 接入微信,本质上是给你的微信装了一个**“最强外挂”**。它不仅能帮你回消息,还能帮你写周报、查资料、甚至陪聊解闷。工具是服务于人的,不要让 AI 完全替代了你的真情实感。毕竟,真正的高情商,是屏幕背后那个在乎对方的你。先申请一个小号,按照步骤跑通流程。然后试着调整 Prompt,训练一个属于你自己的“嘴替”吧!

BUG猿的博客 957

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4614

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 将TDBGridEh中的数据导出到Excel中
WindowsAPI
博客等级 码龄25年 7粉丝 2原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值