当前位置:文档之家› RFC4622_中文

RFC4622_中文

RFC4622_中文
RFC4622_中文

RFC4622

出自Jabber/XMPP中文翻译计划

跳转到: 导航, 搜索

本文的英文原文来自RFC 4622

网络工作组P. Saint-Andre

申请讨论: 4622 J abber软件基金会

类别: 标准跟踪2006年7月

用于Extensible Messaging and Presence Protocol (XMPP) 的国际化资源标识符(IRIs)和统一资源标识符(URIs)

关于本文的说明

本文为互联网社区定义了一个互联网标准跟踪协议,并且申请讨论协议和

提出了改进的建议。请参照“互联网官方协议标准”的最新版本(STD 1)获得这个协议的标准化进程和状态。本文可以不受限制的分发。

版权声明

本文版权属于互联网社区(C) The Internet Society (2006).

摘要

本文定义了在XMPP通信的时候,国际化资源标识符(IRIs)和统一资源标识符(URIs)在识别实体或与实体交互中的使用.

目录

[隐藏]

? 1 简介

o 1.1 术语

? 2 XMPP IRIs 和URIs的使用

o 2.1 基本原理

o 2.2 格式

o 2.3 授权组件

o 2.4 路径组件

? 3 =查询组件

o 3.1 碎片标识组件

o 3.2 XMPP IRIs/URIs的生成

? 3.2.1 生成方法

? 3.2.2 生成备注

? 3.2.3 生成例子

o 3.3 XMPP IRIs/URIs的处理

? 3.3.1 处理方法

? 3.3.2 处理备注

? 3.3.3 处理例子

o 3.4 国际化

? 4 xmpp URI规划的IANA注册项

o 4.1 URI规划名

o 4.2 状态

o 4.3 URI规划语法

o 4.4 URI规划语义

o 4.5 编码事项

o 4.6 使用本URI规划名的应用/协议

o 4.7 互操作性事项

o 4.8 安全性事项

o 4.9 联系人

o 4.10 作者/变更管理者

o 4.11 参考

? 5 IANA事项

? 6 安全事项

o 6.1 可靠性和一致性

o 6.2 恶意的语句

o 6.3 后台转换

o 6.4 敏感信息

o 6.5 语义攻击

o 6.6 欺骗

?7 参考

o7.1 标准参考

o7.2 信息参考

简介

可扩展的消息和出席信息协议(XMPP)是一个流式的XML技术,允许任何两

个网络上的实体准实时地交换XML元素(称为"XML节").

如[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]所定义,

在XMPP网络通信中使用的实体地址不能(must not)由一个Uniform

Resource Identifier (URI)(定义在[URI])规划预设. 无论如何,一个XMPP网络之外的应用需要通过URIs 或更时髦的方式,比如国际化资源标识符(IRIs;

见[IRI])来标识XMPP实体. 这些外部应用的例子包括,需要存储XMPP地址的数据库,非本地用户代理例如web浏览器,和提供接口给XMPP服务的日历应用程序.

XMPP地址的格式定义在[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]. 这样的一个地址可以包含几乎任何\[UNICODE\] 字符并且必须(must)遵从很多\[STRINGPREP\]的profiles. 这使得XMPP地址完全国际化并且非常接近于一个没有scheme的IRI. 无论如何, 由于在IRS

schemes中没有独立的注册项, 所以需要定义的XMPP标识符主要是作为

URIs而不是IRIs, 并且注册一个XMPP URI scheme而不是一个IRI scheme.

所以, 本文做以下事情:

?说明如何标识XMPP 实体作为IRIs 或URIs.

?说明如何与作为IRIs 或URIs 的XMPP 实体交互.

?正式定义XMPP IRIs and URIs 的语法.

?说明如何转换XMPP IRIs 成为URIs ,反之亦然.

?注册xmpp URI scheme.

术语

本文继承来自\[IRI\], \[URI\], 和[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]的术语.

关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",

"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和"OPTIONAL"

在本文中的解释描述于RFC 2119 \[TERMS\].

XMPP IRIs 和URIs的使用

基本原理

如XMPP-IM所述, XMPP的即时消息和出席信息应用必须处理im: 和pres: URIs (由[CPIM] 和[CPP]定义). 无论如何, 有许多XMPP的其他应用(包括网络管理, 工作流系统, 通用发行-订阅, 远程过程调用, 内容联合,游戏, 和

中间件), 而这些应用没有实现即时消息和出席信息语义. 一个通用的XMPP 实体不会实现任何已有的URI规划的语义, 如http:, ftp:, 或mailto: 规划.

所以, 需要定义一个新的URI 规划, 以IRI 或URI 来标识或和任何XMPP 实体交互(不仅是即时消息和出席信息实体).

XMPP IRIs 和URIs 定义由非本地接口和应用所使用, 主要目的是为了标

识而非交互后者的区别,见[URI]第一章第二节第二小节). 为了确保在

XMPP网络中的互操作性, 当数据被路由到一个XMPP 实体(例如, 当一个

XMPP 地址包含于一个XML节的'to' 或'from' 属性中)或一个XMPP 实体以别的方式为标准XMPP协议元素所标识, 这个实体必须(MUST)被赋予的

地址格式为<[node@]domain[/resource]>(换言之, 没有一个预先的规划),这

里一个XMPP地址的"node identifier"部分,"domain identifier"部分, 和

"resource identifier"部分都遵守[XMPP-CORE第三章|XMPP文档列表

/XMPP正式RFC标准/RFC3920#地址空间]所定义的规范.

(注意: 由于历史原因, XMPP中的术语"resource identifier"表示XMPP地址

的可选部分,跟在域名后面并用"/"符号隔开(详细情况, 参照[XMPP-CORE

第三章第四节|XMPP文档列表/XMPP正式RFC标准/RFC3920#地址空间];

术语"resource identifier"的使用不要和\[URI\]的第一章第一节提供的

"resource"和"identifier"弄混了).

格式

如XMPP-CORE所述, 一个生来用于一个XMPP网络的XMPP地址是一个

Unicode字符串, (1) 遵循一个特定系列的[STRINGPREP] profiles 和[IDNA] 约束, (2) 允许特定系列的语法规则, 并且(3) 编码为[UTF-8]. 这样一个地

址的格式可以被表示为扩张的巴斯科范式([ABNF])如下:

[ node "@" ] domain [ "/" resource ]

在这个上下文中, "node" 和"resource" 规则依赖于于独特的profiles of

[STRINGPREP],而"domain" 规则依赖于[IDNA]说描述的国家化域名概念.

(注意: 不需要参考IRI语法本身的punycode, 因为为了展示国际化域名任何punycode表述仅发生在XMPP应用内部. 无论如何, 在为XML节指明XMPP 网络实体地址之前, 转换[IRI]语法到[IDNA]语法的工作是应用程序的责任.) 很自然, 为了被转化成IRI 或URI, 一个XMPP地址必须以一个规划进行预处理(特别的, xmpp规划)并且也可能需要要先进行转化以满足[IRI]和[URI]定义的规则. 更远一点, 为了和一个XMPP实体能有更多高级的交互能力而不只是简单地标识, 可能需要获得附加的URI语法和语义, 例如授权组件,查询组件, 以及碎片标识组件.

所以, 以下使用显示了用[ABNF]定义的巴斯科范式格式来用作XMPP IRI 的ABNF语法, 这里"ifragment", "ihost", 和"iunreserved" 规则定义于[IRI],

"pct-encoded"规则定义于[URI], 而DQUOTE 定义于[ABNF]:

xmppiri = "xmpp" ":" ihierxmpp

[ "?" iquerycomp ]

[ "#" ifragment ]

ihierxmpp = iauthpath / ipathxmpp

iauthpath = "//" iauthxmpp [ "/" ipathxmpp ]

iauthxmpp = inodeid "@" ihost

ipathxmpp = [ inodeid "@" ] ihost [ "/" iresid ]

inodeid = *( iunreserved / pct-encoded / nodeallow )

nodeallow = "!" / "$" / "(" / ")" / "*" / "+" / "," / ";" /

"=" / "[" / "\" / "]" / "^" / "`" / "{" / "|" /

"}"

iresid = *( iunreserved / pct-encoded / resallow )

resallow = "!" / DQUOTE / "$" / "&" / "'" / "(" / ")" /

"*" / "+" / "," / ":" / ";" / "<" / "=" / ">" /

"[" / "\" / "]" / "^" / "`" / "{" / "|" / "}"

iquerycomp = iquerytype [ *ipair ]

iquerytype = *iunreserved

ipair = ";" ikey "=" ivalue

ikey = *iunreserved

ivalue = *( iunreserved / pct-encoded )

无论如何, 前述的语法不适合包含在xmpp URI规划中的注册项中, 因为

IANA只承认URI规划而不承认IRI规划. 所以,ABNF语法用于XMPP URI而

不是IRI,定义见本文第三章第三节(见下文"IANA Registration"). 如果有必要把IRI语法转化成URI语法, 一个应用程序必须(MUST)遵守定义于\[IRI\]第三章第一节的映射过程.

以下是一个基本的XMPP IRI/URI例子,用于标识一个和XMPP服务器有关的节点:

xmpp:node@https://www.doczj.com/doc/6f11830514.html,

以下章节提供各种组件对于XMPP IRI/URI的描述.

授权组件

如本文第二章第八节所述, 在缺乏授权组件的时候, 处理程序将作为一个已配置的XMPP服务器的一个已配置的用户来进行验证. 也就是说, 授权组件章节不是必需的, 并且如果处理程序已经被缺省的证书配置好,授权组件将被忽略.

和RFC 3986第三章第二节一致, 授权组件由一个双斜杠("//")开始,结束于下一个单斜杠("/"), 问号("?"), 或数字符号("#")字符, 或由IRI/URI的结尾结束. 更完整的解释见本文第二章第八节第一小节, 一个授权组件的出席信息通知处理程序在授权组件中验证它是node@domain,而不是作为一个已配置的node@domain. (见本文的安全性事项章节Security Considerations中关于验证的部分). (虽然授权组件被包含在大部分的XMPP IRIs 或URIs中是不现实的, 但是如果适当的话规划允许它被包含.) 所以, 以下XMPP

IRI/URI 表明验证为"guest@https://www.doczj.com/doc/6f11830514.html,":

xmpp://guest@https://www.doczj.com/doc/6f11830514.html,

严重注意这和接下来的XMPP IRI/URI是不相同的, 它标识一个节点

"guest@https://www.doczj.com/doc/6f11830514.html,"而不是通知处理程序来验证它成为一个节点:

xmpp:guest@https://www.doczj.com/doc/6f11830514.html,

类似的, 使用可能的查询组件"?message" 来触发一个接口用于发送一条

消息, 以下XMPP IRI/URI通知处理程序来验证为"guest@https://www.doczj.com/doc/6f11830514.html,"并发送一条消息给"support@https://www.doczj.com/doc/6f11830514.html,":

xmpp://guest@https://www.doczj.com/doc/6f11830514.html,/support@https://www.doczj.com/doc/6f11830514.html,?message

对应的, 以下XMPP IRI/URI通知处理程序验证为它的已配置的缺省帐号并发送一条消息给"support@https://www.doczj.com/doc/6f11830514.html,":

xmpp:support@https://www.doczj.com/doc/6f11830514.html,?message

路径组件

一个XMPP IRI/URI的路径组件标识一个XMPP地址或指明IRI/URI处理最终要让一个XML节将去到的XMPP地址.

例如, 以下XMPP IRI/URI标识一个和XMPP服务器有关的节点:

xmpp:example-node@https://www.doczj.com/doc/6f11830514.html,

以下XMPP IRI/URI标识一个和XMPP服务器有关的节点并带上特定的和那个节点相关的XMPP资源标识符:

xmpp:example-node@https://www.doczj.com/doc/6f11830514.html,/some-resource

在XMPP地址中包含一个节点是可选的, 所以以下XMPP IRI/URI简单的标识了一个XMPP服务器:

xmpp:https://www.doczj.com/doc/6f11830514.html,

=查询组件

有许多可能的用例用于在一个XMPP IRI/URI的查询组件中封装信息; 包含但不仅限于以下例子:

?发送一个XMPP消息节(见XMPP-IM),

?添加一个名册条目(见XMPP-IM),

?发送一个出席信息订阅项(见XMPP-IM),

?调查当前出席信息(见XMPP-IM),

?触发一个远程过程调用(见[XEP-0009]),

?查询另一个实体的身份或能力(见XEP-0030),

?加入一个基于XMPP的文本聊天室(见XEP-0045),

?和一个发行-订阅频道交互(见XEP-0060),

?提供一个SOAP接口(见[XEP-0072]), 以及

?注册另一个实体(见XEP-0077).

许多这些潜在的用例是应用程序特定的并且这类应用的全貌在XMPP的持

续扩张发展中无法预知; 无论如何, Jabber/XMPP开发社区一致同意所有想象中的未来应用可能通过"query type"被封装, 通过一个或多个"键-值

"(key-value)对进行可选的补充(这类似于\[HTML\]中描述的

"application/x-www-form-urlencoded" MIME 类型).

作为例子, 一个XMPP IRI/URI企图启动一个接口用于发送一条消息给

XMPP实体"example-node@https://www.doczj.com/doc/6f11830514.html,", 可以用以下形式表达:

xmpp:example-node@https://www.doczj.com/doc/6f11830514.html,?message

类似的, 一个XMPP IRI/URI企图启动一个接口用于发送一个有特定标题的消息给XMPP实体"example-node@https://www.doczj.com/doc/6f11830514.html,", 可以以下形式表达:

xmpp:example-node@https://www.doczj.com/doc/6f11830514.html,?message;subject=Hello%20World 如果处理程序不理解查询组件或特定的查询类型, 它必须(MUST)忽略查询

组件并把它当成它的IRI/URI部分, 例如,当成

而不是

. 如果处理程序不理解查询组件

的一个特定键, 它必须(MUST)忽略那个键以及与它相关的值.

大家知道, 存在许多种类的XMPP应用(包括现有的和潜在的), 而这些应用

可以定义查询类型和键用于XMPP URIs的查询组件部分. XSF(XMPP

Software Foundation)的XMPP Registrar 功能(见\[XEP-0053\])维护了这些

查询类型的一个注册表和键, 网址在

. 为了帮助确保互操作性,

任何定义在本文中的应用正在使用的格式应该(SHOULD)按照\[XEP-0147\]所定义的流程来提交任何相关的查询类型和键到那个注册表.

碎片标识组件

如[URI]第三章第五节指出, "URI的碎片标识组件允许通过参考主要资源和

附加标识信息来做二级资源的间接标识". 因为这个被XMPP IRI/URI标识的资源不产生任何可用的媒体类型(见[MIME]),所以(在[URI]术语中)一个XMPP 资源不存在任何表述, 在XMPP IRIs/URIs中碎片标识组件的语义是"可能未知的considered unknown 和, 有效地,非强制性的" (ibid.). 典型的XMPP应用可以(MAY)为它们自己的目的来使用碎片标识组件. 无论如何,如果一个处

理程序不理解碎片标识组件或XMPP IRI/URI中特定的碎片标识组件的语法, 它必须(MUST)忽略这个碎片标识组件.

XMPP IRIs/URIs的生成

生成方法

为了把一个XMPP节点标识符,域标识符,和资源标识符格式化成为一个

XMPP IRI, 生成程序必须(MUST)首先确保XMPP地址符合

[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]定义的规则, 包括相应的\[STRINGPREP\]的应用; 然后它必须(MUST)连接以下的东西:

1."xmpp"规划和":"符号

2.可选的(如果在节点标识符之前包含了一个授权组件), 符号"//",

一个格式为node@domain的授权组件, 以及符号"/".

3.可选的(如果XMPP地址包含了一个XMPP "节点标识符"), 一个

Unicode字符集的字符串并遵守"inodeid"规则, 跟在"@"符号后面.

4.一个Unicode字符集的字符串并遵守"ihost"规则.

5.可选的(如果XMPP地址包含一个XMPP "资源标识符"), 符号"/"和

一个Unicode字符集的字符串并遵守"iresid"规则.

6.可选的(如果一个查询组件被包含), 符号"?"和查询组件.

7.可选的(如果一个碎片标识组件被包含), "#"符号和碎片标识组件.

为了把一个resulting IRI格式化成一个XMPP URI, 一个应用必须(MUST)遵

守\[IRI\]第三章第一节定义的映射过程.

生成备注

某些特定的符号被允许存在于一个原生的XMPP地址的节点标识符, 域标

识符, 和资源标识符部分, 但是被XMPP IRI中的"inodeid", "ihost", 和

"iresid"规则禁止. 具体来说, "#"和"?"符号被允许出现在节点标识符, "/",

"?", "#", 和"@"符号被允许在资源标识符, 但是这些符号被用作XMPP IRIs 的分隔符. 另外, " "([US-ASCII]空格)符号被允许在资源标识符中但是在

IRIs中是禁止的. 所以, 当把一个XMPP地址转化为一个XMPP IRI时, 所有前述的符号必须(MUST)被部分编码.

考虑以下的在一个XMPP地址中的nasty节点:

nasty!#$%()*+,-.;=?[\]^_`{|}~node@https://www.doczj.com/doc/6f11830514.html,

那个地址将被转化成以下的XMPP IRI:

xmpp:nasty!%23$%25()*+,-.;=%3F[\]^_`{|}~node@https://www.doczj.com/doc/6f11830514.html,

考虑以下的在一个XMPP地址中的repulsive资源(为了看起来方便分成两

行):

node@https://www.doczj.com/doc/6f11830514.html,

/repulsive !#"$%&'()*+,-./:;<=>?@[\]^_`{|}~resource

那个地址将被转化成以下的XMPP IRI(为了看起来方便分成两行):

xmpp:node@https://www.doczj.com/doc/6f11830514.html,

/repulsive%20!%23"$%25&'()*+,-.%2F:;<=>%3F%40[\]^_`{|}~resource 而且, 事实上被允许在一个XMPP地址中出现的任何[US-ASCII]范围之外的符号, 也在XMPP IRI中出现, 但是URI语法禁止这些符号直接显示并指出这样的符号必须(MUST)被部分编码. 为了确定和一个XMPP IRI相关的URI, 一个应用必须(MUST)遵守定义在\[IRI\]第三章第一节的映射过程.

生成例子

考虑以下XMPP地址:

注意: 字符串"?" 代表Unicode符号LATIN SMALL LETTER R WITH CARON, 并且字符串"?" 代表Unicode符号LATIN SMALL LETTER C WITH CARON, 以下用于[IRI]"XML Notation"来表现无法在ASCII-only中表示的字符串(注

意这些字符串也被展现在它们的字符准备规范表单中stringprep canonical

form). '<'和'>'符号不是地址本身的一部分但为了易于理解而用来设定地址

的结束. 对于那些不能读捷克语的人,这个例子可能被英语化为

"george@czech-lands.example/In Prague".

和以上指定的过程一致, 生成程序将按以下步骤从这个地址生成一个合法

的XMPP IRI:

1.确保XMPP地址符合XMPP-CORE定义的规则, 包括应用相应的

[STRINGPREP] profiles和编码成[UTF-8]字符串.

2.连接以下:

1."xmpp"规划和":"符号.

2.一个"授权组件",如果有的话(本例没有展现).

3.一个Unicode字符串展示XMPP地址, 被以"inodeid","ihost",

和"iresid"规则转换.

4."?"符号被一个"查询组件"跟随, 如果有适当的应用(本例没

有展现).

5."#"符号被一个"碎片标识组件"跟随, 如果有适当的应用(本

例没有展现).

结果是这个XMPP IRI:

为了从前述的IRI生成一个合法的XMPP URI, 应用必须(MUST)遵守定义在\[IRI\]第三章第一节的过程, 结果是以下的URI:

XMPP IRIs/URIs的处理

处理方法

如果一个处理程序被显示为一个XMPP URI而不是一个XMPP IRI, 它必须(MUST)首先按以下定义在\[IRI\]第三章第二节的过程把这个URI转换成为IRI.

为了分解一个XMPP IRI用于和它所标识的实体交互, 一个处理程序必须

(MUST)分解为:

1."xmpp"规划和":"符号.

2.授权组件, 如果有的话(在"//"符号和下一个"/"符号"?"符号,"#"符

号,或IRI的结尾之间的Unicode字符串,).

3.一个展示为XMPP地址的根据"inodeid", "ihost", "iresid"规则转换的

Unicode字符串.

4.可选的查询组件, 如果有的话, 使用"?"符号作为分隔符.

5.可选的碎片标识组件, 如果有的话, 使用"#"符号作为分隔符.

在这一点上, 处理程序必须(MUST)确保结果的XMPP地址遵守

XMPP-CORE定义的规则, 包括应用相应的[STRINGPREP]. 然后处理程序

将(1) 自行完成更多的XMPP处理, 或(2) 调用一个帮助程序来完成XMPP 处理; 这样的XMPP处理很可能包括如下的步骤:

1.如果还未连接到一个XMPP服务器, 作为授权组件中指明的用户连

接或作为已配置的XMPP服务器的已配置用户连接, 通常遵守

[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]定义

的XMPP连接过程.(注意: 处理程序应该(SHOULD)忽略授权组件,如

果它已经用缺省的证书设置所配置.)

2.可选的, 决定预定接收者的种类(换言之,通过\[XEP-0030\]).

3.可选的, 根据预定接收者的种类展示一个适当的界面以及/或查询组

件的内容给用户.

4.生成一个XMPP节把任何用户或应用的输入转换成它们相应的

XMPP数据.

5.通过验证过的服务器连接发送XMPP节用于递送给预定接收者.

处理备注

实施者可能注意到, 在第二章第八节第一小节结尾中描述的"更多的XMPP

处理", 前两步类似HTTP 验证([HTTP-AUTH]), 后三步类似处理mailto:

URIs ([MAILTO]).

本文的第二章第七节第二小节说过, 特定的字符被允许出现在原生的XMPP 地址的节点标识符, 域标识符, 和资源标识符部分, 但被XMPP IRI的

"inodeid", "ihost", 和"iresid"规则禁止. 当处理一个XMPP IRI用来和XMPP 实体交互的时候, 这些部分编码的符合XMPP IRIs的字节必须(MUST)被转

化成在XMPP地址中允许的字符串.

考虑以下一个XMPP IRI中的nasty节点:

xmpp:nasty!%23$%()*+,-.;=%3F[\]^_`{|}~node@https://www.doczj.com/doc/6f11830514.html, 那个IRI将被转化成以下的XMPP address:

nasty!#$%()*+,-.;=?[\]^_`{|}~node@https://www.doczj.com/doc/6f11830514.html,

考虑以下一个XMPP IRI中的repulsive资源(为便于阅读分成两行):

xmpp:node@https://www.doczj.com/doc/6f11830514.html,

/repulsive%20!%23"$%25&'()*+,-.%2F:;<=>%3F%40[\]^_`{|}~resource

那个IRI将被转化成以下的XMPP地址(为便于阅读分成两行):

node@https://www.doczj.com/doc/6f11830514.html,

/repulsive !#"$%&'()*+,-./:;<=>?@[\]^_`{|}~resource

处理例子

考虑从前一个例子中得到的XMPP URI:

为了从那个URI生成一个合法的XMPP IRI, 应用程序必须(MUST)遵守\[IRI\]第三章第二节定义的过程, 结果得到以下IRI:

和以上指明的处理一致, 处理程序将移除"xmpp"规划和":"符号以从XMPP IRI中揭解开XMPP地址, 转换任何按照"inodeid", "ihost", 和"iresid"规则部分编码的字节成为相应的字符串(例如, "%20" 转化成空格符号).

结果是这个XMPP地址:

国际化

因为XMPP地址是[UTF-8]字符串并且因为在XMPP地址中[US-ASCII]范围之外的字节很容易被转化成部分编码的字节, XMPP地址被设计成能够很好地和Internationalized Resource Identifiers ([IRI])配合工作. 某些情况下, 除

了stringprep检查, 语法相关的[US-ASCII]符号(例如, "?")转化, 以及根据

"inodeid", "ihost", 和"iresid"规则把部分编码的字节转化为相应字符(例如, "%20"转成[US-ASCII]空格符), 一个XMPP IRI能通过加上"xmpp"规划和":"

符号的前缀, 直接被构造成一个XMPP地址. 而且, 一个XMPP IRI遵照[IRI]第三章第一节定义的过程可以被转化成URI语法, 一个XMPP URI遵照[IRI]第三章第二节定义的过程可以被转化成IRI, 因而确保应用的互操作性的是能处理URIs但不能处理IRIs.

xmpp URI规划的IANA注册项

和[URI-SCHEMES]一致, 本章提供注册xmpp URI规划需要的信息.

URI规划名

xmpp

状态

permanent

URI规划语法

一个xmpp URI的语法使用\[ABNF\]定义的巴斯科范式定义在下文, 这里

"fragment","host","pct-encoded",以及"unreserved"规则定义在\[URI\]而

DQUOTE定义在\[ABNF\]:

xmppuri = "xmpp" ":" hierxmpp [ "?" querycomp ] [ "#" fragment ]

hierxmpp = authpath / pathxmpp

authpath = "//" authxmpp [ "/" pathxmpp ]

authxmpp = nodeid "@" host

pathxmpp = [ nodeid "@" ] host [ "/" resid ]

nodeid = *( unreserved / pct-encoded / nodeallow )

nodeallow = "!" / "$" / "(" / ")" / "*" / "+" / "," / ";" /

"=" / "[" / "\" / "]" / "^" / "`" / "{" / "|" /

"}"

resid = *( unreserved / pct-encoded / resallow )

resallow = "!" / DQUOTE / "$" / "&" / "'" / "(" / ")" /

"*" / "+" / "," / ":" / ";" / "<" / "=" / ">" /

"[" / "\" / "]" / "^" / "`" / "{" / "|" / "}"

querycomp = querytype [ *pair ]

querytype = *( unreserved / pct-encoded )

pair = ";" key "=" value

key = *( unreserved / pct-encoded )

value = *( unreserved / pct-encoded )

URI规划语义

xmpp URI规划标识了使用XMPP进行本地通信的实体, 并且主要用于标识而非资源定位. 无论如何, 如果一个处理xmpp URI的应用能够用URI标识的XMPP地址进行交互, 它必须(MUST)遵从定义在[RFC4622第二章|XMPP文档列表/XMPP正式RFC标准/RFC4622#XMPP_IRIs_和_URIs的使用]的方法论, 来重构被封装的XMPP地址, 连接到适当的XMPP服务器, 并发送一个适当的XMPP"节"(XML碎片)给XMPP地址. (注意: 没有和xmpp URI规划关联的MIME类型.)

编码事项

除了XMPP URIs, 还将有XMPP国际化资源标识符(IRIs). 在转换一个XMPP 地址成为一个IRI之前(并且遵守[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]), XMPP地址必须由生成程序展现为\[UTF-8\](例如,

把应用内部的UTF-16字符串的地址转换为UTF-8字符串), 并且UTF-8字符串必须加上前缀"xmpp"规划和":"符号. 无论如何, 因为一个XMPP URI

必须仅包含\[US-ASCII\]字符, 一个XMPP IRI的UTF-8字符串必须遵照

RFC 3987定义的过程被转化成URI语法.

使用本URI规划名的应用/协议

xmpp URI规划被设计用于从一个非原生的用户代理和一个XMPP网络之间的接口, 例如web浏览器, 以及其他需要标识XMPP实体成为全URIs或IRIs 的非原生的应用.

互操作性事项

已知还没有和使用xmpp URI规划有关的互操作性问题. 为了帮助确保互操作性, XSF的XMPP Registrar功能维护了一个query类型的注册表,用于那些可能的查询组件和XMPP URIs以及IRIs, 网址在

.

安全性事项

见[RFC4622第五章安全事项|XMPP文档列表/XMPP正式RFC标准

/RFC4622#安全事项].

联系人

Peter Saint-Andre {link:mailto:stpeter@https://www.doczj.com/doc/6f11830514.html,|mailto:stpeter@https://www.doczj.com/doc/6f11830514.html,},

[xmpp:stpeter@https://www.doczj.com/doc/6f11830514.html, xmpp:stpeter@https://www.doczj.com/doc/6f11830514.html,]

作者/变更管理者

这个规划被注册在IETF树下. 同样的, IETF维护变更控制.

参考

XMPP-CORE

IANA事项

本文注册了一个URI规划. 注册项模版能在本文第三章找到. 为了帮助确保互操作性, XSF(XMPP Software Foundation)的XMPP注册功能维护了一个查询组件和健的注册项, 用于XMPP URIs和IRIs的查询组件, 网址在

.

安全事项

从非原生的应用提供一个接口到XMPP服务器产生了新的安全隐患. 在

\[IRI\], \[URI\],和[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准

/RFC3920]中讨论的安全事项适用于XMPP IRIs, 而在[URI],和

[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]中讨论的安全事项适用于XMPP URIs. 遵循\[URI-SCHEMES\]第二章第七节和\[URI\]

第七章, 以下章节定义了具体的安全事项.

可靠性和一致性

假设格式为node@domain.tld的XMPP地址是通过向XMPP服务器注册创建的或由服务器的管理员提供, 这样的地址也可以被取消注册或取消供应. 所以, 标识这样的一个XMPP地址的XMPP IRI/URI可能是不可靠的并且其负责人,帐号拥有者,应用,或递送者是不一致的.

格式为node@domain.tld/resource的XMPP地址甚至可能更短暂(因为一个特定的XMPP资源标识符典型地关联于在一个XMPP服务器上的一个XMPP

客户端的一个特定的,临时的会话); 所以标识这样一个XMPP地址的XMPP IRI/URI可能将是不可靠的以及和相关的同一会话不一致的. 无论如何, 定

义于[XMPP-CORE第十章|XMPP文档列表/XMPP正式RFC标准/RFC3920#服务器处理XML节的规则]的过程有效地排除了任何潜在的由标识XMPP地址的XMPP IRI/URI缺少可靠性和一致性造成的混淆.

典型的格式为domain.tld的XMPP地址是长寿命的XMPP服务器或相关的服务; 当然尽管任何时候服务器或服务的管理员都可能让服务器或服务退役, 一般来讲标识这样的服务或服务器的IRIs/URIs是最可靠的以及和XMPP

IRIs/URIs最一致的.

格式为domain.tld/resource的XMPP地址在XMPP网络还不常见; 无论如何, 标识这样的服务或服务器的IRIs/URIs的可靠性和一致性可能处于格式为

domain.tld的XMPP地址和格式为node@domain.tld的XMPP 地址之间.

恶意的语句

通过在XMPP IRIs/URIs中对端口号的禁止减少了XMPP IRIs/URIs的恶意的构造(因为端口号是用\[DNS-SRV\]查询的, 定义在[XMPP-CORE|XMPP文

档列表/XMPP正式RFC标准/RFC3920]中).

后台转换

因为基本的XMPP协议被定义用来实现消息和出席信息的交换而不是接收文件或类似的系统功能, 据不可靠消息XMPP IRIs/URIs的使用将导致有害的废弃品. 无论如何, 如果一个XMPP协议扩展定义了方法用于信息接收, 它必须(MUST)定义通过访问那个信息进行适当的控制. 另外, XMPP服务器不应该(SHOULD NOT)在本地解析XMPP IRIs/URIs而应该(SHOULD)只接受定义在[XMPP-CORE|XMPP文档列表/XMPP正式RFC标准/RFC3920]中的XML电信协议和任何期望往那里的扩展.

敏感信息

通过web浏览器或其他非原生应用来和XMPP实体交互可能会暴露敏感信息(例如特定XMPP应用协议扩展支持)并且因此使得在原生XMPP网络中不可能发生的攻击在这里成为可能. 在决定XMPP IRIs or URIs中应当展示什么信息的时候必须非常小心.

具体来说, 在公众场合(例如,在网站)声明XMPP IRIs/URIs可能使恶意用户能够从XMPP IRIs/URIs的授权和路径组件收集XMPP地址并且从而发送未经请求的大量通信给那些地址所展示的用户或应用. 应该非常小心地平衡

公开信息的好处和非自愿通信的潜在成本.

为了帮助纺织敏感信息泄露, 密码和其他用户证书被禁止出现在XMPP

IRIs/URIs的授权组件中; 实际上它们不需要, 因为在XMPP中的\[SASL\]

验证使得可以用SASL ANONYMOUS机制, 如果想要的话.

语义攻击

尽管存在无等级的URI规划如\[MAILTO\], 通过联合人类用户可能预期所

有URIs在规划名和":"符号之后包含"//"符号. 无论如何, 在XMPP

IRIs/URIs中, "//"符号处于授权组件之前而不是路径组件之前. 因此,

xmpp://guest@https://www.doczj.com/doc/6f11830514.html, 表示验证为"guest@https://www.doczj.com/doc/6f11830514.html,", 反之

xmpp:guest@https://www.doczj.com/doc/6f11830514.html, 标识节点"guest@https://www.doczj.com/doc/6f11830514.html,". 处理程序必须(MUST)清晰地区分这两种格式, 而用户代理应该(SHOULD)不鼓励人类用户在XMPP

IRIs/URIs中包含"//"符号, 因为使用授权组件被认为只在特定的情景中出现, 不是通常的情景.

欺骗

在一个XMPP IRI中有效包含全范围的Unicode字符的能力可能使得进行特定格式的地址模拟(也成为"欺骗")更为容易. 无论如何, 关于这一点XMPP

IRIs和其他IRIs没有不同, 为了帮助防止来自欺骗地址的攻击, 显示XMPP IRIs给人类用户的应用必须遵守关于地址模拟的最佳实践(例如,

phenomenon被当成"phishing"). 具体的信息, 参考\[IRI\]的安全性事项.

参考

标准参考

[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.

[IRI] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, January 2005.

[TERMS] Bradner, S., "Key words for use in RFCs to Indicate Requirement

Levels", BCP 14, RFC 2119, March 1997.

[URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource

Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.

XMPP-CORE Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Core", RFC 3920, October 2004.

信息参考

[CPIM] Peterson, J., "Common Profile for Instant Messaging (CPIM)", RFC

3860, August 2004.

[CPP] Peterson, J., "Common Profile for Presence (CPP)", RFC 3859, August 2004.

[DNS-SRV] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000.

[HTML] Raggett, D., "HTML 4.0 Specification", W3C REC

REC-html40-19980424, April 1998.

[HTTP-AUTH] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest

Access Authentication", RFC 2617, June 1999.

[IDNA] Faltstrom, P., Hoffman, P., and A. Costello, "Internationalizing Domain

Names in Applications (IDNA)", RFC 3490, March 2003.

[XEP-0009] Adams, D., "Jabber-RPC", JSF JEP 0009, February 2006.

XEP-0030 Hildebrand, J., Millard, P., Eatmon, R., and P. Saint-Andre, "Service Discovery", JSF JEP 0030, January 2006.

XEP-0045 Saint-Andre, P., "Multi-User Chat", JSF JEP 0045, September 2005.

XEP-0053 Saint-Andre, P., "Jabber Registrar", JSF JEP 0053, May 2004. XEP-0060 Millard, P., Saint-Andre, P., and R. Meijer, "Publish-Subscribe", JSF JEP 0060, June 2005.

[XEP-0072] Forno, F. and P. Saint-Andre, "SOAP Over XMPP", JSF JEP 0072, December 2005.

XEP-0077 Saint-Andre, P., "In-Band Registration", JSF JEP 0077, January 2006.

[XEP-0147] Saint-Andre, P., "XMPP IRI/URI Query Components", JSF JEP 0147, March 2006.

[MAILTO] Hoffman, P., Masinter, L., and J. Zawinski, "The mailto URL scheme", RFC 2368, July 1998.

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.

[SASL] Melnikov, A. and K. Zeilenga, "Simple Authentication and Security Layer (SASL)", RFC 4422, June 2006.

[STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of Internationalized Strings ("STRINGPREP")", RFC 3454, December 2002.

[UNICODE] The Unicode Consortium, "The Unicode Standard, Version 3.2.0", 2000. The Unicode Standard, Version 3.2.0 is defined by The Unicode Standard, Version 3.0 (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), as amended by the Unicode Standard Annex #27: Unicode

3.1(https://www.doczj.com/doc/6f11830514.html,/reports/tr27/) and by the Unicode Standard Annex #28: Unicode 3.2 (https://www.doczj.com/doc/6f11830514.html,/reports/tr28/).

[URI-SCHEMES] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and Registration Procedures for New URI Schemes", RFC 4395, February 2006. [US-ASCII] American National Standards Institute, "Coded Character Set - 7-bit American Standard Code for Information Interchange", ANSI X3.4, 1986. [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.

XMPP-IM Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence", RFC 3921, October 2004.

作者地址

Peter Saint-Andre

XMPP Software Foundation

EMail: stpeter@https://www.doczj.com/doc/6f11830514.html,

URI: [xmpp:stpeter@https://www.doczj.com/doc/6f11830514.html, xmpp:stpeter@https://www.doczj.com/doc/6f11830514.html,]

完整版权声明

Copyright (C) The Internet Society (2006).

This document is subject to the rights, licenses and restrictions

contained in BCP 78, and except as set forth therein, the authors

retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE

INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED

WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 知识产权

The IETF takes no position regarding the validity or scope of any

Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be

found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any

assurances of licenses to be made available, or the result of an

attempt made to obtain a general license or permission for the use of

实验一 词法分析器的设计

实验一词法分析器的设计 (2) 1.1 词法分析器的结构和主要任务 (2) 1.1.1 输入输出接口 (2) 1.1.2 条件限制 (2) 1.2 词法分析程序的总体设计 (3) 1.3 词法分析程序的详细设计 (4) 1.4实验步骤 (5) 1.5输入数据 (15) 1.6结果输出 (15)

实验一词法分析器的设计 实验目的:掌握词法分析的概念,设计方法,熟悉高级语言中词法的定义,词法分析程序的编写。 实验要求:在8学时内实现SAMPLE语言的词法分析器,要求用VC窗口界面实现。 实验内容:分为4次实验完成。 1.1 词法分析器的结构和主要任务 1.1.1 输入输出接口 图1-1词法分析器的输入输出界面 词法分析程序的主要任务是从左到右扫描每行源程序,拼成单词,换成统一的内部表示(token)输出,送给语法分析器。具体包括: 1.组织源程序的输入; 2.按规则拼单词,并转换成二元形式; 3.滤掉空白符,跳过注释、换行符及一些无用的符号(如字符常数的引号) 4.进行行列计数,用于指出出错的行列号,并复制出错部分; 5.列表打印源程序; 6.发现并定位词法错误; 7.生成符号表。 token文件和符号表用作语法分析的输入部分。 1.1.2 条件限制 本实验可以作如下假定: (1) 假定SAMPLE语言采用自由格式书写; (2) 可以使用注解,用/*……*/或者{……}标识,但注解不能插在单词内部,注解要在一行内结束,若一行结束,没有遇到注释后面的结束标记,自动认为注释也结束; (3) 一行可以有多个语句,一个语句也可以分布在多行中,单词之间和语句之间可以插入任意空格,单词中间不能有空白符号,单词中间也不能有回车换行符,即单词不能跨行书写; (4) 关键字都是保留字。

中文文本挖掘预处理流程总结

中文文本挖掘预处理流程总结 2017-09-22 12:14 编程派 0 0 阅读 15 作者:刘建平 来源:https://www.doczj.com/doc/6f11830514.html,/pinard/p/6744056.html 在对文本做数据分析时,我们一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文就对中文文本挖掘的预处理流程做一个总结。 1. 中文文本挖掘预处理特点 首先我们看看中文文本挖掘预处理和英文文本挖掘预处理相比的一些特殊点。 首先,中文文本是没有像英文的单词空格那样隔开的,因此不能直接像英文一样可以直接用最简单的空格和标点符号完成分词。所以一般我们需要用分词算法来完成分词,在文本挖掘的分词原理中,我们已经讲到了中文的分词原理,这里就不多说。 第二,中文的编码不是utf8,而是unicode。这样会导致在分词的时候,和英文相比,我们要处理编码的问题。 这两点构成了中文分词相比英文分词的一些不同点,后面我们也会重点讲述这部分的处理。当然,英文分词也有自己的烦恼,这个我们在以后再讲。了解了中文预处理的一些特点后,我们就言归正传,通过实践总结下中文文本挖掘预处理流程。 2. 中文文本挖掘预处理一:数据收集 在文本挖掘之前,我们需要得到文本数据,文本数据的获取方法一般有两种:使用别人做好的语料库和自己用爬虫去在网上去爬自己的语料数据。 对于第一种方法,常用的文本语料库在网上有很多,如果大家只是学习,则可以直接下载下来使用,但如果是某些特殊主题的语料库,比如"机器学习"相关的语料库,则这种方法行不通,需要我们自己用第

对于第二种使用爬虫的方法,开源工具有很多,通用的爬虫我一般使用beautifulsoup。但是我们我们需要某些特殊的语料数据,比如上面提到的"机器学习"相关的语料库,则需要用主题爬虫(也叫聚焦爬虫)来完成。这个我一般使用ache。 ache允许我们用关键字或者一个分类算法来过滤出我们需要的主题语料,比较强大。 3. 中文文本挖掘预处理二:除去数据中非文本部分 这一步主要是针对我们用爬虫收集的语料数据,由于爬下来的内容中有很多html的一些标签,需要去掉。少量的非文本内容的可以直接用Python的正则表达式(re)删除, 复杂的则可以用beautifulsoup来去除。去除掉这些非文本的内容后,我们就可以进行真正的文本预处理了。 4. 中文文本挖掘预处理三:处理中文编码问题 由于Python2不支持unicode的处理,因此我们使用Python2做中文文本预处理时需要遵循的原则是,存储数据都用utf8,读出来进行中文相关处理时,使用GBK之类的中文编码,在下面一节的分词时,我们再用例子说明这个问题。 5. 中文文本挖掘预处理四:中文分词 常用的中文分词软件有很多,个人比较推荐结巴分词。安装也很简单,比如基于Python的,用"pip install jieba"就可以完成。下面我们就用例子来看看如何中文分词。 首先我们准备了两段文本,这两段文本在两个文件中。两段文本的内容分别是nlp test0.txt和 nlp test2.txt: 1. 沙瑞金赞叹易学习的胸怀,是金山的百姓有福,可是这件事对李达康的触动很大。易学习又回忆起他们三人分开的前一晚,大家一起喝酒话别,易 学习被降职到道口县当县长,王大路下海经商,李达康连连赔礼道歉,觉得对不起大家,他最对不起的是王大路,就和易学习一起给王大路凑了5万块钱,王大路自己东挪西撮了5万块,开始下海经商。没想到后来王大路竟然做得风生水起。沙瑞金觉得他们三人,在困难时期还能以沫相助,很不容易。 沙瑞金向毛娅打听他们家在京州的别墅,毛娅笑着说,王大路事业有成之后,要给欧阳菁和她公司的股权,她们没有要,王大路就在京州帝豪园买了三套别墅,可是李达康和易学习都不要,这些房子都在王

中文汉语语法

中文汉语语法 一、语素 语素和语素分类语素是最小的语音语义结合体,是最小的语言单位。语素按音节分类可以分成:单音节 语素,双音节语素,多音节语素。 ①单音节语素如土、人、水、风、子、民、大、海等。 ②双音节语素组成该语素的两个音节合起来才有意思,分开来没有与该语素有关的意义,双音节语素主要包括联绵字、外来词和专用名词。 A.双声,声母相同的联绵字:如琵琶、乒乓、澎湃、鞑靼、尴尬、荆棘、蜘蛛、踯躅、踌躇、仿佛、瓜葛、忐忑、淘汰、饕餮、倜傥、含糊、慷慨、叮当、蹊跷、玲珑、犹豫等。 B.叠韵,韵母相同的联绵字:如从容、葱茏、葫芦、糊涂、匍匐、灿烂、蜿蜒、苍茫、朦胧、苍莽、邋遢、罗嗦、怂恿、螳螂、桫椤、倥侗、蜻蜓、轰隆、当啷、惝恍、魍魉、缥缈、飘渺、耷拉等。 C.非双声叠韵联绵字:如蜈蚣、蓊郁、珊瑚、疙瘩、蚯蚓、惺忪、铃铛、奚落、褡裢、茉莉、蚂螂、窟窿、伉俪、蝴蝶、笊篱、蹦达、蟪蛄、狡狯、狡猾、蛤蚧、蛤蜊、牡丹、磅礴、提溜等。 D.外来词,由汉语以外的其他语种音译过来的词语。如干部、涤纶、甲克(夹克)、的士、巴士、尼龙、吉普、坦克、芭蕾、哒爹等。 E.专用名词,主要是地名、人和事物名称。如纽约、巴黎、北京、苏轼、李白、孔子、萝卜、菠菜、番茄、红薯等。 ③多音节语素 主要是拟声词、专用名词和音译外来词。如:喜马拉雅、珠穆朗玛、安迪斯、法兰克福、奥林匹克、白兰地、凡士林、噼里啪啦、淅淅沥沥、马克思主义、中华人民共和国。 二、词 词是由语素组成的最小的造句单位。有两种分类方式,1、按构成方式分单纯词和合成词;2、按词性分为实词和虚词。 从构成方式来看,可以分成: ①单纯词:由一个语素组成的词,自由的单音节语素和所有的双音节、多音节语素都可以组成单纯词。如:山、水、天、地、人、有、土、红、凑;仿佛、苍茫、蜈蚣、琉璃、参差、蹉跎;敌敌畏、阿司匹林、萨克斯、麦克风等。 ②合成词:由两个或两个以上的语素组成的词。 从词性来看,可以分成:实词共6个有实际意义的词,包括: (1)名词:表示人或事物名称的词。 有人物名词:如学生、群众、老头、妇女、同志、叔叔、维吾尔族、酒鬼等; 有事物名词:如笔、杉木、蜗牛、猎豹、奥托、棒球、战斗机、冥王星、思想、中学、物理、过程等; 有时间名词:如上午、过去、将来、午夜、三更、甲戊、世纪等; 有方位名词:如东南、上面、前方、内部、中间等。 (2)动词:表示动作行为及发展变化的词。 有行为动词:如跑、唱、喝、敲、吆喝、盯、踢、闻、听、摸; 有发展动词:如生长、枯萎、发芽、结果、产卵; 有心理动词:如喜欢、恨、气愤、觉得、思考、厌恶; 有存现动词:如消失、显现、有、丢失、幻灭; 有使令动词:如使、让、令、禁止、勒令;

词法分析小结

词法分析小结 词法分析是编译器工作的第一阶段,它的工作就是从输入(源代码)中取得token,以作为parser(语法分析)的输入,一般在词法分析阶段都会把一些无用的空白字符(whitespace,即空格、tab和换行)以及注释剔除,以降低下一步分析的复杂度,词法分析器一般会提供一个gettoken()这样的方法,parser可以在做语法分析时调用词法分析器的这个方法来得到下一个token,所以词法分析器并不是一次性遍历所有源代码,而是采取这种on-demand的方式:只在parser需要时才工作,并且每次只取一个token。 token和lexeme 首先,token不等于lexeme。token和lexeme的关系就类似于面向对象语言中“类”和“实例”(或“对象”)之间的关系,这个用中文不知该如何解释才好,比如语言中的变量a和b,它们都属于同一种token:identifier,而a的lexeme是”a”,b则是”b”,而每个关键字都是一种token。token可以附带有一个值属性,例如变量a,当调用词法分析器的gettoken()时,会返回一个identifier类型的token,这个token带有一个属性“a”,属性可以是多样的,例如表示数字的token

可以带有一个表示数字值的属性,它是整型的。 如下代码: intage=23; intcount=50; 可以依次提取出8个token:int(值为”int”),id(值为”age”),assign(值为”=”),number(值为整型数值23),int(值为”int”),id(值为”count”),assign(值为”=”),number(值为50) 正则表达式 正则表达式可以用来描述字符串模式,例如我们可以用digit+来表示number的token,其中digit表示单个数字(这里说正则表达式并不完全和实现的正则引擎所识别的正则表达式等价,这里只是为了描述问题而已)。 然而像c语言的的多行注释,用正则表达式来描述就比较麻烦,此时更倾向于直接用有穷自动机(finiteautomaton)来描述,因为用它来描述非常直观且很容易。

文本素材处理

第2章文本素材处理 学习指南:本章介绍文本素材采集、编辑、加工处理的有关知识。主要内容有:文本素材的基础知识,文本素材的采集与处理方法,文本素材创作实例。学习本章,要求掌握以下知识: 掌握文本在计算机中的表示方法,了解文本素材的主要特点; 熟悉常见的文本文件的格式,并能正确地选择文本文件的存储格式; 了解常用的文本素材采集方式,熟悉扫描仪+OCR文字识别输入方法; 了解常用的文字处理软件,掌握Word文字处理的方法; 会用相关的文字处理软件制作多媒体作品中需要的文本素材。 在多媒体作品中,文本是最基本也是最常用的素材。一些说明、介绍、作品中的文字资料都会用到文本,作为多媒体系统的组成元素,它和其它素材同样重要。文本素材处理包含文本的采集、录入、编辑等加工处理,本章将介绍文本素材处理的相关知识。 2.1 文本素材概述 文本是人们早已熟知的信息表示方式,如一篇文章、一段程序、一个文件都可用文本描述。它通常以字、句子、段落、节、章为单位,记录自然现象、表述思想感情、传达某种信息。人们在阅读时,通常是一字一句、一行一页顺序地浏览。 文本是文字、字母、数字和各种功能符号的集合。在现实生活中,人们对事情的讲述、逻辑的推理、数学公式的表述等都主要用文字和数字来准确的表达。在多媒体应用系统中,虽然有图形、声音、视频影像等多种媒体形式,但是对于一些复杂而抽象的事件,文本表达却有它不可替代的独到之处。 2.1.2 文本素材基础知识 在多媒体应用系统中,文本作为重要的基本素材而被广泛应用,它具有信息表达清楚、计算机处理方便、存储容易、传输快捷等优势。具体来说: (1)编码形式简单 在计算机中,西文字符最常用的编码是ASCII码,即American Standard Code For Information Interchange(美国信息交换标准代码)。它用7位二进制数进行编码,可以表示27即128个字符,其中包括数字字符0~9、大小写英文字符、运算符号、标点符号、标识符号和一些控制符号。这些字符种类大致能够满足各种计算机语言、西方文字、常见命令的需要。一个ASCII码字符在内存中占一个字节。 汉字字符在计算机中也是以编码形式处理的,汉字输入用输入编码,汉字存储用机内码,汉字输出用字型码。在计算机中存储时,一个汉字占2个字节。 (2)易于获取,存储、处理和传输容易 多媒体计算机系统中,文本资料可以用多种方式获取,可采用多种输入编码录入,还

基于多知识源的中文词法分析系统

第30卷第1期计算机学报v01.30No.12007年1月CHINESEJOURNAL0FCOMPUTERSJan.2007 基于多知识源的中文词法分析系统 姜维王晓龙关毅赵健 (哈尔滨工业大学计算机科学与技术学院哈尔滨150001) 摘要汉语词法分析是中文自然语言处理的首要任务.文中深入研究中文分词、词性标注、命名实体识别所面临的问题及相互之间的协作关系,并阐述了一个基于混合语言模型构建的实用汉语词法分析系统.该系统采用了多种语言模型,有针对性地处理词法分析所面临的各个问题.其中分词系统参加了2005年第二届国际汉语分词评测,在微软亚洲研究院、北京大学语料库开放测试中,分别获得F量度为97.2%与96.7%.而在北京大学标注的《人民日报》语料库的开放评测中,词性标注获得96.1%的精确率,命名实体识别获得的F量度值为88.6%. 关键词词法分析;汉语分词;词性标注;命名实体识别;语言模型 中图法分类号TP391 ResearchonChineseLexicalAnalysisSystemby FusingMultipleKnowledgeSources JIANGWeiWANGXiao—LongGUANYiZHAOJian (Sc^oozo,Com户“ferSciPncBn咒d:I。≥c^720fogy,Har6f雄j知s£it“抛o,T奢c^竹。zogy,H口r6in150001) AbstractChineselexicalanalysisisthefoundationtaskformostChinesenaturallanguagepro—ces8ing,Inthispaper,wordsegmentation,POStagging,namedentityrecognitionandtheirrela—tion-arewelldiscussed.IⅥoreover,apragmaticlexicalanalysissystembasedonmixedlanguagemodelsispresented,whichadoptsmanymodels,suchas以一gram,hiddenIⅥarkovmodel,maxi—mumentropymodel,supportvectormachineandconditionalrandomfields,theyhavegoodper~formanceinthespecialsub—tasks.TheWordSegmenterparticipatedintheSecondInternationalChineseWordSegmentationBakeoffin2005,andachieved97.2%and96.7%intermsofF~measureinMSRandPKUopentestrespectively.WhilethePOSta套gingandnamedentityrecog~nitionmodulesachieved96.1%inprecisionand88.6%inF—measurerespectivelyinopentestwiththecorpusthatcamefromsiX-monthcorporaofChinesePeoples’Daily. KeywordslexicalanaIysis;Chinesewordsegmentation;part—of—speechtagging;namedentityrecognition;languagemodel 引 词法分析主要包括分词、词性标注与命名实体识别三项子任务,它是句法分析与语义分析的基础,其性能将直接影响到后续应用,如机器翻译、信息抽取、问答系统的性能.本文以国家自然科学基金重点项目“问答式信息检索的理论与方法”为背景,全面 收稿日期:2005—11一15;修改稿收到日期:2006一06一06.本课题得到国家自然科学基金重点项目“问答式信息检索的理论与方法”(60435020)及国家自然科学基金(60504021)资助.姜维,男,1978年生,博士研究生,研究方向为自然语言处理、词法分析、信息抽取.Bmail:jwSeaBreeze@hit.edu.cn.王晓龙,男,1955年生,教授,博士生导师,主要研究领域为人工智能、自然语言处理.关毅,男,1970年生,博士,副教授,研究方向为问答系统、web挖掘.赵健,男,1975年生,博士,研究方向为中文命名实体识别、信息抽取.吉目  万方数据

编译原理 简单样本语言的词法分析器

昆明理工大学信息工程与自动化学院学生实验报告 (2012 —2013 学年第 1 学期) 课程名称:编译原理开课实验室:信自楼44 年月日 一、实验目的及内容 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验原理及基本技术路线图(方框原理图或程序流程图) 对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 三、所用仪器、材料(设备名称、型号、规格等或使用软件) W INDOWS下的VISUAL C++6.0; 四、实验方法、步骤(或:程序代码或操作过程) #include #include using namespace std;

#define MAX 22 char ch =' '; string key[15]={"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat"}; int Iskey(string c){ //关键字判断 int i; for(i=0;i='a'))||((c<='Z')&&(c>='A'))) return 1; else return 0; } int IsDigit(char c){ //判断是否为数字 if(c>='0'&&c<='9') return 1; else return 0; } void analyse(FILE *fpin){ string arr=""; while((ch=fgetc(fpin))!=EOF) { arr=""; if(ch==' '||ch=='\t'||ch=='\n'){} else if(IsLetter(ch)){ while(IsLetter(ch)||IsDigit(ch)) { if((ch<='Z')&&(ch>='A')) ch=ch+32; arr=arr+ch; ch=fgetc(fpin); } fseek(fpin,-1L,SEEK_CUR); if (Iskey(arr)){cout<

如何做好文字校对工作

为保证校对工作的有序进行,减少出版印刷错误,提高校对质量,应从以下几个方面把握:―、明确校对目的 校对是保证学报质量的重要环节,是对编辑工作的继续和补充。校对必须高度负责,认 真细致,树立严谨周密,一丝不苟的作风。 1.根据原稿,核对并清除校样上的差错。 2?改正在政治思想上和科学性上遗留的不准确的提法和词句。 3?清除语法修辞上遗留的差错和毛病。 4 ?清除错别字。 5.解决和消除任何疑点。 二、把握校对标准 1 ?编辑负责校对、印刷工作的组织和实施,及时送取稿件和校样,做好与印刷厂的业 务联系。 2 ?校对以原稿为准,不得在校样上随意增补、删减,发现原稿错误及编辑处理的疏漏 和失误做出标示,由编辑对原稿、校样予以处理。若作者提出修改时,要尽量坚持不动版面、不动字数的原则,减少改版的麻烦。 3 ?准确使用校对符号,消灭错字,补齐遗漏,纠正版式错误,严格执行三校加点校制 度,保证期刊质量。 4-校对以对校、折校为主,根据实际情况,部分稿件由作者校对一次,校后由编辑对 格式、质量复校一次。 5 ?校对时要注意版面的规范、美观,排版的合理。校对差错率要保持在万分之二以下。

三、遵循校对的程序,交叉三校制 1.—校(作者、责任编辑各校一次):侧重对原稿校对,力求校样与原稿的一致,纠 正版式错误,对有疑问处作出标示。校后通读一遍。要求作者不能对原稿作大的改动。 2 ?二校(责任编辑、执行编辑各校一次):校对时要确定一校校出错误已改正,纠正版式错误,并对文稿中的疑问予以处理,填补遗缺,统一体例。 3 ?三校(执行编辑校一次):校对时要确定二校校出错误已改正,对校样进行综合检查,清理差错,确定版面格式。 4 .点校:对三校校出错误予以核对,并对文章、版式作最后通校,确保清样无差错。 5 .校对签名。校对者应在每次校样上签名,并标明校次,以防差错。 6 ?责任编辑甩开原稿和三校样,对清样进行阅读,寻找差错。在读样后,进行总体扫描,检查有无错字、漏字、表格与插图是否合乎规范,字体、字号使用是否正确等。 四、明确校对内容 1 ?检查多、漏、错文字及标点、符号错误;核对标题、署名,文中人名、地名、数字、公式。 2 ?检查版面、格式,图表位置及表题、图题,字体、字号、字距和行距。 3 .检查标题位置、层次及转行,注释、参考文献及序号,核对中英文目录及页码与文章的一致。 4 ?检查目录及对应的页码、刊眉、页码顺序、版权,封面、封二、封三、封底的文字、刊号、年月期号。

中文语法的基本知识

中文语法的基本知识 一.语素和语素分类: 语素是最小的语音语义结合体,是最小的语言单位。语素按音节分类可以分成: ①单音节语素:如土、人、水、风、子、民、大、海等。 ②双音节语素,组成该语素的两个音节合起来才有意思,分开来没有与该语素有关的意义,双音节语素主要包括联绵字、外来词和专用名词。 A.双声,声母相同的联绵字:如琵琶、乒乓、湃、鞑靼、尴尬、荆棘、蜘蛛、踯躅、踌躇、仿佛、瓜葛、忐忑、淘汰、饕餮、倜傥、含糊、慷慨、叮当、蹊跷、玲珑、犹豫等。 B.叠韵,韵母相同的联绵字:如从容、葱茏、葫芦、糊涂、匍匐、灿烂、蜿蜒、苍茫、朦胧、苍莽、邋遢、罗嗦、怂恿、螳螂、桫椤、倥侗、蜻蜓、轰隆、当啷、惝恍、魍魉、缥缈、飘渺、耷拉等。 C.非双声叠韵联绵字:如蜈蚣、蓊郁、珊瑚、疙瘩、蚯蚓、惺忪、铃铛、奚落、褡裢、茉莉、蚂螂、窟窿、伉俪、蝴蝶、笊篱、蹦达、蟪蛄、狡狯、狡猾、蛤蚧、蛤蜊、牡丹、磅礴、提溜等。

D.外来词,由汉语以外的其他语种音译过来的词语。如干部、涤纶、甲克(夹克)、的士、巴士、尼龙、吉普、坦克、芭蕾、哒爹等。 E.专用名词,主要是地名、人和事物名称。如纽约、巴黎、北京、苏轼、李白、孔子、萝卜、菠菜、番茄、红薯等。 ③多音节语素,主要是拟声词、专用名词和音译外来词。如:喜马拉雅、珠穆朗玛、安迪斯、法兰克福、奥林匹克、白兰地、凡士林、噼里啪啦、淅淅沥沥、马克思主义、中华人民共和国 词 二.词和词的分类。 词是由语素组成的最小的造句单位。 (“单位”是名词类。) 从构成方式来看,可以分成: ①单纯词:由一个语素组成的词,自由的单音节语素和所有的双音节、多音节语素都可以组成单纯词。如:山、水、天、地、人、有、土、红、凑;仿佛、苍茫、蜈蚣、琉璃、参差、蹉跎;敌敌畏、阿司匹林、萨克斯、麦克风等。 ②合成词:由两个或两个以上的语素组成的词。

词法分析器实验报告

词法分析器实验报告 词法分析器设计 一、实验目的: 对C语言的一个子集设计并实现一个简单的词法分析器,掌握利用状 态转换图设计词法分析器的基本方法。利用该词法分析器完成对源程 序字符串的词法分析。输出形式是源程序的单词符号二元式的代码, 并保存到文件中。 二、实验内容: 1. 设计原理 词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。 理论基础:有限自动机、正规文法、正规式 词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序 2. 词法分析器的功能和输出形式 功能:输入源程序、输出单词符号 程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符 3. 输出的单词符号的表示形式: 单词种别用整数编码,关键字一字一种,标识符统归为一种,常数一种,各种符号各一种。 4. 词法分析器的结构 单词符号 5. 状态转换图实现

三、程序设计 1.总体模块设计 /*用来存储目标文件名*/ string file_name; /*提取文本文件中的信息。*/ string GetText(); /*获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。*/ string GetWord(string str,int i,int& j); /*这个函数用来除去字符串中连续的空格和换行 int DeleteNull(string str,int i); /*判断i当前所指的字符是否为一个分界符,是的话返回真,反之假*/ bool IsBoundary(string str,int i); /*判断i当前所指的字符是否为一个运算符,是的话返回真,反之假*/ bool IsOperation(string str,int i);

中文文本预处理

1中文文本预处理 1.1分词软件调用(中科院分词系统) 1.1.1软件下载:https://www.doczj.com/doc/6f11830514.html,/ 1.1.2软件包目录&介绍 | Readme.txt-------------------------->介绍 | +---bin | +---DocExtractor----------->文档篇章语义抽取系统 | | DocExtractor.bat-->批处理,可以针对指定的文件夹进行语义抽取 | | DocExtractor.dll-->支撑的动态链接库,基于分词基础上 | | DocExtractorSample.exe-->应用程序 | | | \---ICTCLAS2015----------->分词系统 | ICTCLAS-tools.exe-->分词的支撑工具,可用于测试,本处主要用来做用户词典导入 | importuserdict.bat-->可将用户词典自动导入到系统内 | NLPIR.dll-->Win32下的支撑动态链接库,其他环境的库,可以访问lib对应环境的库文件 | NLPIR.lib | NLPIR_WinDemo.exe-->Win32下的演示程序,在Win8 32位下编译而成,部分环境可能不支持,或者显示异常 | userdic.txt-->用户词典,用户可以自行编辑 | +---Data-->系统核心词库 | \---English-->英文处理的支持知识库,如果不需要英文处理的功能,可以不加载本库。 | +---doc-->相关文档支持 | ICTPOS3.0.doc-->我们的词性标注集说明 | NLPIR-ICTCLAS2015分词系统开发手册.pdf-->开发使用手册 | +---include-->系统头文件 | NLPIR.h | +---lib-->不同环境下的支撑库,每一种库,同时支持C/C++/C#/Java库。其他小众化的环境支持,请联系我们 | +---linux32-->Linux 32bit操作系统下的支持库 | | libNLPIR.so | | | +---linux64-->Linux 64bit操作系统下的支持库 | | libNLPIR.so | | Readme.txt | |

(完整版)汉语语法基础知识

汉语语法基础知识 词类和词性 (一)知识概述 词类是指词在语法上的分类,也就是把汉语里的所有词,根据它们的词汇意义和语法特点进行分类,这样得出的结果就是词类。现代汉语教学系统把词分为十二类: 实词可以分为: 1、名词:表示人或事物名称的词叫名词。 (1)表示人:老师、学生、作家、工人、鲁迅 (2)具体事物:天、地、花、草、天空、海洋 (3)抽象概念:方法、科学、法律、事业 (4)处所:北京、青岛、黄河、长江、三味书屋 (5)方位:东、西、南、北、上、下、前、后、左、右、里、外、内、中、间、旁、以前、以南、之下、之后、东边、西面、里头。 (6)时间:早晨、正午、晚上、半夜、上午、白天、夏天、立秋、今天、星期二 2、动词:表示动作行为、发展变化、心理活动等意义的词叫动词。 (1) 动作行为:穿、跳、走、纪念、朗诵。 (2) 存在变化:有、增加、缩小、扩大、发生。 (3) 心理活动:想、懊悔、喜欢、担心。 (4) 可能意愿:应该、应当、能够、愿意、必须、敢、肯、会、能、要、可以。 (5) 趋向:上、下、来、去、上去、下去、进来、进去、起来、上来。 (6) 判断:是、就是、正是 (7) 使令:使、让、派、请、叫、要求、命令、推举、允许、鼓动、鼓励。 3、形容词:表示事物的形状、性质或状态的词叫形容词。 (1)形状:大、小、高、圆、长、短、高大、肥胖。 (2)性质:好、坏、镇定、勇敢、乐观、伟大、优秀 (3)状态:愉快、慌张、急躁、迅速、朦胧、桔红 4、数词:表示数目的词叫数词。 (1)基数(确数)一、二、千、万、亿 (2)序数:第一、三叔、三年级、六楼、初五、老三。 (3)分数:三分之一、九成 (4)倍数:三倍、十倍、翻一番 (5)概数:十几概数、十余人、三十多岁、两三个、成千上万、很多人 5、量词:表示事物单位或行为、动作单位的词叫量词。 无量(表示人或事物单位的词) (1)个体:个、位、尺、只、台、条 (2)集体:批、帮、群、套、双、副、对、类 (3)不定量:些、点 (4)度量衡:丈、尺、里、亩 动量(表示动作行为的单位)次、回、下、趟、遍、阵、场、遭、焉 动量词也可以借用跟动作有关的事物的名词。如:画一笔、切一刀、工作一星期、学习一下午、踢一脚、送一车 说明:在现代汉语中,数词本身只表示抽象的数的概念,在计算事物或动作的数量时,数词的后面必须加上量词。数词跟量词连用就是数量词。 6、代词:具有指示、代替作用的词叫代词。代词可分为人称代词、指示代词、疑问代词。 ⑴人称代词:代替人或事物的名称的代词。

编译原理实验报告一 简单样本语言的词法分析器

理工大学信息工程与自动化学院学生实验报告 (2012 —2013学年第一学期) 一、实验目的及容 编译技术是理论与实践并重的课程,而其实验课要综合运用所学的多门课程的容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。 调试并完成一个词法分析程序,加深对词法分析原理的理解。 二、实验原理及基本技术路线图(框原理图或程序流程图) 1、待分析的简单语言的词法 (1)关键字: begin if then while do end 所有关键字都是小写。 (2)运算符和界符: := + –* / < <= <> > >= = ; ( ) #

(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letter| digit)* NUM=digit digit * (4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码 3、词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 二、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC以及VISUAL C++6.0软件。 三、实验法、步骤(或:程序代码或操作过程) (1)程序代码: #include #include #include char prog[80],token[8]; char ch; int syn,p,m=0,n,row,sum=0; char *rwtab[6]={"begin","if","then","while","do","end"}; void scaner() { for(n=0;n<8;n++) token[n]=NULL; ch=prog[p++]; while(ch==' ') { ch=prog[p]; p++; } if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { m=0; while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { token[m++]=ch; ch=prog[p++]; } token[m++]='\0'; p--; syn=10; for(n=0;n<6;n++)

词法分析

实验二:词法分析 一、实验目的:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词, 即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及 Error”,然后跳过错误部分继续显示) 二、估计实验时间:1.课余准备15小时;2.上机二次4小时;3.完成实验报告5小时。 三、实验过程和指导: (一)准备:1.阅读课本有关章节,花一周时间明确语言的语法,写出基本保留字、标识符、 常数、运算符、分隔符和程序例。2.初步编制好程序。3.准备好多组测试数据。 (二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。 (三)程序要求:Array程序输入/输出示例: 如源程序为C语言。输入如下一段: main() { int a,b; a = 10; b = a + 20; } 要求输出如右图。 要求: 识别保留字:if、int、for、while、do、return、break、 其他的都识别为标识符;

常数为无符号整形数; 运算符包括:+、-、*、/、=、>、<、>=、<=、!= 分隔符包括:,、;、{、}、(、) 程序思路(仅供参考): 0.定义部分:定义常量、变量、数据结构。 1.初始化:从文件将源程序全部输入到字符缓冲区中。 2.取单词前:去掉多余空白。 3.取单词后:去掉多余空白(可选,看着办)。 4.取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析类型。(关键是如何判断取单词结束?取到的单词是什么类型的单词?) 5.显示结果。 (四)练习该实验的目的和思路: 程序开始变得复杂起来,可能是大家以前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练习。程序规模大概为200行。本实验和以后的实验相关。通过练习,掌握对字符进行灵活处理的方法。 (五)为了能设计好程序,主意以下事情: 1.模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。 2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。 3.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。 四、上交: 1.程序源代码;

中文语法词性和句式

中文语法 语法是语言组合的规律和法则。汉语语法分析可以按由小到大分为五级单位,即语素(字)、词、短语、句子、句群。 二、为什么要学习语法 为了掌握语言的组合规律、规则,提高理解语言的、运用语言的能力。 第一节、词类 一、实词和虚词 词是由语素(字)构成的。词按语法功能和语法意义可分为实词和虚词。 实词是有实在意义的词,它可分为:名词、动词、形容词、数词、量词、代词等六类。 虚词是没有实在意义的词,它可为副词、介词、连词、助词、叹词、拟声词等六类。 二、名词 名词是表示人或事物名称的词。 1、普通名词:牛、人、学生、云、飞机、菜 2、专有名词:中国、黄河、泰山、毛泽东 3、抽象名词:精神、文化、人生、思想 4、时间名词:现在、去年、明天、星期一 5、方位名词:上、前、东、夏天、以上、之南、之东、一旁、底下、跟前、当中、里外、左右、上下 三、动词 动词是表示动作、行为、存在、变化、心理活动等意义的词。 1、表示动作行为:看、听、笑、唱、跳、飞、劳动、研究、认识、安慰、团结、休息

2、表示心理活动:爱、恨、怕、想、希望、喜欢、回忆、思考、理解、厌恶 3、表示发展变化:增加、扩大、提高、降低 4、表示存在、出现、消失:存在、出现、消失、死亡、停、丢 5、表示使令:叫、让、派、请、使、要求、命令、禁止、 6、表示可能、意愿——能愿动词:能、能够、会、可以、可能、应该、应当、必须、要、愿意、需要、肯、敢、情愿 7、表示动作趋向——趋向动词:上、下、来去、进、出、过、起来、回去 8、表示判断——判断词:是 四、形容词 形容词是表示人、事物的形状、性质或者动作、行为、发展、变化状态的词。 1、表示形状:大、小、圆、粗、滑、平、高、低、宽、窄、肥、胖、美、丑、温柔、平缓、笔直 2、表示性质:好、坏、冷、热、酸、甜、苦、软、聪明、朴素、老实、正确、勇敢、特殊 3、表示状态:快、忙、急、稳、轻松、高兴 五、数词 数词是表示数目的词。数词可分为基数、序数、分数、小数、倍数和概数。 1、基数:一、二、三、……十、百、千、万、亿 2、序数:第一…头一回、初一…老大…老幺 3、分数、25?、几分、几成 4、小数:0?2 5、12?34 5、倍数:一倍… 6、概数:几、两、来、多、把、左右、上下、以上、以下、成千、上万、近亿、三四个、两三年

简单词法分析器

简单词法分析器 1、将源文件中的单词识别出来,以用'$'为首的标识符标记识别出的单词 2、单词符号及内部表示如表: 单词符号种别编码助记符内码值 DIM 1 $DOM — IF 2 $IF — DO 3 $DO — STOP 4 $STOP — END 5 $END — 标识符 6 $ID 内部字符串 常数7 $INT 标准二进制形式= 8 $ASSIGN — + 9 $PLUS — * 10 $STAR — ** 11 $POWER — ; 12 $SEMICOLON — { 13 $LBRACE — } 14 $RBRACE — /* * 词法分析:将源文件中的单词符号一一识别 * 并将其与助记符保存到文本文件 */ #include "iostream" #include "string" using namespace std; //reserve保留字 string reserve[5] = {"DIM","IF","DO","STOP","END"}; //结构体数组,保存已识别的单词 struct table { string str; string name; }table[400]; int count = 0; //判断是否为保留字

bool Reserve(string str) { bool flag = false; for(int i=0; i>filename; if((fp = fopen(filename,"r")) == NULL) { cout<<"file not found"<

第三章 中文文字处理软件Word

第三章中文文字处理软件Word 2000 一、判断题 1.在Word中,必须先选定操作的内容,然后才能对选定的对象进行操作。( ) 2.Word文档中的工具栏可由用户根据需要显示或隐藏。( ) 3.在“打印预览”窗口中,通过浏览文档可以观察文章段落在页面上的整体布局,但不能对其进行编辑。( ) 4.在Word文档中,通常先选定操作对象,再右击它可弹出快捷菜单。( ) 5.把选定的文本删除掉,可以按Delete键。( ) 6.剪切板上的内容可粘贴到文挡中的多个位置。( ) 7.Word是一种所见即所得的文字处理软件。( ) 8.保存一个新建的Word文档时,默认的文档扩展名是doc。( ) 9.Word 2000软件既可以用于文字处理,也可以进行表格处理,因而又称为电子表格软件。() 10.Word只用于文字处理,在文字中无法插入图形或表格。( ) 11.用Word进行文字编辑有多种方法,其中包括使用剪贴板。( ) 12.Word的视图工具栏总是出现在文档编辑区的左下角,不能任意移动它的位置。( ) 13.在编辑一个旧文档的过程中单击“保存”按钮,会弹出“保

存”对话框,设置文件的位置、文件名和扩展名。( ) 14.在使用Word的“查找”功能查找文档中的字串时,可以使用通配符。( ) 15.在Word的替换对话框中,可以同时替换所有找到的字串。( ) 16.设置字符的字号时,当要设置的字号列表中没有时,可以在“字号”组合框中输入字号数字。( ) 17.在Word的字符格式化中,可以把选定的文本设置成上标或下标的效果。( ) 18.新建一个Word文档可以从“文件”菜单中选择“新建”,也可以点击“常用”工具栏上的“新建”按钮。( ) 19.如果所选定的文本中包含了英文字体,而且设置字体格式时都设置为中文字体,则文本中的英文字符将显示不出来。( ) 20.文档的页面设置一般不是只指当前页面,而是指整个文档的所有页面。( ) 21.在页面上插入页码,可以放在页面的页眉位置或页脚位置。( ) 22.在Word页面设置中可以设置装订线的位置。( ) 23.在Word中不但可以编辑文字,还可以插入图形,编辑表格,直到打印出文稿。( ) 24.段落缩进的距离是从打印纸的纸边到文字的距离。( ) 25.段落的首行缩进就是指段落的第一行向里缩进一定的距离。

相关主题
文本预览
相关文档 最新文档