公开/公告号CN106126227A
专利类型发明专利
公开/公告日2016-11-16
原文格式PDF
申请/专利权人 北京普会科技有限公司;
申请/专利号CN201610460121.3
发明设计人 周登祥;
申请日2016-06-22
分类号G06F9/44(20060101);G06F17/22(20060101);
代理机构北京世誉鑫诚专利代理事务所(普通合伙);
代理人仲伯煊
地址 100107 北京市朝阳区天朗园C座3层03商业(丰收孵化器2777号)
入库时间 2023-06-19 00:53:35
法律状态公告日
法律状态信息
法律状态
2019-04-19
专利权的转移 IPC(主分类):G06F8/30 登记生效日:20190329 变更前: 变更后: 申请日:20160622
专利申请权、专利权的转移
2019-03-19
授权
授权
2016-12-14
实质审查的生效 IPC(主分类):G06F9/44 申请日:20160622
实质审查的生效
2016-11-16
公开
公开
技术领域
本发明属于计算机工程领域,具体涉及一种在计算机上实现跨人类语言写代码的方法。
背景技术
当前超文本标记语言(HTML)的标签、属性名和一些属性值的名称用的是英语;层叠样式表(CSS)中的选择器(selector)、属性(property)、值(value)和单位(units)的名称用的也是英语。对于许多不熟悉英语的人来说,要想编写超文本标记语言和层叠样式表代码,这些英语名称对他们来说是有阻碍的。
发明内容
发明目的:本发明针对上述现有技术存在的问题做出改进,即本发明公开了一种在计算机上实现跨人类语言写代码的方法。
技术方案:一种在计算机上实现跨人类语言写代码的方法,包括以下步骤:
(1)对于超文本标记语言的已定义标签进行处理
(a1)设置浏览器需要识别的超文本标记语言的标签、属性
名、属性值名称的别名,建立别名散列表;
(a2)浏览器解析超文本标记语言的标签名称时,先查询步骤(a1)建立的别名散列表,如果能够找到该标签名称,则用其对应的原始名称来处理,否则,就用该标签名称来处理;
(a3)浏览器解析超文本标记语言的属性名名称时,先查询步骤(a1)建立的别名散列表,如果能够找到该属性名名称,则用其对应的原始名称来处理,否则,就用该属性名名称来处理
(a4)浏览器需要比较超文本标记语言的属性值名称时,先查询步骤(a1)建立的别名散列表,如果能够找到属性值名称,则用它对应的原始值名称来处理,否则,就用该属性值名称来处理;
(2)对于层叠样式表的处理
(b1)设置浏览器需要识别的层叠样式表中的选择器、属性、值、单位名称的别名,建立别名散列表;
(b2)浏览器解析到层叠样式表的选择器名称时,查询步骤(b1)建立的别名散列表,如果能够找到该选择器,则用它对应的原始名称来处理,否则,就用该选择器名称来处理;
(b3)浏览器解析到层叠样式表的属性名称时,查询步骤(b1)建立的别名散列表,如果能够找到该属性名称,则用它对应的原始名称来处理,否则,就用该属性名称来处理;
(b4)浏览器需要比较层叠样式表的值时,查询步骤(b1)建立的别名散列表,如果能够找到该值,则用它对应的原始值来处理,否则,就用该值来处理;
(b5)浏览器需要比较层叠样式表的单位时,查询步骤(b1)建立的别名散列表,如果能够找到该单位名称,则用它对应的原始名称来处理,否则,就用该单位名称来处理;
(3)对于超文本标记语言的自定义标签进行处理
(c1)设置自定义标签的标签名称的别名;
(c2)设置自定义标签的属性名称的别名;
(c3)在注册自定义标签前,设置自定义标的标签名称和属性名称的别名;
(c4)完成自定义标签注册后,设置所有用自定义标签的标签名称的别名定义的标签对象,将这些标签对象的标签名修改为原始名,并修改该标签对象的属性名称,将属性名称改为原始名;
(c5)创建自定义标签对象时,判断标签名和属性名是否是别名,如果是,则修改标签名和属性名为原始名。
有益效果:本发明公开的一种在计算机上实现跨人类语言写代码的方法具有以下有益效果:
1、可以使用自己熟悉的人类语言来编写HTML/CSS代码,加上JavaScript也支持跨人类语言编程,人们就可以使用自己熟悉的语言来编写应用,从而可以使得编程得到普及,加上手机的普及和手机性能的提高,人们可以在手机上用自己熟悉的人类语言为计算机编程,编程成为一种基本能力。
2、由于自定义标签的名称和属性可以设置别名,一种人类语言开发的自定义标签可以用另一种人类语言来使用,使得开发出的互联网组件(Web Components)可以用不同的人类语言使用。
具体实施方式:
下面对本发明的具体实施方式详细说明。
以基于已有的开源浏览器引擎Chromium,https://www.chromium.org/,版本49.0.2623.91为例说明。
一种在计算机上实现跨人类语言写代码的方法,包括以下步骤:
(1)对于超文本标记语言的已定义标签进行处理
(a1)设置浏览器需要识别的超文本标记语言的标签、属性名、属性值名称的别名,建立别名散列表;
在third_party/WebKit/Source/core/Init.cpp文件void CoreInitializer::init()方法内建立别名散列表。
(a2)浏览器解析超文本标记语言的标签名称时,先查询步骤(a1)建立的别名散列表,如果能够找到该标签名称,则用其对应的原始名称来处理,否则,就用该标签名称来处理;
(a3)浏览器解析超文本标记语言的属性名名称时,先查询步骤(a1)建立的别名散列表,如果能够找到该属性名名称,则用其对应的原始名称来处理,否则,就用该属性名名称来处理;
步骤a2和步骤a3的处理的实现代码如下:修改third_party/WebKit/Source/core/html/parser/HTMLToken.h,third_party/WebKit/Source/core/html/parser/HTMLTokenizer.cpp,third_party/WebKit/Source/core/html/parser/HTMLTokenizer.h;以支持unicode标签名。third_party/WebKit/Source/core/html/parser/HTMLToken.h的修改:-void beginEndTag(LChar character)
+void beginEndTag(UChar character)
-void beginEndTag(const Vector<LChar,32>&characters)
+void beginEndTag(const Vector<UChar,32>&characters)
-void appendToCharacter(const Vector<LChar,32>&characters)
+void appendToCharacter(const Vector<UChar,32>&characters);
third_party/WebKit/Source/core/html/parser/HTMLTokenizer.cpp的修改:
修改bool HTMLTokenizer::nextToken(SegmentedString&source,HTMLToken&token)方法,使用这样的方式修改,支持Unicode标签。
-parseError();
-bufferCharacter('<');
-HTML_RECONSUME_IN(DataState);
+m_token->beginStartTag(cc);
+HTML_ADVANCE_TO(TagNameState);
third_party/WebKit/Source/core/html/parser/HTMLViewSourceParser.cpp的修改:
修改third_party/WebKit/Source/core/html/parser/CompactHTMLToken.cpp的方法CompactHTMLToken::CompactHTMLToken(constHTMLToken*token,const TextPosition&t),做以下修改:
其中方法attemptStaticAliasStringCreation()为从别名散列表读取原始名。
(a4)浏览器需要比较超文本标记语言的属性值名称时,先查询步骤(a1)建立的别名散列表,如果能够找到属性值名称,则用它对应的原始值名称来处理,否则,就用该属性值名称来处理;
步骤a4以Meta标签为例,需要修改third_party/WebKit/Source/core/html/HTMLMetaElement-in.cpp,方法voidHTMLMetaElement::processViewportKeyValuePair()和voidHTMLMetaElement::process()找到属性名和属性值名称的原始名。
(2)对于层叠样式表的处理
(b1)设置浏览器需要识别的层叠样式表中的选择器、属性、值、单位名称的别名,建立别名散列表;
在third_party/WebKit/Source/core/Init.cpp文件void CoreInitializer::init()方法内建立别名散列表。
(b2)浏览器解析到层叠样式表的选择器名称时,查询步骤(b1)建立的别名散列表,如果能够找到该选择器,则用它对应的原始名称来处理,否则,就用该选择器名称来处理;
(b3)浏览器解析到层叠样式表的属性名称时,查询步骤(b1)建立的别名散列表,如果能够找到该属性名称,则用它对应的原始名称来处理,否则,就用该属性名称来处理;
(b4)浏览器需要比较层叠样式表的值时,查询步骤(b1)建立的别名散列表,如果能够找到该值,则用它对应的原始值来处理,否则,就用该值来处理;
(b5)浏览器需要比较层叠样式表的单位时,查询步骤(b1)建立的别名散列表,如果能够找到该单位名称,则用它对应的原始名称来处理,否则,就用该单位名称来处理;
步骤b2~b5实现的代码如下:
修改文件third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp,方法CSSPropertyID CSSParserToken::parseAsUnresolvedCSSPropertyID()const,CSSValueID CSSParserToken::id()const,找到原始名称。
修改文件third_party/WebKit/Source/core/css/parser/CSSParserToken.h,方法bool valueEqualsIgnoringCase(const char*str)const,使用原始名称来比较。
修改文件third_party/WebKit/Source/core/css/parser/CSSParserValue s.cpp,方法CSSParserValueList::CSSParserValueList(CSSParserTokenRange range),使用原始名称。
修改文件third_party/WebKit/Source/core/css/parser/CSSSelectorPar ser.cpp,方法bool CSSSelectorParser::consumeName(),使用原始名称。
(3)对于超文本标记语言的自定义标签进行处理
(c1)设置自定义标签的标签名称的别名;
(c2)设置自定义标签的属性名称的别名;
(c3)在注册自定义标签前,设置自定义标的标签名称和属性名称的别名;
(c4)完成自定义标签注册后,设置所有用自定义标签的标签名称的别名定义的标签对象,将这些标签对象的标签名修改为原始名,并修改该标签对象的属性名称,将属性名称改为原始名;
(c5)创建自定义标签对象时,判断标签名和属性名是否是别名,如果是,则修改标签名和属性名为原始名。
步骤c1~c5实现的代码如下:
修改文件third_party/WebKit/Source/core/dom/Attribute.h,
-void parserSetName(const QualifiedName&name){m_name=name;}
+void parserSetName(const QualifiedName&name)const{m_name=name;}
-QualifiedName m_name;
+mutable QualifiedName m_name;
修改文件third_party/WebKit/Source/core/dom/Document.idl,增加+void setElementAlias(DOMString type,DOMString alias,object attributesAlias);
修改文件,third_party/WebKit/Source/core/dom/Element.h,third_party/WebKit/Source/core/dom/Element.cpp,增加修改属性名和标签名的方法。
修改文件third_party/WebKit/Source/core/dom/custom/CustomElement.h,third_party/WebKit/Source/core/dom/custom/CustomElement.cpp,增加更新别名的方法。
修改文件third_party/WebKit/Source/core/dom/custom/CustomElementRegistrationContext.h,third_party/WebKit/Source/core/dom/custom/CustomElementRegistrationContext.cpp,增加设置自定义标签别名的方法。
修改文件third_party/WebKit/Source/core/dom/custom/CustomElementRegistrationContext.cpp,在注册和创建自定义标签时,查询原始名称,更新用别名创建的标签的名称和属性名称。
修改文件third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.h,third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.cpp,提供设置别名方法。
经过以上修改,现有的以下HTML/CSS代码:
就可以用类似这样的中文来编写:
当有用英语定义的自定义标签:
<x-custom first=‘三’last=‘张’/>
通过调用设置标签和属性的别名:
document.setElementAlias([‘x-custom’,’普-自定义’],[[‘first’,'名子'],['last','姓']])
就可以这样用中文使用:
<普-自定义名子=‘三’姓=‘张’/>
设置不同的人类语言别名,就可以用不同的人类语言来编写代码。
上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
机译: 编码设备,编码方法,解码设备,解码方法,用于对彩色图像进行编码的编码设备,用于对彩色图像进行编码的编码方法,用于对彩色编码图像进行解码的解码设备,用于对彩色图像进行解码的解码方法,可以在计算机上读取的记录介质已经配置为执行编码方法的计算机程序,可以在计算机上读取的记录介质在配置了用于执行编码方法的计算机程序的计算机上可以读取。一种用于对彩色图像进行编码的编码方法,一种可在计算机上读取的记录介质,已配置了执行解码方法的计算机程序以及一种可在计算机上读取的记录介质,并已配置了执行以下操作的计算机程序:用于解码彩色图像的解码方法
机译: 由计算机实现的用于在机器执行一类或多类方法的过程中管理可伸缩异常的过程,一种使程序运行时电池在操作时间内所需的时间最小化的方法,以及一种由每台计算机实现以管理的系统在一台或多台计算机上执行方法时启动的异常
机译: 可用设备,例如打印机,一种计算机的访问提供方法,包括基于设备代码通过网络在计算机和可用设备之间建立连接,以及基于设备代码在计算机上安装设备驱动程序