本發(fā)明屬于計(jì)算機(jī)工程領(lǐng)域,具體涉及一種在計(jì)算機(jī)上實(shí)現(xiàn)跨人類語言寫代碼的方法。
背景技術(shù):
::當(dāng)前超文本標(biāo)記語言(HTML)的標(biāo)簽、屬性名和一些屬性值的名稱用的是英語;層疊樣式表(CSS)中的選擇器(selector)、屬性(property)、值(value)和單位(units)的名稱用的也是英語。對于許多不熟悉英語的人來說,要想編寫超文本標(biāo)記語言和層疊樣式表代碼,這些英語名稱對他們來說是有阻礙的。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:本發(fā)明針對上述現(xiàn)有技術(shù)存在的問題做出改進(jìn),即本發(fā)明公開了一種在計(jì)算機(jī)上實(shí)現(xiàn)跨人類語言寫代碼的方法。技術(shù)方案:一種在計(jì)算機(jī)上實(shí)現(xiàn)跨人類語言寫代碼的方法,包括以下步驟:(1)對于超文本標(biāo)記語言的已定義標(biāo)簽進(jìn)行處理(a1)設(shè)置瀏覽器需要識別的超文本標(biāo)記語言的標(biāo)簽、屬性名、屬性值名稱的別名,建立別名散列表;(a2)瀏覽器解析超文本標(biāo)記語言的標(biāo)簽名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到該標(biāo)簽名稱,則用其對應(yīng)的原始名稱來處理,否則,就用該標(biāo)簽名稱來處理;(a3)瀏覽器解析超文本標(biāo)記語言的屬性名名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到該屬性名名稱,則用其對應(yīng)的原始名稱來處理,否則,就用該屬性名名稱來處理(a4)瀏覽器需要比較超文本標(biāo)記語言的屬性值名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到屬性值名稱,則用它對應(yīng)的原始值名稱來處理,否則,就用該屬性值名稱來處理;(2)對于層疊樣式表的處理(b1)設(shè)置瀏覽器需要識別的層疊樣式表中的選擇器、屬性、值、單位名稱的別名,建立別名散列表;(b2)瀏覽器解析到層疊樣式表的選擇器名稱時,查詢步驟(b1)建立的別名散列表,如果能夠找到該選擇器,則用它對應(yīng)的原始名稱來處理,否則,就用該選擇器名稱來處理;(b3)瀏覽器解析到層疊樣式表的屬性名稱時,查詢步驟(b1)建立的別名散列表,如果能夠找到該屬性名稱,則用它對應(yīng)的原始名稱來處理,否則,就用該屬性名稱來處理;(b4)瀏覽器需要比較層疊樣式表的值時,查詢步驟(b1)建立的別名散列表,如果能夠找到該值,則用它對應(yīng)的原始值來處理,否則,就用該值來處理;(b5)瀏覽器需要比較層疊樣式表的單位時,查詢步驟(b1)建立的別名散列表,如果能夠找到該單位名稱,則用它對應(yīng)的原始名稱來處理,否則,就用該單位名稱來處理;(3)對于超文本標(biāo)記語言的自定義標(biāo)簽進(jìn)行處理(c1)設(shè)置自定義標(biāo)簽的標(biāo)簽名稱的別名;(c2)設(shè)置自定義標(biāo)簽的屬性名稱的別名;(c3)在注冊自定義標(biāo)簽前,設(shè)置自定義標(biāo)的標(biāo)簽名稱和屬性名稱的別名;(c4)完成自定義標(biāo)簽注冊后,設(shè)置所有用自定義標(biāo)簽的標(biāo)簽名稱的別名定義的標(biāo)簽對象,將這些標(biāo)簽對象的標(biāo)簽名修改為原始名,并修改該標(biāo)簽對象的屬性名稱,將屬性名稱改為原始名;(c5)創(chuàng)建自定義標(biāo)簽對象時,判斷標(biāo)簽名和屬性名是否是別名,如果是,則修改標(biāo)簽名和屬性名為原始名。有益效果:本發(fā)明公開的一種在計(jì)算機(jī)上實(shí)現(xiàn)跨人類語言寫代碼的方法具有以下有益效果:1、可以使用自己熟悉的人類語言來編寫HTML/CSS代碼,加上JavaScript也支持跨人類語言編程,人們就可以使用自己熟悉的語言來編寫應(yīng)用,從而可以使得編程得到普及,加上手機(jī)的普及和手機(jī)性能的提高,人們可以在手機(jī)上用自己熟悉的人類語言為計(jì)算機(jī)編程,編程成為一種基本能力。2、由于自定義標(biāo)簽的名稱和屬性可以設(shè)置別名,一種人類語言開發(fā)的自定義標(biāo)簽可以用另一種人類語言來使用,使得開發(fā)出的互聯(lián)網(wǎng)組件(WebComponents)可以用不同的人類語言使用。具體實(shí)施方式:下面對本發(fā)明的具體實(shí)施方式詳細(xì)說明。以基于已有的開源瀏覽器引擎Chromium,https://www.chromium.org/,版本49.0.2623.91為例說明。一種在計(jì)算機(jī)上實(shí)現(xiàn)跨人類語言寫代碼的方法,包括以下步驟:(1)對于超文本標(biāo)記語言的已定義標(biāo)簽進(jìn)行處理(a1)設(shè)置瀏覽器需要識別的超文本標(biāo)記語言的標(biāo)簽、屬性名、屬性值名稱的別名,建立別名散列表;在third_party/WebKit/Source/core/Init.cpp文件voidCoreInitializer::init()方法內(nèi)建立別名散列表。(a2)瀏覽器解析超文本標(biāo)記語言的標(biāo)簽名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到該標(biāo)簽名稱,則用其對應(yīng)的原始名稱來處理,否則,就用該標(biāo)簽名稱來處理;(a3)瀏覽器解析超文本標(biāo)記語言的屬性名名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到該屬性名名稱,則用其對應(yīng)的原始名稱來處理,否則,就用該屬性名名稱來處理;步驟a2和步驟a3的處理的實(shí)現(xiàn)代碼如下:修改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標(biāo)簽名。third_party/WebKit/Source/core/html/parser/HTMLToken.h的修改:-voidbeginEndTag(LCharcharacter)+voidbeginEndTag(UCharcharacter)-voidbeginEndTag(constVector<LChar,32>&characters)+voidbeginEndTag(constVector<UChar,32>&characters)-voidappendToCharacter(constVector<LChar,32>&characters)+voidappendToCharacter(constVector<UChar,32>&characters);third_party/WebKit/Source/core/html/parser/HTMLTokenizer.cpp的修改:修改boolHTMLTokenizer::nextToken(SegmentedString&source,HTMLToken&token)方法,使用這樣的方式修改,支持Unicode標(biāo)簽。-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,constTextPosition&t),做以下修改:其中方法attemptStaticAliasStringCreation()為從別名散列表讀取原始名。(a4)瀏覽器需要比較超文本標(biāo)記語言的屬性值名稱時,先查詢步驟(a1)建立的別名散列表,如果能夠找到屬性值名稱,則用它對應(yīng)的原始值名稱來處理,否則,就用該屬性值名稱來處理;步驟a4以Meta標(biāo)簽為例,需要修改third_party/WebKit/Source/core/html/HTMLMetaElement-in.cpp,方法voidHTMLMetaElement::processViewportKeyValuePair()和voidHTMLMetaElement::process()找到屬性名和屬性值名稱的原始名。(2)對于層疊樣式表的處理(b1)設(shè)置瀏覽器需要識別的層疊樣式表中的選擇器、屬性、值、單位名稱的別名,建立別名散列表;在third_party/WebKit/Source/core/Init.cpp文件voidCoreInitializer::init()方法內(nèi)建立別名散列表。(b2)瀏覽器解析到層疊樣式表的選擇器名稱時,查詢步驟(b1)建立的別名散列表,如果能夠找到該選擇器,則用它對應(yīng)的原始名稱來處理,否則,就用該選擇器名稱來處理;(b3)瀏覽器解析到層疊樣式表的屬性名稱時,查詢步驟(b1)建立的別名散列表,如果能夠找到該屬性名稱,則用它對應(yīng)的原始名稱來處理,否則,就用該屬性名稱來處理;(b4)瀏覽器需要比較層疊樣式表的值時,查詢步驟(b1)建立的別名散列表,如果能夠找到該值,則用它對應(yīng)的原始值來處理,否則,就用該值來處理;(b5)瀏覽器需要比較層疊樣式表的單位時,查詢步驟(b1)建立的別名散列表,如果能夠找到該單位名稱,則用它對應(yīng)的原始名稱來處理,否則,就用該單位名稱來處理;步驟b2~b5實(shí)現(xiàn)的代碼如下:修改文件third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp,方法CSSPropertyIDCSSParserToken::parseAsUnresolvedCSSPropertyID()const,CSSValueIDCSSParserToken::id()const,找到原始名稱。修改文件third_party/WebKit/Source/core/css/parser/CSSParserToken.h,方法boolvalueEqualsIgnoringCase(constchar*str)const,使用原始名稱來比較。修改文件third_party/WebKit/Source/core/css/parser/CSSParserValues.cpp,方法CSSParserValueList::CSSParserValueList(CSSParserTokenRangerange),使用原始名稱。修改文件third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp,方法boolCSSSelectorParser::consumeName(),使用原始名稱。(3)對于超文本標(biāo)記語言的自定義標(biāo)簽進(jìn)行處理(c1)設(shè)置自定義標(biāo)簽的標(biāo)簽名稱的別名;(c2)設(shè)置自定義標(biāo)簽的屬性名稱的別名;(c3)在注冊自定義標(biāo)簽前,設(shè)置自定義標(biāo)的標(biāo)簽名稱和屬性名稱的別名;(c4)完成自定義標(biāo)簽注冊后,設(shè)置所有用自定義標(biāo)簽的標(biāo)簽名稱的別名定義的標(biāo)簽對象,將這些標(biāo)簽對象的標(biāo)簽名修改為原始名,并修改該標(biāo)簽對象的屬性名稱,將屬性名稱改為原始名;(c5)創(chuàng)建自定義標(biāo)簽對象時,判斷標(biāo)簽名和屬性名是否是別名,如果是,則修改標(biāo)簽名和屬性名為原始名。步驟c1~c5實(shí)現(xiàn)的代碼如下:修改文件third_party/WebKit/Source/core/dom/Attribute.h,-voidparserSetName(constQualifiedName&name){m_name=name;}+voidparserSetName(constQualifiedName&name)const{m_name=name;}-QualifiedNamem_name;+mutableQualifiedNamem_name;修改文件third_party/WebKit/Source/core/dom/Document.idl,增加+voidsetElementAlias(DOMStringtype,DOMStringalias,objectattributesAlias);修改文件,third_party/WebKit/Source/core/dom/Element.h,third_party/WebKit/Source/core/dom/Element.cpp,增加修改屬性名和標(biāo)簽名的方法。修改文件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,增加設(shè)置自定義標(biāo)簽別名的方法。修改文件third_party/WebKit/Source/core/dom/custom/CustomElementRegistrationContext.cpp,在注冊和創(chuàng)建自定義標(biāo)簽時,查詢原始名稱,更新用別名創(chuàng)建的標(biāo)簽的名稱和屬性名稱。修改文件third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.h,third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.cpp,提供設(shè)置別名方法。經(jīng)過以上修改,現(xiàn)有的以下HTML/CSS代碼:就可以用類似這樣的中文來編寫:當(dāng)有用英語定義的自定義標(biāo)簽:<x-customfirst=‘三’last=‘張’/>通過調(diào)用設(shè)置標(biāo)簽和屬性的別名:document.setElementAlias([‘x-custom’,’普-自定義’],[[‘first’,'名子'],['last','姓']])就可以這樣用中文使用:<普-自定義名子=‘三’姓=‘張’/>設(shè)置不同的人類語言別名,就可以用不同的人類語言來編寫代碼。上面對本發(fā)明的實(shí)施方式做了詳細(xì)說明。但是本發(fā)明并不限于上述實(shí)施方式,在所屬
技術(shù)領(lǐng)域:
:普通技術(shù)人員所具備的知識范圍內(nèi),還可以在不脫離本發(fā)明宗旨的前提下做出各種變化。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3