用于处理代码消息的方法、装置、设备和可读存储介质与流程

文档序号:17831639发布日期:2019-06-05 23:06阅读:153来源:国知局
用于处理代码消息的方法、装置、设备和可读存储介质与流程

本公开涉及消息处理领域,具体的涉及一种用于处理代码消息的方法、装置、设备和可读存储介质。



背景技术:

用户可以在例如手机或者计算机等的通信设备中分享代码消息,以进行讨论、研究。目前,通常以文本消息的格式传输所述代码消息,例如,用户可以将一段代码消息从一个用户终端发送给其他的用户终端,接收到的代码消息也仅具有文本消息的格式,缺少排版和格式化等的处理,使得显示的代码消息与编程软件中的代码在显示的视觉效果上存在差异,不利于用户观看查阅,影响了用户体验。



技术实现要素:

为此,本公开提供了一种用于处理代码消息的方法、装置、设备和可读存储介质。

根据本公开的一方面,提供了一种用于处理代码消息的方法,包括:接收包括代码字符序列的代码消息;确定至少一部分的代码字符序列的代码含义;根据所述代码含义确定所述至少一部分的代码字符序列的显示格式;和按照所述显示格式来显示所述至少一部分的代码字符序列。

根据本公开实施例,所述接收包括代码字符序列的代码消息包括:从输入设备接收所述代码消息,所述方法还包括获取该代码消息的编程语言。

根据本公开实施例,所述接收包括代码字符序列的代码消息包括:通过网络接收所述代码消息,所述方法还包括通过网络接收关于该代码消息的编程语言的消息。

根据本公开实施例,确定至少一部分的代码字符序列的代码含义包括:根据所述编程语言的语法规则来对代码字符序列进行匹配,以确定至少一部分的代码字符序列的代码含义。

根据本公开实施例,根据所述编程语言的语法规则来对代码字符序列进行匹配包括:按照根据语法规则定义的编程规则和编程模式来对所述至少一部分的代码字符序列进行匹配,以确定所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码含义。

根据本公开实施例,根据编程语言的语法规则来对代码字符序列进行匹配还包括:对于已经通过匹配确定其编程模式的已匹配代码字符序列,按照对于该编程模式定义的子编程规则和子编程模式来对所述已匹配代码字符序列中的部分代码字符序列进行进一步的匹配。

根据本公开实施例,根据编程语言的语法规则来对代码字符序列进行匹配还包括:对于未能通过匹配确定其代码含义的代码字符序列,将其代码含义确定为未匹配。

根据本公开实施例,所述用于处理代码消息的方法还包括生成匹配参数,所述匹配参数包括所述至少一部分的代码字符序列的起始位置、代码字符序列长度和代码含义。

根据本公开实施例,根据所述代码含义确定所述至少一部分的代码字符序列的显示格式包括:根据所述匹配参数中的代码含义,确定对应于所述匹配参数中的起始位置和代码字符序列长度的代码字符序列的显示格式。

根据本公开实施例,在所述代码消息包括多行字符序列的情况下,显示所述至少一部分的代码字符序列包括:对于所述代码消息中属于同一行的代码字符序列,将该行代码字符序列显示为具有相同的行号。

根据本公开实施例,所述用于处理代码消息的方法还包括:隐藏显示所述代码字符序列中的一部分。

根据本公开实施例,所述用于处理代码消息的方法还包括:发送所述代码消息以及关于该代码消息的编程语言的消息,其中,所述代码消息具有文本消息的结构。

根据本公开的另一方面,提供了一种用于处理代码消息的装置,包括:接收单元,配置成接收包括代码字符序列的代码消息;代码含义确定单元,配置成确定至少一部分的代码字符序列的代码含义;显示格式确定单元,配置成根据所述代码含义确定所述至少一部分的代码字符序列的显示格式;和显示单元,配置成按照所述显示格式来显示所述至少一部分的代码字符序列。

根据本公开实施例,所述接收单元从输入设备接收所述代码消息,所述接收单元还配置成获取该代码消息的编程语言。

根据本公开实施例,所述接收单元通过网络接收所述代码消息,所述接收单元还配置成通过网络接收关于该代码消息的编程语言的消息。

根据本公开实施例,所述代码含义确定单元根据所述编程语言的语法规则来对代码字符序列进行匹配,以确定至少一部分的代码字符序列的代码含义。

根据本公开实施例,所述代码含义确定单元按照根据语法规则定义的编程规则和编程模式来对所述至少一部分的代码字符序列进行匹配,以确定所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码含义。

根据本公开实施例,所述代码含义确定单元通过匹配确定所述至少一部分的代码字符序列符合的编程模式,将该编程模式确定为所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码字符序列的代码含义。

根据本公开实施例,所述代码含义确定单元还配置成:对于已经通过匹配确定其编程模式的已匹配代码字符序列,按照对于该编程模式定义的子编程规则和子编程模式来对所述已匹配代码字符序列中的部分代码字符序列进行进一步的匹配。

根据本公开实施例,所述代码含义确定单元还配置成:对于未能通过匹配确定其代码含义的代码字符序列,将其代码含义确定为未匹配。

根据本公开实施例,所述代码含义确定单元还配置成生成匹配参数,所述匹配参数包括所述至少一部分的代码字符序列的起始位置、代码字符序列长度和代码含义。

根据本公开实施例,所述代码含义确定单元根据所述匹配参数中的代码含义,确定对应于所述匹配参数中的起始位置和代码字符序列长度的代码字符序列的显示格式。

根据本公开实施例,在所述代码消息包括多行字符序列的情况下,对于所述代码消息中属于同一行的代码字符序列,所述显示单元将该行代码字符序列显示为具有相同的行号。

根据本公开实施例,所述显示单元还配置成:隐藏显示所述代码字符序列中的一部分。

根据本公开实施例,所述用于处理代码消息的装置还包括发送单元,配置成:发送所述代码消息以及关于该代码消息的编程语言的消息,其中,所述代码消息具有文本消息的结构。

根据本公开的又一方面,提供了一种用于处理代码消息的设备,包括:一个或多个处理器;和一个或多个存储器,其中,所述存储器中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器运行时,执行如上所述的用于处理代码消息的方法。

根据本公开的又一方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如上所述的用于处理代码消息的方法。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a示出了未经处理的代码消息在移动终端中的显示效果101的示意图;

图1b示出了未经处理的代码消息在电脑屏幕中的显示效果102的示意图;

图2示出了根据本公开实施例的用于处理代码消息的方法的流程图;

图3示出了根据本公开实施例的从输入设备接收代码消息的示意图;

图4a示出了根据本公开实施例的经过处理的代码消息在移动终端中的显示效果401的示意图;

图4b示出了根据本公开实施例的经过处理的代码消息在电脑屏幕中的显示效果402的示意图;

图5示出了根据本公开实施例的隐藏显示一部分代码消息的示意图;

图6示出了根据本公开实施例的用于处理代码消息的装置的示意图;

图7示出了根据本公开实施例的用于处理代码消息的设备的示意图;

图8a示出了根据本公开实施例的装置或设备的一个具体实施例的框图;

图8b示出了根据本公开实施例的发送方会话窗口的示意图;

图9示出了根据本公开实施例的一种示例性的计算设备的架构的示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。

本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。

如前所述,用户可以在例如手机或者计算机等的通信设备中分享代码消息,例如,用于进行针对程序代码的讨论、研究以及交流等。其中,所述通信设备包括但不限于笔记本计算机、台式计算机、智能电话、平板电脑等具有数据处理能力的移动终端或者固定终端等。例如,软件工程师在某些情形下,需要将在专业的编程软件中编辑的程序代码传输给其他人员,以实现讨论或者研究所述程序代码的目的。

例如,发送方可以利用通信软件通过通信网络来将代码消息发送给接收方。其中,所述通信软件例如可以是任意类型的即时通信软件、电子邮件等。所述通信网络包括但不限于遵循诸如传输控制协议和互联网协议(tcp/ip)、用户数据报协议(udp)、超文本传输协议(http)和/或文件传输协议(ftp)配置的互联网、iptv网络、无线保真(wi-fi)网络、无线局域网(wlan)、局域网(lan)和/或城域网(man)等。

目前,在通信软件中,发送方通常以文本消息的格式传输所述代码消息,由此,接收方接收到的代码消息也仅具有文本消息的格式。对于发送方和接收方两者,观看到的程序代码均缺少排版和格式化的处理。图1a示出了未经处理的代码消息在移动终端中的显示效果101的示意图,图1b示出了未经处理的代码消息在电脑屏幕中的显示效果102的示意图。

如在图1a和图1b中所示出的,显示的代码消息仅具有文本消息的格式,而不具有专业的编程软件中所显示的程序代码的格式。在专业的编程软件中,对于具有不同代码含义的代码会进行区分,并通过颜色、加粗等字体格式来区别显示。此外,在专业的编程软件中,显示的代码具有行号。

例如,如图1a所示,对于具有不同代码含义的代码字符序列在显示的过程中未进行区分,例如,用于定义函数的代码字符序列“deffib(n):”与作为代码注释的“writefibonacciseriesupton”在接收的代码消息中未进行区分,使得用户很难快速地区分这两者。这将影响用户对于所述代码消息的观看体验。此外,图1a和图1b中示出的代码消息未显示行号,在程序代码包括较多行的情况下,未显示行号的代码消息将会显得杂乱无章,例如,接收方很难快速定位到某一行的程序代码。由此,上述未经处理的代码消息在显示的过程中不利于用户之间讨论研究,严重影响了用户体验。

为此,本公开提供了一种用于处理代码消息的方法。在发送方或者接收方的显示屏幕上显示代码消息之前,根据编程语言的语法规则识别代码字符序列的代码含义,并根据识别的代码字符序列的代码含义来确定该代码字符序列的显示格式,从而实现代码消息的格式化的显示效果。例如,可以以用户(例如,软件工程师)所熟悉的排版和格式来在会话消息中清晰、直观地显示程序代码,提升了在会话中查看代码消息的用户体验。

图2示出了根据本公开实施例的用于处理代码消息的方法的流程图200。以下,将结合图2详细地描述根据本公开的用于处理代码消息的方法。

如图2所示,首先,在步骤s101,接收包括代码字符序列的代码消息。其中,所述代码字符序列可以表示为一段程序代码。

需要注意的是,本公开提供的用于处理代码消息的方法可以分别应用于发送方和接收方,即发送方和接收方可以各自地执行根据本公开的方法,以实现代码消息的格式化的显示效果。发送方和接收方在进行所述方法的过程中,在接收代码消息的实现方式上存在差异,对于此点,将在下文中以根据本公开实施例的不同实现方式分别进行详细描述。此外,对于发送方,还包括将代码消息和该代码消息的编程语言发送给接收方的步骤,也将在下文中进行详细描述。除以上两点不同之外,除非额外说明,所述方法的其他步骤(例如,步骤s102-s105)均适用于发送方和接收方两者,即,发送方和接收方两者均可执行,以实现代码消息的格式化的显示。

根据本公开实施例的一个实现方式,所述接收包括代码字符序列的代码消息(步骤s101)可以包括从输入设备接收所述代码消息。例如,作为代码消息的发送方的用户可以基于输入设备来获取待发送的代码消息。换言之,此实现方式表示的是由发送方来执行步骤s101。

作为示例,图3示出了根据本公开实施例的该实现方式的从输入设备接收代码消息的示意图。其中,图3中示出的代码字符序列为python语言。例如,发送方可以通过通信软件的会话输入框工具栏进入代码消息编辑界面。如图3中示出的,发送方可以在代码消息编辑框内直接地输入要发送的程序代码,也可以将在专业的编程软件中编辑好的程序代码复制到所述代码消息编辑框中。此处,可以将从代码消息编辑框中接收的程序代码表示为代码消息,由此,可以实现从输入设备接收代码消息。

根据本公开实施例的该实现方式,所述用于处理代码消息的方法还包括获取代码消息的编程语言。例如,如图3中所示出的,发送方可以通过框图300中位于右上方的下拉列表框选择与代码消息相对应的编程语言,例如,python语言。此外,还可以自动地识别输入到代码消息编辑框内的程序代码的编程语言。

根据本公开实施例的另一实现方式,所述接收包括代码字符序列的代码消息(步骤s101)还可以包括通过网络接收所述代码消息。例如,作为代码消息的接收方的用户可以利用移动终端或者计算机等设备经由通信网络从发送方接收代码消息。换言之,此实现方式表示的是由接收方来执行步骤s101。

根据本公开实施例的该实现方式,所述用于处理代码消息的方法还包括通过网络接收关于代码消息的编程语言的消息。例如,发送方在向接收方发送代码消息的同时,还可以将该代码消息的编程语言以消息的形式发送给接收方,从而使得,接收方可以在接收到代码消息的同时,获取关于该代码消息的编程语言的信息,以用于对接收的代码消息进行处理。此外,还可以自动地识别接收到的代码消息中的程序代码的编程语言。

如上所述,发送方和接收方两者均可执行根据本公开的方法。其中,在接收代码消息的步骤s101中,发送方可以从输入设备接收代码消息以及编程语言;接收方可以从通过网络接收来自发送方的代码消息以及编程语言。在发送方或接收方接收到代码消息后,可以各自的执行根据本公开的方法,例如:

对于发送方,在从代码消息编辑框接收代码消息的过程中,可以实时地对输入的代码字符序列进行匹配处理,以确定其代码含义,并按照识别的代码含义进行显示;

对于接收方,在通过通信网络接收到代码消息后,可以立即对代码消息中的代码字符序列进行匹配处理,以确定其代码含义,并按照识别的代码含义进行显示。

由此,接收到代码消息的发送方和接收方将按照根据本公开的方法,各自地执行以下步骤s102-s104以及可选步骤s105,即,以下关于步骤s102-s105的描述适用于发送方和接收方两者,在此不再作区分。接着,如图2所示,在步骤s102,确定至少一部分的代码字符序列的代码含义。例如,在python语言的程序代码中,所述代码含义可以包括注释、关键字、数值、自定义函数、变量等。

举例来说,在如图3中示出的python语言的程序代码中,符号“#”后面的字符序列为注释,在代码中加入注释有助于对程序代码的理解;“def”、“while”、“print”为python语言中的关键字;“0,1”为数值;“fib(n)”为自定义函数;“result”为变量,诸如此类。此外,所述代码含义与编程语言相关联,在不同的编程语言中,所述代码含义可以由不同的符号表示,例如,在c++语言中,符号“/*”表示注释开始,符号“*/”表示注释结束。所述代码含义可以具有与本公开所属领域的普通技术人员共同理解的相同含义,在此,不对各个编程语言所包括的代码含义进行一一列举。

根据本公开实施例,确定至少一部分的代码字符序列的代码含义可以包括:根据所述编程语言的语法规则来对代码字符序列进行匹配,以确定至少一部分的代码字符序列的代码含义。例如,在获取到包括代码字符序列的代码消息和该代码消息的编程语言后,可以按照根据语法规则定义的编程规则和编程模式来对所述至少一部分的代码字符序列进行匹配,以确定所述代码字符序列所属的编程模式,其中,所述编程模式表示代码含义。

根据本公开实施例,可以根据编程语言的语法规则来预先定义一组编程规则和编程模式。

所述编程模式可以用于表示代码含义。例如,此处,以json语言为例,编程模式可以包括对象模式、数组模式、字符串模式、数字模式、预定义常量模式和注释模式等。

所述编程规则可以表示为对于代码字符序列中的某一位置可以应用哪些编程模式。例如,仍以json语言为例,编程规则可以包括代码字符序列开头的位置只能是“值”,即,只能是以下六种编程模式之一:对象模式、数组模式、字符串模式、数字模式、预定义常量模式和注释模式。所述编程规则还可以包括:在数组模式中,最先出现的只能是“值”,接着以符号“,”作为分隔符。

应理解的是,对于某一种编程语言,编写程序代码的规则是固定且已知的,由此,可以针对编程语言来预先定义一系列的编程规则和编程模式,并利用预先定义的编程规则和编程模式来对代码字符序列进行匹配,从而确定该代码字符序列的代码含义。

首先,在预先定义了编程规则和编程模式的情况下,例如,可以从代码字符序列的开头位置开始,进行匹配处理,以确定代码字符序列所属的编程模式。

根据本公开实施例的一个实现方式,可以通过定义起始和/或结束符号来进行对于代码字符序列的匹配处理。例如,在python语言中,注释模式以符号“#”为起始,以换行为结束;对象模式以符号“{”起始、以符号“}结束,数组模式以符号“[”起始、以符号“]”结束,对于预定义常量模式,则为“true”、“false”、“null”三个固定字符串之一。

由此,示例性地,接收的代码字符序列可以如下所示:

表1

可以从以上代码字符序列的开头位置开始进行匹配处理。即,通过匹配,可以将以符号“#”起始至换行结束的代码字符序列“example”确定为注释模式。接着,可以从上一组匹配成功的字符序列的尾部开始,继续进行匹配处理,例如,可以将字符“a”确定为常量模式,将以符号“[”起始、以符号“]”结束的代码字符序列“[1,2,[3,4,5]]”确定为数组模式。

根据本公开实施例的另一实现方式,还可以通过正则表达式(regularexpression)来实施上述匹配处理。所述正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(例如,"元字符"))操作的一种逻辑公式,即,通预先定义的一些特定字符、及这些特定字符的组合,组成用来表达对字符串的过滤逻辑的"规则字符串"。例如,通过将代码字符序列与所述规则字符串进行匹配,从而确定所述代码字符序列所符合的规则字符串,从而确定其所属的编程模式。在根据本公开实施例的其他实现方式中,对代码字符序列进行匹配处理的具体方式还可以采用其他的方式来进行,并不构成对于本公开的限制。

由此,在通过匹配确定至少一部分的代码字符序列符合的编程模式后,可以将该编程模式确定为所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码字符序列的代码含义。例如,通过对代码字符序列进行匹配,在将表1中示出的字符“a”确定为常量模式的情况下,可以将该字符“a”标记为常量模式。即,被标记为常量模式的字符“a”表示常量的代码含义。

根据本公开实施例,根据编程语言的语法规则来对代码字符序列进行匹配还包括:对于已经通过匹配确定其编程模式的已匹配代码字符序列,按照对于该编程模式定义的子编程规则和子编程模式来对所述已匹配代码字符序列中的部分代码字符序列进行进一步的匹配。

根据本公开实施例,根据编程语言的语法规则定义的编程模式还可以进一步包括可递归的子编程规则和子编程模式。例如,对于已经通过匹配确定为属于数组模式的一段代码字符序列中,还可以对其进行进一步的匹配处理,从而判断该属于数组模式的一段代码字符序列中是否还包括子编程模式。所述子编程规则和子编程模式可以与上述编程规则和编程模式部分相同。例如,所述子编程模式可以包括对象模式、数组模式、字符串模式、数字模式、预定义常量模式和注释模式等。所述子编程规则可以表示某一编程模式内的某一位置可以应用哪些子编程模式。例如,所述子编程规则可以包括:在数组模式中,最先出现的只能是“值”,接着以符号“,”作为分隔符。对于某一种编程语言,编写程序代码的规则是固定且已知的,由此,可以针对各个编程模式预先定义一组子编程规则和子编程模式,并利用预先定义的子编程规则和子编程模式来对该编程模式内的代码字符序列进行进一步的匹配,从而确定该代码字符序列的代码含义。

举例来说,对于表1中示出的代码字符序列“[1,2,[3,4,5]]”,可以通过匹配将其整体确定为数组模式。接着,继续对数组内的代码字符序列进行匹配,可以将“1”、“2”确定为数值模式,将“[3,4,5]”确定为数组模式。进一步的,还可以通过进一步的匹配将数组模式“[3,4,5]”中的“3”、“4”、“5”确定为数值模式。由此,实现了确定表1中示出的行号为2的代码字符序列中每个字符序列所表示的代码含义。

由此可知,在根据本公开的对代码字符序列进行匹配处理的过程中,可以根据编程规则和编程模式将一段代码字符序列确定为某一编程模式,然后,还可以根据该编程模式的子编程规则和子编程模式对该段代码字符序列进行进一步的匹配,直到不再有任何子编程模式适用为止。

接下来,根据本公开实施例,可以从上一组匹配成功的代码字符序列的尾部开始,继续执行匹配工作,例如,继续对字符“def”进行上述匹配处理,并将其确定为关键字模式。然后,类似地,可以继续进行上述匹配处理,按照代码字符序列的顺序来确定其编程模式,例如,fib为自定义函数模式;n为变量模式;writefibonacciseriesupton为注释模式;a、b为变量模式;0、1为数值模式;while和print为关键字模式。根据本公开实施例,根据编程语言的语法规则来对代码字符序列进行匹配还包括:对于未能通过匹配确定其代码含义的代码字符序列,将其代码含义确定为未匹配。

例如,如表1所示,在所述匹配处理进行到行号为6的代码字符序列时,对于“b”之后的符号“^”,通过如上所述的编程规则和编程模式无法确定其所属的编程模式,例如,这可以是由于预先定义的编程模式中未规定与该符号“^”对应的编程模式,或者,这也可以是由于符号“^”为程序代码中的错误输入的字符。

根据本公开的一个实施例,对于诸如符号“^”的未能通过匹配确定其代码含义的代码字符序列,可以直接地将其代码含义确定为未匹配。根据本公开的另一实施例,还可以定义未匹配模式,对于诸如符号“^”的未能通过匹配确定其明确的代码含义的代码字符序列,可以将其确定为属于未匹配模式,所述未匹配模式表示所述代码字符序列的代码含义为不明确,或者未定义。

在符号“^”之后,继续进行上述匹配处理,直到到达整体代码字符序列尾部,即,行号为7的代码字符序列中的“a+b”中的字符a和b为变量模式,或者没有任何模式能够匹配为止。

如图2所示,可选地,所述用于处理代码消息的方法还可以包括步骤s105,生成匹配参数。其中,所述匹配参数包括至少一部分的代码字符序列的起始位置、代码字符序列长度和代码含义。例如,所述匹配参数可以由结构为{起始,长度,模式}的数组函数表示。

例如,如上所述的,在通过匹配确定表1中行号为1的代码字符序列为注释模式后,可以输出结构为{2,8,注释}的数组函数1。所述数组函数1可以用于表示在代码消息中,第2-8位的字符为注释模式。接着,对于图表1中行号为2的代码字符序列,在通过匹配对其进行处理后,可以输出数组函数2,{9,1,常量}、数组函数3{11,13,数组},表示对于行号为2的代码字符序列,第9位的字符为变量模式,第11-23位的字符为数组模式。对于已经将其确定为数组模式的代码字符序列“[1,2,[3,4,5]]”,还可以根据对于该数组模式的子编程规则和子编程模式,确定其中的子编程模式,并输出以下针对上述数值模式的数组函数:数组函数4{12,1,数值}、数组函数5{14,1,数值}、数组函数6{16,7,数组},表示第12、14位的字符为子数值模式,第16-22的字符为子数组模式。进一步的,对于属于子数组模式的代码字符序列“[3,4,5]”,还可以根据对于该子数组模式的二级编程规则和二级编程模式,确定其中的二级编程模式,并输出数组函数7{17,1,数值}、数组函数8{19,1,数值}、数组函数9{21,1,数值},表示第17、19以及21位的字符为二级数值模式。以此类推,可以获得表1中示出的整段代码字符序列所对应的匹配参数。所述匹配参数可以用于确定代码字符序列的显示格式。

接着,如图2所示,在步骤s103,根据所述代码含义确定至少一部分的代码字符序列的显示格式,以及在步骤s014,按照所述显示格式来显示所述至少一部分的代码字符序列。根据本公开实施例,可以预先为每一种编程模式定义对应的显示格式,所述显示格式可以是显示的代码字符序列的颜色、字体、字号、加粗、倾斜等。

图4a示出了根据本公开实施例的经过处理的代码消息在移动终端中的显示效果401的示意图,图4b示出了根据本公开实施例的经过处理的代码消息在电脑屏幕中的显示效果402的示意图。其中,作为示例,图4a和图4b中示出的代码字符序列为python语言,根据本公开的方法还可以应用于其他编程语言,例如,json语言、c++语言等等。

此外,图4a和图4b中示出的代码字符序列与表1中示出的代码字符序列相同。即表示,对于图4a和图4b中的代码,可以通过如上所述的步骤s102确定代码字符序列的代码含义,以及可选地,通过如上所述的步骤s105输出相应的匹配参数,具体过程在此不再赘述。接着,可以对所述代码字符序列执行上述步骤s103和步骤s104,并进行显示,显示效果即如图4a和图4b中所示出的。

以下,将结合图4a和图4b中示意性的显示效果,对根据本公开实施例的上述步骤s103和步骤s104进行详细介绍。

根据本公开实施例,通过匹配可以确定一段代码字符序列所属的编程模式,诸如,数值模式,所述数值表示该段代码字符序列的代码含义为数值。根据本公开实施例,为了清楚、直观的显示程序代码,可以根据需要对不同的代码含义设置不同显示格式。

例如,如图4a或图4b所示,可以将属于数值模式的代码字符序列(诸如,1,2,3,4,5)设置成显示为斜体;将属于注释模式的代码字符序列(诸如,example、writefibonacciseriesupton)设置成显示为灰色;将属于关键字模式的代码字符序列(诸如,def、while、print)设置显示为字体加粗;将属于自定义函数的fib设置成显示为斜体加粗;将属于未匹配模式的代码字符序列(诸如,符号^)设置成显示为下划线并加大字号,诸如此类。

根据本公开实施例,上述根据所述代码含义确定至少一部分的代码字符序列的显示格式的过程可以依据步骤s105中输出的匹配参数来实施。

例如,可以根据所述匹配参数中的代码含义,确定对应于所述匹配参数中的起始位置和代码字符序列长度的代码字符序列的显示格式。例如,根据步骤s105中输出的数组函数1{2,8,注释},可以将代码字符序列中第2-8位的、代码含义为注释的字符显示为灰色。类似的,可以依据输出的数组函数2-9来将图4a中行号为2的代码字符序列设置成相应的显示格式,在此不再赘述。确定至少一部分的代码字符序列的显示格式的过程还可以采用其他方式来实施,并不构成对本公开的限制。

在步骤s104中,按照所述显示格式来显示所述至少一部分的代码字符序列。

根据本公开实施例,在显示代码字符序列的过程中,还可以计算显示行号所需占用的屏幕空间,并在代码字符序列的左侧添加行号。例如,对于仅包括个位数的行号的代码字符序列,显示行号仅需要占用一个字符的屏幕空间,对于包括十位数的行号的代码字符序列,显示行号需要占用两个字符的屏幕空间。所述行号可以便于用户快速地定位到某一行程序代码。

根据本公开实施例,在所述代码消息包括多行字符序列的情况下,显示所述至少一部分的代码字符序列包括:对于所述代码消息中属于同一行的代码字符序列,将该行代码字符序列显示为具有相同的行号。

例如,对于具有不同宽度的显示屏幕,其一行可以显示的字符的个数是不同的。如图4a所示出的终端设备的显示屏幕的宽度可以小于如图4b所示出的电脑屏幕的显示屏幕的宽度。对于一行较长的代码字符序列,例如,行号为3的代码字符序列在图4b中可以显示在同一行,而在图4a中,屏幕宽度不足以显示整行的代码字符序列,在此种情形下,可以根据屏幕尺寸将该行代码序列的一部分显示在显示屏幕的下一行中。

在图4a中,对于代码消息中属于同一行的代码字符序列“deffib(n):#writefibonacciseriesupton”,将该行代码字符序列显示为对应于相同的行号,即,均对应于行号3。用户在不同尺寸的显示屏幕中查看同一代码消息时,此种显示方式可以保证程序代码的行号不随显示屏幕的尺寸而改变。例如,用户在交流、讨论行号为3的程序代码时,均表示相同的代码字符序列“deffib(n):#writefibonacciseriesupton”。

如图4a和4b所示,可以清晰、明确的查看整段代码字符序列中包括的关键字、数值等字符,也可以快速地定位到某一行的代码字符序列,或者,还可以突出地查看到整段代码字符序列中包括的具有未匹配的代码含义的符号,例如,可以快速地识别出代码中的错误输入的符号“^”。通过如上所述的用于处理代码消息的方法,会话框中显示的代码消息可以根据代码含义的不同而显示为不同的显示格式,便于用户查看,并且可以以编程者熟悉的格式在会话消息中显示代码,提升了用户体验。

在代码消息包括的代码字符序列较长的情况下,显示全部的代码字符序列将会占据显示屏幕中过长的空间,为用户的查看带来不便。根据本公开实施例,所述用于处理代码消息的方法,还包括隐藏显示所述代码字符序列中的一部分。

图5示出了隐藏显示一部分代码字符序列的示意图,根据本公开的实施例,例如可以根据显示屏幕的尺寸设定代码消息最大显示行数,例如,对于终端设备的显示屏幕,可以将最大显示行数设置为5,将多于5行的代码字符序列折叠起来,通过图5中示出的查看全部代码的字段,用户可以了解到,此处未显示全部的代码消息,即,自动地隐藏了5行之后的代码字符序列。此外,用户还可以例如通过点击所述查看全部代码的字段来显示全部的代码消息。需要注意的是,所述将最大显示行数设置为5仅作为一种示例,还可以将其设置为其他的数值,例如,对于尺寸较大的显示屏幕,还可以将最大显示行数设置为10。又例如,对于电脑的显示屏幕,可以设置显示更多行的代码字符序列,以便于查看。

通过如图5中示出的隐藏显示一部分代码字符序列,可以更简洁地显示接收到的代码消息,并且不会占据显示屏幕中过多的空间,这可以提升在会话中查看代码消息的用户体验。

根据本公开实施例,在有需要时,还可以将完整的代码字符序列展开到更大的显示区域进行查看和操作。例如,可以将完整的代码字符序列显示在另一页面上,诸如在单独的弹出窗口中进行显示,此时,代码可以显示在几乎整个屏幕空间上,以便于查看。

根据本公开实施例,所述用于处理代码消息的方法还可以包括发送所述代码消息以及关于该代码消息的编程语言的消息,其中,所述代码消息具有文本消息的结构。

例如,作为代码消息的发送方,可以将代码消息编辑框中的程序代码以文本消息的格式发送给接收方,以供接收方查看该段程序代码。在发送代码消息的过程中,所述发送方还可以将该代码消息的编程语言发送给接收方。所述接收方可以根据编程语言,对接收的代码消息进行如上所述的处理并进行显示。

根据本公开实施例,所述代码消息结构的定义可以是在文本消息的基础上扩展,额外添加一个编程语言的字段。例如,在发送代码消息之前,可以首先按照文本消息的结构组装消息体,再在消息体上附加设置表示编程语言的字段。

此种以文本消息的格式发送代码消息的方式可以解决用于显示的设备的新旧版本兼容的问题。例如,对于无法实施如上所述的处理代码消息的方法的接收方设备,诸如可以将其表示为旧版设备。由于接收到的代码消息仍为文本消息的结构,使得所述旧版设备仍能正常显示接收的代码消息。例如,所述旧版设备在接收到代码消息和编程语言的消息后,将忽略关于编程语言的消息,并按照文本消息的格式显示接收到的代码消息,显示效果可以如图1a或图1b中所示出的,从而避免旧版设备出现代码无法显示、查看的问题。在所述旧版设备可以实施如上所述的处理代码消息的方法之后,诸如表示为新版设备,可以对之前接收到的代码消息实施所述方法并进行显示,显示效果可以如图4a或图4b中所示出的。

此外,接收方设备在接收到代码消息后,在有需要对接收到的代码消息进行操作、编辑的情况下,可以将所述代码消息复制到接收方设备中配置的代码消息编辑框中,以进行相应的操作。

如上所述的用于处理代码消息的方法,通过根据编程语言的语法规则定义的编程规则和编程模式对接收的代码消息进行匹配,确定代码字符序列的代码含义,并根据代码含义确定代码字符序列的显示格式,并显示经过处理后的代码消息,由此可以使得代码消息以编程人员熟悉的排版和格式展示在会话消息流中,清晰直观,便于查看,且不会占据过多的显示空间,极大的提升了在会话中查看代码消息的用户体验。

本公开还提供了一种用于处理代码消息的装置。图6示出了根据本公开实施例的用于处理代码消息的装置1000的示意图。

如图6所示,所述用于处理代码消息的装置1000可以包括,接收单元1010、代码含义确定单元1020、显示格式确定单元1030以及显示单元1040。其中,所述接收单元1010配置成接收包括代码字符序列的代码消息,所述代码含义确定单元1020配置成确定至少一部分的代码字符序列的代码含义,所述显示格式确定单元1030,配置成根据所述代码含义确定所述至少一部分的代码字符序列的显示格式,以及所述显示单元1040配置成按照所述显示格式来显示所述至少一部分的代码字符序列。

发送方和接收方均可各自地配置有根据本公开实施例的上述装置1000,并执行相应的操作。需要注意的是,发送方和接收方的接收单元1010在接收代码消息的实现方式上存在区别,以下将分别进行描述。此外,发送方还可以包括发送单元1050,用于将代码消息以及该代码消息的编程语言发送给接收方。除此之外,发送方和接收方中包括的上述代码含义确定单元1020、显示格式确定单元1030以及显示单元1040执行的操作均相同,在此不再分别描述。

根据本公开实施例,配置在发送方的所述接收单元1010可以从输入设备接收所述代码消息。在此情形下,所述接收单元1010还配置成获取该代码消息的编程语言,例如通过所述输入设备获取。

根据本公开实施例,配置在接收方的所述接收单元1010还可以通过网络接收所述代码消息,所述代码消息具有文本消息的结构。在此情形下,所述接收单元1010还配置成通过网络接收关于该代码消息的编程语言的消息。

根据本公开实施例,所述代码含义确定单元1020可以根据所述编程语言的语法规则来对代码字符序列进行匹配,以确定至少一部分的代码字符序列的代码含义。

根据本公开实施例,所述代码含义确定单元1020可以按照根据语法规则定义的编程规则和编程模式来对所述至少一部分的代码字符序列进行匹配,以确定所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码含义。

根据本公开实施例,所述代码含义确定单元1020可以通过匹配确定所述至少一部分的代码字符序列符合的编程模式,将该编程模式确定为所述代码字符序列所属的编程模式,其中,所述编程模式表示所述代码字符序列的代码含义。

根据本公开实施例,所述代码含义确定单元1020还可以配置成:对于已经通过匹配确定其编程模式的已匹配代码字符序列,按照根据语法规则定义的子编程规则和子编程模式来对所述已匹配代码字符序列中的部分代码字符序列进行进一步的匹配。

根据本公开实施例,可选地,所述代码含义确定单元1020还可以配置成:对于未能通过匹配确定其代码含义的代码字符序列,将其代码含义确定为未匹配。

根据本公开实施例,所述代码含义确定单元1020还可以配置成生成匹配参数,所述匹配参数包括所述至少一部分的代码字符序列的起始位置、代码字符序列长度和代码含义,其中,根据所述代码含义确定所述至少一部分的代码字符序列的显示格式包括:根据所述匹配参数中的代码含义,确定对应于所述匹配参数中的起始位置和代码字符序列长度的代码字符序列的显示格式。

根据本公开实施例,在所述代码消息包括多行字符序列的情况下,对于所述代码消息中属于同一行的代码字符序列,所述显示单元1040将该行代码字符序列显示为具有相同的行号。

根据本公开实施例,所述显示单元1040还可以配置成:隐藏显示所述代码字符序列中的一部分。

如图6所示,在根据本公开实施例的用于处理代码消息的装置1000中,对于发送方还可以配置有发送单元1050,用于将代码消息以及该代码消息的编程语言发送给接收方。

所述发送单元1050配置成:发送所述代码消息以及关于该代码消息的编程语言的消息,其中,所述代码消息具有文本消息的结构。

本公开还提供了一种用于处理代码消息的设备。图7示出了根据本公开实施例的设备2000的示意图。

如图7所示,所述设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020,其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的用于处理代码消息的方法。

图8a示出了根据本公开实施例的装置或设备的一个具体实施例的框图。图8a中示出的框图600中示意性地示出了应用如上所述的处理代码消息的装置或设备的示意图,具体的,包括发送方601和接收方602。

其中,所述发送方例如可以表示为配置成发送代码消息的用户的通信设备,例如,可以实施为移动终端中的应用程序,所述应用程序可以编写代码消息,并通过网络发送所述代码消息。例如,发送方可以通过会话输入框工具栏的入口,进入代码消息编辑界面。图8b示意性地示出了根据本公开实施例的发送方会话窗口的示意图。发送方可以通过如图8b中示出的工具栏入口进入到如图3所示出的代码消息编辑界面,并通过代码消息编辑框接收代码消息以及编程语言。如图8a所示,在代码消息编写完成之后,所述发送方还可以配置成将所述代码消息以文本消息的格式发送给接收方,与此同时,还可以将代码消息的编程语言发送给所述接收方。

所述接收方例如可以表示为配置成接收代码消息的用户的通信设备,类似地,也可以实施为移动终端中的应用程序,可以从发送方接收代码消息,并显示所述代码消息,以进行查看。

示例性地,上述用于处理代码消息的装置的功能可以通过配置在发送方和接收方中的代码消息支持组件来实施。例如,如图8a所示,所述代码消息支持组件可以具体包括代码解析模块和显示格式生成模块。

需要注意的是,如上所述,所述发送方和接收方均可配置有上述代码消息支持组件,并各自地实现代码消息的格式化显示功能。

所述代码解析模块可以配置成实施如图6中所示代码含义确定单元1020的操作,即,用于确定接收的代码字符序列的代码含义,以及可选地,用于生成匹配参数。所述显示格式生成模块可以配置成实施图6中示出的显示格式确定单元1030以及显示单元1040,即用于根据代码含义确定代码字符序列的显示格式,并按照确定的显示格式来显示所述代码字符序列。上述单元的功能与结合图6描述的相似,在此不再赘述。

通过图8a中示出的上述代码代码消息支持组件,可以实施如上所述的用于处理代码消息的装置,即可以实现在发送方和接收方均显示出经过处理的代码消息,所述显示的代码消息的显示效果可以是如图4a和图4b中所示出的。

在实施的过程中,发送方的代码消息支持组件将实时检测接收到的代码消息,并对其应用如上所述的代码消息处理方法,以使得发送方的用户可以实时地查看经过处理的如图3中示出的代码消息。在代码消息编辑完成后,发送方可以首先按照文本消息的结构组装消息体,再在消息体上附加设置表示编程语言的字段,并将包括代码消息和编程语言的消息发送给接收方。

接收方在接收到上述消息后,将通过位于接收方的代码消息支持组件对接收的代码消息应用如上所述的处理方法,以使得接收方的用户可以实时地查看经过处理的如图4a或图4b中示出的代码消息。

此外,在接收方不具备代码消息支持组件的情况下,接收方可以忽略附加设置的编程语言字段,将接收到的代码消息作为文本消息,并按照文本消息的格式进行显示。此时,由于存储到存储器件消息是完整消息,即包码消息和编程语言的消息。如此,在接收方具备代码消息支持组件后,例如通过升级到新版本来获取所述代码消息支持组件,对于升级之前收到的代码消息,仍可以应用如上所述的处理方法以进行显示。

此外,根据本公开实施例的方法或装置也可以借助于图9所示的计算设备3000的架构来实现。如图9所示,计算设备3000可以包括总线3010、一个或多个cpu3020、只读存储器(rom)3030、随机存取存储器(ram)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如rom3030或硬盘3070可以存储本公开提供的用于在社交网络中确定节点的社交层次的方法的处理和/或通信使用的各种数据或文件以及cpu所执行的程序指令。计算设备800还可以包括用户界面3080。当然,图9所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图9示出的计算设备中的一个或多个组件。

本公开的实施例也可以被实现为计算机可读存储介质。根据本公开实施例的计算机可读存储介质上存储有计算机可读指令。当所述计算机可读指令由处理器运行时,可以执行参照以上附图描述的根据本公开实施例的用于处理代码消息的方法。所述计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。

本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。

此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。所述单元仅是说明性的,并且所述系统和方法的不同方面可以使用不同单元。

本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。

除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。

以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1