SlideShare a Scribd company logo
1 of 17
Download to read offline
(12) United States Patent
Ben-Artzi et al.
USOO8762962B2
(10) Patent No.: US 8,762.962 B2
(45) Date of Patent: Jun. 24, 2014
(54)
(75)
(73)
(*)
(21)
(22)
(65)
(60)
(51)
(52)
(58)
METHODS AND APPARATUS FOR
AUTOMATIC TRANSLATION OFA
COMPUTER PROGRAMI LANGUAGE CODE
Inventors: Guy Ben-Artzi, Palo Alto, CA (US);
Yotam Shacham, Palo Alto, CA (US);
Yehuda Levi, Rishon LeZion (IL);
Russell William McMahon, Woodside,
CA (US); Amatzi Ben-Artzi, Palo Alto,
CA (US); AlexeiAlexevitch, Hertzlia
(IL); Alexander Glyakov, Petach Tikva
(IL); Tal Lavian, Sunnyvale, CA (US)
Assignee: Beek Fund B.V. L.L.C., Dover, DE (US)
Notice: Subject to any disclaimer, the term ofthis
patent is extended or adjusted under 35
U.S.C. 154(b) by 1409 days.
Appl. No.: 12/484,622
Filed: Jun. 15, 2009
Prior Publication Data
US 2009/0313613 A1 Dec. 17, 2009
Related U.S. Application Data
Provisional application No. 61/132.264, filed on Jun.
16, 2008.
Int. C.
G06F 9/45 (2006.01)
G06F II/00 (2006.01)
U.S. C.
USPC .............. 717/137; 717/143; 717/139; 714/52
Field of Classification Search
USPC .................................................. 717/136. 139
Seeapplication file forcomplete search history.
Start
-> Selecta featureofthe source programming language
(56) References Cited
U.S. PATENT DOCUMENTS
5,768,564 A * 6/1998 Andrews et al. .............. 717/137
6,317.871 B1 * 1 1/2001 Andrews et al. ... 717/137
... 717/1436,378,126 B2 * 4/2002 Tang ..................
6,886,115 B2 * 4/2005 Kondoh et al. ................. 714.52
2003. O145011 A1* 7,2003 Su et al. ......... TO7/100
2004/0031023 A1* 2,2004 Li ............... T17,140
2004/01 11694 A1* 6/2004 Wang et al. . T17/100
2004/0237072 A1* 11,2004 Geissen ..... T17,139
2005/0097514 A1* 5,2005 NuSS ....... T17,114
2006/0212859 A1* 9,2006 Parker et al. ....... T17,143
2006/0288028 A1* 12/2006 Waldvogel et al. TO7 101
2007/0234285 A1 * 10,2007 Mendoza et al. .. T17,114
2008/O141230 A1* 6/2008 Rowlett et al. ..... T17,143
2008/0216060 A1* 9/2008 Vargas ........... 717, 137
2008/0313282 A1* 12/2008 Warila et al. .................. TO9,206
2010, 0146492 A1 6/2010 Shacham et al.
* cited by examiner
Primary Examiner— Don Wong
Assistant Examiner — Mohammad Kabir
(74) Attorney, Agent, or Firm —Novak Druce Connolly
Bove + Quigg LLP
(57) ABSTRACT
Embodiments of the methods and apparatus for automatic
cross languageprogram codetranslationareprovided.Oneor
more characters ofa source programming language code are
tokenized to generate a list oftokens. Thereafter, the list of
tokens is parsed to generate a grammatical data structure
comprising one or more data nodes. The grammatical data
structure maybeanabstractsyntaxtree.Theoneormoredata
nodes of the grammatical data structure are processed to
generate a document object model comprising one or more
portable data nodes. Subsequently, the one or more portable
data nodes in the document object model are analyzed to
generate one or more characters of a target programming
language code.
51 Claims, 8 Drawing Sheets
Yes
ls the selected feature or
a similarfeature presentin
the targetprogramming
isthereanyotherfeature
in the source
programming language?
302
34
Yes
306
US 8,762.962 B2Sheet 1 of 8Jun. 24, 2014U.S. Patent
00||
J?SJECH
US 8,762.962 B2Sheet 2 of 8Jun. 24, 2014U.S. Patent
uOUuuuOO
UOUuuuOOg
uOLLILLOO
ZOZ
UOuuuuOOg
U.S. Patent Jun. 24, 2014 Sheet 3 of8 US 8,762.962 B2
Select a feature ofthe Source programming language
302
304
ls the Selected feature Or
a similarfeature present in
the target programming
language?
Retain the selected
No feature
Remove the feature of the SOur 306
programming language
C
308
310
ls there any otherfeature
in the source
programming language?
FG. 3
US 8,762.962 B2U.S. Patent
Z07
<!--IDTITETETETETT?ST?TI
US 8,762.962 B2Sheet 5 of 8Jun. 24, 2014U.S. Patent
<-]|osied|<!--
+€907
US 8,762.962 B2Sheet 6 of 8Jun. 24, 2014U.S. Patent
709
—,—[99090909
r-rer---- usuaurumuruwamaraawaauaou-uu-aa-na-u-
0||||
Z09
—4–p9090909G909[uea]puowÁÐy.JeA
i--------------~--~~~~~~~-----------------------------------------------------
US 8,762.962 B2Sheet 7 of 8Jun. 24, 2014
Z||||
U.S. Patent
U.S. Patent Jun. 24, 2014 Sheet 8 of8 US 8,762.962 B2
Tokenize one or more characters ofa source programming
language code to generate a list oftokens
Parse the list oftokens to generate an abstract syntax tree
Process the abstract syntaxtree to generate a document
object model
Analyze oneor more nodes in the documents object model
to generate one or more characters of a target
programming language Code
802
804
806
808
FIG. 8
US 8,762,962 B2
1.
METHODS AND APPARATUS FOR
AUTOMATIC TRANSLATION OFA
COMPUTER PROGRAMI LANGUAGE CODE
CROSS-REFERENCE TO RELATED
APPLICATION
This application draws priority from U.S. Provisional
Patent Application No. 61/132,264, filed on Jun. 16, 2008,
and hereby incorporated by reference herein in its entirety.
FIELD OF THE INVENTION
The invention relatesto computeraidedtranslation ofpro
gramming languages and more specifically the invention
relates to real-time automatic translation of computer pro
gramming language code.
BACKGROUND OF THE INVENTION
Various users across the globe communicate or perform
various activities on computer and device networks. More
over, the users interactwitheach otherthrough the networks,
Such as the Internet. Typically, the users use devices like
personalcomputerstointeractovertheInternet.Theuserscan
interact from various Internet websites or social networking
sites, for example, Facebook, Myspace. Hi5, and Orkut etc.
Recently, the development in mobile devices such as cell
phones, Smartphones and PDAs, computers, laptops and the
like has enabled them to be used for performing various
activities on networks such as the Internet. Moreover, the
mobile devices can be used for real-time interaction with
otherusers onthe network. The interactionorcommunication
can be in the form of chatting, playing interactive online
games, browsing, shopping, music, video, banking, business
and the like.
The rapid pace ofinnovation in technology has generated
varioustypesofdevicesandplatforms.Moreover,thenumber
ofdevices is increasing rapidly. For example, there are vari
ous operating systems available forthe devices Such as Win
dows, Linux,Macintosh,andSymbian,etc. Moreover,alarge
number of J2ME platforms are available for the mobile
devices suchascellphones. Furthermore, the mobiledevices
haveawiderageofcapabilities intermsofscreen size,Screen
type, screen resolution, processor, and memory etc. The
applications forthese devices have to be developed basedon
theirplatforms. Therefore, each application has to be ported
to other platforms. For example, in case ofcomputer games
the programming languages typically used are JAVA, CH,
C++. Action Script, and the like. Therefore, an application
developedinAction Scriptprogramming language may have
to be ported to other programming language when not Sup
ported by a device platform. Further, new applications are
beingcontinuously developed for different deviceplatforms.
Typically,theprogrammingcodeofanapplication istrans
lated manually from one programming language to another.
However, manual translation requires specific and in-depth
knowledge of the programming languages of the different
operating systems. Moreover, manual translation is a very
timeconsumingprocess. Furthermore,theprogramming lan
guages are constantly developed orget modified. Moreover,
the applications have to be developed on specific develop
ment platforms compatible with the programming language
used for development and the operating system ofa device.
Asa result,acompleted revision oftheapplication code may
be required to make the interaction possible. Some mecha
nisms, such as emulation of applications are available to
10
15
25
30
35
40
45
50
55
60
65
2
Support multipledevices. However, the existing mechanisms
generate application program codes that are large or require
heavy processingtime. Theproblem is compoundedwith the
continuously increasing number of device platforms and
technology.
A mechanism is therefore desirable to automate the task of
cross translating one programming language into another.
SUMMARY
The invention provides a method forautomatic translation
ofacomputerprogramlanguagecode.Themethodcomprises
tokenizing one or more characters ofa source programming
languagecodetogeneratealistoftokens.Thelistoftokensis
parsed to generate an abstract syntax tree, wherein the
abstractsyntaxtreecomprises oneormoredatanodes.There
after,theoneormoredatanodes oftheabstractsyntaxtreeare
processedto generate a document object model, wherein the
document object model comprises one or more portable data
nodes. Subsequently, the one or more portable data nodes in
the document object model are analyzed to generate one or
more characters ofa target programming language code.
The invention further provides a computer-implemented
method forautomatic translation ofa computerprogram lan
guage code for real-time applications. The computer imple
mented methodcomprises tokenizingone or more characters
ofa source programming language code to generate a list of
tokensbased on a setofexpression rules. The listoftokens is
parsed to generate an abstract syntax tree based on a set of
grammar rules, wherein the abstract syntax tree comprises
one or more data nodes. Thereafter, the one or more data
nodes ofthe abstract syntax tree are processed to generate a
document object model, wherein the document object model
comprises one ormoreportable nodes. Subsequently,theone
or more portable nodes of the document object model are
analyzed to generate one or more characters ofa target pro
gramming language code.
The present invention further provides an apparatus for
automatic translation ofa computerprogram language code.
Theapparatuscomprisesatokenizerconfiguredtokenizeone
ormorecharactersofasourceprogramminglanguagecodeto
generate a list oftokens. Further, the apparatus comprises a
parser configured to parse the list of tokens to generate an
abstract syntax tree, wherein the abstract syntax tree com
prises one or more data nodes; a generator configured to
processtheone or moredata nodes oftheabstractsyntaxtree
to generatea document object model, wherein the document
object modelcomprises oneormore portabledatanodes; and
an analyzer configured to process the one or more portable
data nodes in the document object model to generate one or
more characters ofa target programming language code.
The present invention further provides a computer-read
able medium having computer-executable instructions for
performing a method for language translation ofa computer
program code, said method comprisingthe steps of tokeniz
ingoneormorecharacters ofasourceprogramminglanguage
code to generate a list oftokens based on a set ofexpression
rules; parsingthe list oftokens to generatean abstract syntax
tree based on a set of grammar rule, wherein the abstract
Syntaxtree comprises oneormoredatanodes;processingthe
one ormoredata nodes oftheabstractsyntaxtreetogenerate
a document object model, wherein the document object
model comprises one or more portable nodes; and analyzing
theoneormoreportable nodesofthedocumentobject model
to generate one or more characters ofa target programming
language code.
US 8,762,962 B2
3
The present invention furtherprovides a computer-imple
mented system for automatic translation ofa computer pro
gram languagecode, comprising: means fortokenizingoneor
more characters ofa source programming language code to
generate a list oftokens; means forparsing the list oftokens
to generate an abstract syntax tree, wherein the abstract syn
tax tree comprises one or more data nodes; means for pro
cessingtheone or more data nodes oftheabstractsyntaxtree
to generatea document object model, wherein the document
object modelcomprises oneormore portabledata nodes; and
means for analyzing the one or more portable data nodes in
the document object model to generate one or more charac
ters ofa targetprogramming language code.
BRIEF DESCRIPTION OF THE DRAWINGS
Having thus described the invention in general terms, ref
erence will now be made to the accompanying drawings,
which are not necessarily drawn to scale, and wherein:
FIG. 1 is a functional overview ofan apparatus for auto
matic translation ofa source programming language code to
a target programming language, in accordance with an
embodiment ofthe invention;
FIG. 2 illustratesan exemplary feature map foraprogram
ming language code, in accordance with an embodiment of
the invention;
FIG. 3 illustrates a flowchart diagram for normalizing a
Source programming language code, in accordance with an
embodiment ofthe invention;
FIG. 4 illustrates operation ofa tokenizer, in accordance
with an embodiment ofthe invention;
FIG. 5 illustrates operation ofa parser, in accordancewith
an embodiment ofthe invention;
FIG. 6 illustrates operation ofa generator, in accordance
with an embodiment ofthe invention;
FIG. 7 illustrates operation ofan analyzer, in accordance
with an embodiment ofthe invention; and
FIG. 8 illustrates a flowchart diagram for translation ofa
Sourceprogramming languagecode to a target programming
language, in accordance with an embodiment of the inven
tion.
DETAILED DESCRIPTION OF THE INVENTION
Illustrative embodiments of the invention now will be
describedmorefully hereinafterwith reference to theaccom
panyingdrawings,in whichsome,butnotallembodiments of
theinventionareshown. Indeed,theinventionmaybeembod
ied in many different forms and should not be construed as
limited to the embodiments set forth herein; rather, these
embodiments are provided so thatthis disclosure will satisfy
applicable legal requirements. Like numbers refer to like
elements throughout.
FIG. 1 is a functional overview of an apparatus 104 for
automatic translation of a source programming language
code to a target programming language. As shown, device
102a and 102b may communicate to interactand shareinfor
mation. Devices 102a and 102b can be, but not limited to a
mobile phone, a laptop, a personal computer, a Smartphone
and thelike. Inanembodimentoftheinvention,devices 102a
and 102b are mobile devices communicating through net
work 100. Similarly, various other devices can be connected
over network 100. Devices 102a and 102b may interact with
each other by using applications such as chatting, games,
messaging, and so forth. Devices 102a-b may have different
hardwareandsoftwareplatforms. Examplesofsoftwareplat
forms include operating systems such as Windows, Linux,
5
10
15
25
30
35
40
45
50
55
60
65
4
Macintosh, Symbian,andso forth. Moreover,devices 102a-b
may have different hardware such as the screen size, Screen
resolution, audio and video functionality, processors and so
forth. Therefore, the applications executing on the devices
102a and 102b have to be compatible with the operating
systems and platform ofthese devices.
Thecompatibility oftheapplication may be maintainedby
translatingtheprogramminglanguagecodeoftheapplication
based on the platforms ofdevice 102a to 102b. Examples of
the application include Software games or rich media appli
cations. In case ofSoftware games or rich media, the devel
opmentenvironmentcanbe typically dividedintofourobject
orientedprogramming languages: C++,JAVA,Action Script,
and C#. Therefore, translation of programming language
code is generally required across these object oriented pro
gramming languages. Moreover, these object oriented pro
gramming languages share various similar features and thus
can be translated into one another. For example, each ofthe
above programming languages share the features Such as if
statement, arguments, binary expressions, and so forth.
Exemplary feature map for the above mentioned program
ming languages is explained in detail in conjunction with
FIG 2.
Apparatus 104 automatically translates the programming
language code ofthe application for devices 102a and 102b.
As shownin FIG.1,apparatus 104comprisesatokenizer106,
parser 108, a generator 110, and an analyzer 112.Apparatus
104 is hereinafter referred to as translator 104. Tokenizer 106
transforms streams of characters from the source program
minglanguagecodeintoalistoftokens. Inanembodimentof
the invention, the Source programming language is a com
puter game development language. Exemplary operation of
tokenizer 106 is explained in detail in conjunction with FIG.
4. Parser 108 analyzes the list oftokens generated by token
izer106todetermineagrammatical datastructure.Thegram
matical data structure is defined on the basis ofthe program
ming languages to be cross-translated. The grammatical data
structure is hereinafter referred to as anAbstract SyntaxTree
(AST). Exemplary operation ofparser 108 is explained in
detail in conjunction with FIG. 5. Generator 110 operates on
the AST generated by parser 108 to generate a Document
Object Model (DOM). The DOM is a simplified data struc
ture of the AST. Exemplary operation of generator 110 is
explained in detail in conjunction with FIG. 6. The DOM is
transformed by analyzer 112 into programming code of a
target programming language. Exemplary operation ofana
lyzer 112 is explained in detail in conjunction with FIG. 7.
Consequently, theprogrammingcodeofthe sourceprogram
ming languageistranslatedintotheprogrammingcode ofthe
target programming language by translator 104. In an
embodiment ofthe invention, the Source programming lan
guage is a computer game development language.
FIG. 2 shows an exemplary feature map 202 forprogram
ming languages. Differentprogramming languages comprise
different features. However, various features in the object
orientedprogramming languages maybesimilarorcommon.
Generally, a feature in one programming language can be
emulated in other programming languages. For example, a
feature in Action Script 3 (AS3) programming language, the
star notation can beemulatedby the void feature in C++
or object feature in JAVA programming language. As
anotherexample, pure virtual feature in C++ programming
language can be emulated by assert(false) feature in AS3
programming language. Moreover, the features of one pro
gramming language can be mapped equivalently to features
ofthe other programming languages withoutemulation. The
US 8,762,962 B2
5
programming languages that have common features or the
featurescanbemappedtoeachotherarereferredtoasequiva
lent programming languages.
As shown, in FIG. 2, feature map 202 is drawn for C++,
JAVA, Action Script 3 (AS3), and C# programming lan
guages. However, feature map 202 is not limited to these
programming languages only. Feature map 202 comprises
C++ features 204, JAVA features 206, AS3 features 208, and
C# features 210. C++ features 204 comprise C++ specific
features 212. Similarly, JAVAspecific features 214,AS3 spe
cific features 216, and C# specific features 218 are the fea
tures that are specific to these programming languages only.
Examples ofC++ specific features 212 include, but are not
limited to operator overloading, function overloading,
templates and so forth. Examples ofJAVA specific features
214 include, but are not limited to function overloading,
generics, iterators and so forth. Examples ofAS3 specific
features 216 include, but are not limited to rest notation,
startexpression, for-in statement and so forth. Examplesof
C# specific features 218include,butare notlimitedto reflec
tion and so forth. Programming language specific features
suchasC++ specific features212,JAVAspecific features 214,
AS3 specific features 216,andC# specific features 218, may
require different run-time environment requirements. For
example, emulating generic data types for a target program
ming language may requiresignificantcodespace. Similarly,
emulation ofa target programming language code that does
not involvethe concept ofthreads may require huge process
ing overhead. As yet another example, LISP is a program
ming language that contains various high level functional
ities. Moreover,thedesign ofLISPprogramming languageis
different from programming languages such as JAVA, C++,
C#,andthelike.Therefore,emulation ofaprogrammingcode
written in LISP may requirehuge overhead forprogramming
languagecode spaceandprocessingresources.Theprogram
ming languages that do not have common features or the
features cannot be mapped to each other are referred to as
non-equivalentprogramming languages.
As shown in FIG. 2, feature map 202 comprises common
features 220 for each ofthe programming languages. Com
mon features 220 are the features that are common to these
programming languages. Therefore, common features 220
can becross-translatedacrosstheseprogramminglanguages.
Inanembodimentofthe invention,commonfeatures220can
beemulatedacross theseprogramming languages. Examples
ofcommon features220include,butarenotlimitedto access
visibility, arguments, Boolean literal, member,
method, switch statement, if statement, and so forth.
Common features 220 can be translated between the pro
gramming languages without losingperformance, i.e., space
usage or processing resources and processing time.
Analysisofcommon features220enable theassessmentof
the portability oftheprogramming languages. Moreover, the
objectorientedprogramminglanguagescanbemadeportable
by analyzing the common features 220 and normalizing the
programming languages. The normalizing of programming
languages is discussed in conjunction with FIG. 3.
FIG. 3 illustrates a flowchart diagram for normalizing the
Source programming language according to an embodiment
ofthe invention. The Source programming language and the
target programming language include features or functions
that enable the development of rich media content applica
tions. Inan embodimentoftheinvention,thesourceprogram
ming language and the target programming language are
object oriented programming languages. The source pro
gramming language and the target programming language
may have some common features. Further, some features in
10
15
25
30
35
40
45
50
55
60
65
6
the Source programming language may be equivalent to the
features ofthe targetprogramming language. Thefeatures in
the source programming language that are common or
equivalenttothe features inthetargetprogramminglanguage
are hereinafter referred to as equivalent features. Moreover,
SomefeatureoftheSourceprogramminglanguagemay notbe
available or Supported in the target programming language.
Thefeatures oftheSourceprogramming languagethatarenot
available or Supported in the target programming language
are hereinafter referred to as non-equivalent features. In an
embodiment ofthe invention,thefeatures andcorresponding
definitions ofthe features for the source and the target pro
gramming languages are maintained in a database. The
Source programming language is normalized based on the
equivalentand non-equivalentfeatures. In an embodiment of
the invention,theprogramming languagesare normalizedby
a normalizer. The normalizer is a module in translator 104,
which processes the features of the source and the target
programming languages.
At step 302,afeatureoftheSourceprogramminglanguage
is selected. Thereafter, at step 304 it is determined if the
feature is available in the target programming language. At
step 306, the selected feature from the source programming
language is matched with the features ofthe target program
ming language. Therefore, in case an equivalent feature is
available in the target programming language, then the
equivalentfeature is retained. In anembodimentoftheinven
tion, the features are matched on the basis offeature defini
tion. In anotherembodiment ofthe invention, the featuresare
matched based on Semantic meaning ofthe definition. In yet
anotherembodimentoftheinvention,thefeaturesaremapped
based on the output received from execution ofthe features.
Incasethefeature is non-equivalenttofeatures inthetarget
programming language, then the non-equivalent feature is
removed, at step 308. In an embodimentofthe invention, the
non-equivalent features are replaced with an equivalent fea
ture ofthe target programming language.
Subsequently, at step 310 it is determined ifother features
in the Source programming language required to be pro
cessed. Thereafter, the above steps are performed iteratively
to process all the features ofthe source programming lan
guage. As a result, the source and the target programming
languages are made equivalent and can be cross-translated.
FIG. 4illustratesoperationoftokenizer106,inaccordance
with an embodiment of the invention. As shown, tokenizer
106 comprisesacollectionofregularexpressionrules404. In
an embodiment of the invention, tokenizer 106 is a lexical
analyzer. Regular expression rules 404 define a finite state
machine for tokenizer 106. Regular expression rules 404
represent patterns that may be contained in text analyzed by
tokenizer106. Exampledefinitionsofvarioustypesofregular
expressions may be:
Identifier: is a sequence ofletters a-Zor
Assignment operator: is the character =
Addition operator: is the character +
Semicolon: is the character :
Number: is a sequence ofcharacters 0-9
The programming code ofSource programming language
is processed as stream of characters by tokenizer 106. An
input stream 402 ofcharacters representan expression in the
Sourceprogramming code: Sum=2+3;.As shown in FIG. 2,
input stream 402 comprises the regular expression as input
characters S.u.m.-2,+.3,and ;. Input stream 402 is
scanned one input character at a time by tokenizer 106. The
scanned inputstream 402 isprocessed on thebasis ofregular
expression rules 404. As a result, a list of tokens 406 is
US 8,762,962 B2
7
generated. Therefore, every timea rule in regularexpression
rules404iscompleteda new token is added totheoutputlist.
In an embodiment of the invention, list of tokens 406
comprises columns of token list 408a and token type list
408b. Token list 408a comprises the tokens generated from
input stream 402 and the token type list 408b comprises the
description forthetypeoftokens.Tokens in listoftokens406
are categorized block oftext. Referring to list oftokens 406,
thetoken Sum in tokens408a is definedby tokenizer 106 as
an identifier in type408b. Similarly,thecompleteprogram
ming code ofthe Source programming language can be pro
cessed to form a list oftokens. Subsequently, list oftokens
406 is processed by parser 108 to generate structured infor
mation.
FIG. 5 illustrates operation of parser 108, in accordance
with an embodiment of the invention. List of tokens 406
generatedby tokenizer106 does notprovide any information
on contextual correctness ofthe tokens. Therefore, the order
of tokens in the list may not be contextually correct. For
example, theexpression Sum3+=2; is not a correct expres
Sion. However,this expression can beprocessedby tokenizer
106 to generate a list of tokens. Parser 108 analyzes list of
tokens 406 generatedby tokenizer 106. In an embodimentof
theinvention,parser108performssyntacticanalysisoflistof
tokens 406. Parser 108 can implement top-down parsing, in
an embodiment ofthe invention. Therefore, tokens in list of
tokens 406 are consumed from left to right. In another
embodimentoftheinvention, parser 108can implementbot
tom-up parsing. Therefore, parser 108 locates the basic ele
ments in list of tokens 406 and then locates the elements
containing the basic elements.
Parser 108 analyzes list of tokens 406 to generate an
Abstract SyntaxTree (AST) 502. AST 502 is a grammatical
data structureanddefines the relationshipbetweenthetokens
in listoftokens406. AST502 isgeneratedbasedongrammar
rules defined in parser 108. The grammar defined in parser
108 can be context-free grammar or attribute grammar.
Exemplary grammar rules in parser 108 include:
Assignment Statement<-Identifier-Expression;
Expressions-Literal OR Binary Expression
Binary Expressions-Expression Operator Expression
Literale-Number OR Identifier
The arrows in the above rules indicate the direction of the
pattern matching reduction. Therefore, based on the above
example a statement such as Sum=3+2 is termed as an
assignmentstatement.Similarly,basedontheaboverules,the
statement 3+2 is termed as a Binary Expression.
The grammar rules in parser 108 can be recursive. There
fore, one or more rules may be applied recursively on an
expression to prepare AST 502. AST 502 comprises data
nodes 504. Data nodes 504 comprisea hierarchal data struc
ture that represents the structure of the program code. For
example, data node 504c comprises binary expression and
datanodes504d. 504e,and504fcomprisenumberandopera
tor, which aresubsetsofthebinary expression. Inan embodi
ment oftheinvention,thegrammarrules can reference token
definition rules to define data nodes ofAST 502. Therefore,
AST 502 comprises structural information and relation
between data nodes 504. In an embodiment ofthe invention,
parser108canbeprogrammedbasedonthe rules requiredfor
analyzing list oftokens 406.
FIG. 6 illustratesoperation ofgenerator110,inaccordance
withanembodimentoftheinvention. Generator110 operates
on AST 602 to generate a Document Object Model (DOM)
604. DOM 604 is a simplified data structure ofAST 602. As
shown in FIG. 6, AST 602 is an exemplary data structure
representation ofa variable declaration in theAction Script 3
10
15
25
30
35
40
45
50
55
60
65
8
(AS3) programming language. The variable declaration for
this example in ASH programming language is vari:int;.
Datanode 606aofAST602 is referredtoastheparentnode
ofdata nodes 606b, 606c, and 606d. Generator 110 analyzes
AST 602 to identify portable data nodes. Data nodes 606a-d
in AST 602 comprises meta structure and metadata of the
programming code. However, the metadata may not be
required forgeneration ofDOM 604, as the meta-structure is
deduced from the other data nodes in AST 602. Therefore,
data node 606b is removed by generator 110, because data
node 606a isadeclaration nodeandthe meta-structure ofdata
node 606b can bededuced from node 606a.Therefore, DOM
604 contains only portable data nodes from AST 602. As a
result, DOM 604 includes a simple data structure of the
programming code and is generic to any programming lan
guage. Theabove example explains the operation ofgenera
tor 110 from the perspective ofAS3 programming language.
However, the same process can essentially be performed on
anASTdevelopedforanyprogramminglanguagecodeandis
not limited to any particularprogramming language code.
FIG. 7 shows operation ofanalyzer 112 according to an
exemplary embodiment ofthe invention. Analyzer 112 pro
cesses a document object model to generate programming
code in thetarget programming language. Analyzer 112 pro
cesses thestructureofDOM 604totranslate theinputcodeof
Source programming language into an output code 702 cor
respondingtothetargetprogramminglanguage.Output code
702 is generatedbased on the features ofthe target program
ming language. For example, output code 702 may be inti
in case the target programming language is JAVA. Analyzer
112 processes the portable data nodes of DOM 604 in a
standard depth first manner. Therefore, as shown for DOM
604, portable data node 606a, which is the parent node, is
processed first followed by portable data nodes 606c and
606d.
Analyzer 112 processes nodes 606 to generate tokens cor
responding to a DOM node in the target programming lan
guage code. In an embodiment ofthe invention, to generate
DOM of the target programming language, analyzer 112
executes functions that mapbetweenthemeta-structureofthe
Source programming language feature and the character
streamofthetargetprogramminglanguage.Therefore, DOM
604 is parsedto generatean abstract syntax tree and thereaf
ter, theabstractsyntaxtreeisconvertedtoprogramming code
ofthe target programming language by analyzer 112. In an
embodimentofthe invention,theprocessingby analyzer 112
comprises recursive scanning of DOM 604 to generate the
targetprogramming languagecode. Examplepseudo-code of
functionsthatanalyzer112executesfortranslating DOM604
to AS3 or Java are discussed below:
Example 1
Functions for Conversion ofDOM 604 to Java
Programming Language
Function DeconstructASTToJava(node)
If(node is oftype Declaration)
Print(DeconstructDeclarationToJava(node))
Else
Function DeconstructDeclarationToljava (node)
1 Print(DeconstructType(node.getChild(1)));
US 8,762,962 B2
-continued
11 Print(**):
12 Print(DeconstructName(node.getChild(O)));
13 Print(":");
14
Analyzer112 may run thefunctions in example 1 on DOM
604to generateoutputcode 702. As shown in example 1, the
function DeconstructASTToJava(node)isdefinedinthelines
1 to 7. This function reads the parent node of DOM 604,
which is portable data node 606a and calls the function
DeconstructDeclarationToljava(node) definedinthelines8to
14,whenportabledatanode606aisa typeofdeclaration.The
function DeconstructDeclarationToljava(node) reads the
child nodes in DOM 604,whichareportabledata nodes 606c
and 606d. Subsequently, the function DeconstructDeclarati
onToljava(node) generates output code 702. In this case out
putcode702is inti;,whichisaproperintegerdeclarationin
JAVA programming language. Similarly, various otherfunc
tionscanbewrittentoanalyzeothertypesofdatanodesin the
tree structure of DOM 604 and completely translate source
programming languagecodetotargetprogramming language
code.
Example 2
Functions for Conversion of DOM 604 to
ActionScript3 Programming Language
1 Function DeconstructASTToAS3 (node)
2 {
3 If(node is oftype Declaration)
4 Print(DeconstructDeclarationToAS3(node));
5 Else
6
7
8 Function DeconstructDeclarationToAS3 (node)
9 {
10 Print(“var);
11 Print(DeconstructType(node.getChild(1)));
12 Print(":");
13 Print(DeconstructName(node.getChild.(2)));
14 Print(":");
15
Analyzer112 may run thefunctions in example 2 on DOM
604to generateoutputcode 702. As shown in example 2, the
function DeconstructASTToAS3(node)isdefinedinthelines
1 to 7. This function reads the parent node of DOM 604,
which is portable data node 606a and calls the function
DeconstructDeclarationToAS3(node)definedinthe lines8to
15,whenportabledatanode606aisa typeofdeclaration.The
function DeconstructDeclarationToAS3(node) reads the
child nodes in DOM 604,whichareportabledata nodes 606c
and 606d. Subsequently, the function DeconstructDeclarati
onToAS3(node) generates outputcode 702. In this case out
put code 702 is var: inti;, which is a proper integer decla
ration in AS3 programming language. Similarly, various
other functions can be written to analyze other types ofdata
nodesinthetree structureofDOM 604andcompletely trans
late source programming language code to target program
ming language code. In an embodiment of the invention,
DOM 604 can be analyzed to generate an output code in any
otherequivalent programming language.
FIG. 8 illustrates a flowchart diagram forcross translation
of the source programming language code to a target pro
gramminglanguagecode,inaccordancewithanembodiment
10
15
25
30
35
40
45
50
55
60
65
10
ofthe invention. At step 802, an input stream ofoneor more
characters of a source programming language code is
received at tokenizer 106. Subsequently, the input stream is
analyzedlexicallytogeneratealistoftokens. Examples ofthe
characters in the input stream include alphabets, numerals,
special characters, mathematical operators, their combina
tion and so forth. In an embodiment of the invention, the
characters are processed sequentially to generate the list of
tokens.
The order oftokens in the list oftokens may not be con
textually correct. Therefore, the list oftoken is analyzed syn
tactically by parser108 to generateagrammatical data struc
ture, at step 804. In an embodiment of the invention, the
grammatical datastructureisahierarchical datastructureand
is referred toasanAbstractSyntaxTree (AST). Thereafter,at
step806, theASTisprocessedby generator110 togeneratea
document object model. Document object model is a simpli
fiedgrammaticaldatastructureinahierarchicaldatastructure
format. Subsequently, the document object model is pro
cessedbyanalyzer 112to generate atargetlistoftokens. The
target listoftokensis thereafterprocessed byanalyzer 112 to
generatethe targetprogramming language code, at Step 808.
Embodiments of the invention are described above with
reference to block diagrams and Schematic illustrations of
methodsandsystemsaccordingtoembodimentsoftheinven
tion. Itwillbeunderstoodthateach blockofthediagramsand
combinations ofblocks in the diagrams can be implemented
by computerprogram instructions. These computerprogram
instructions maybe loadedonto oneormoregeneralpurpose
computers, special purpose computers, or other program
mable data processing translator to produce machines. Such
thattheinstructions which executeonthe computers orother
programmable data processing translator create means for
implementing the functions specified in the block orblocks.
Such computer program instructions may also be stored in a
computer-readable memory that can direct a computer or
otherprogrammable data processingapparatus to function in
a particular manner, Such that the instructions stored in the
computer-readable memory produce an article of manufac
tureincluding instruction means that implement the function
specified in theblockorblocks. Furthermore, such computer
program instructions may be made available for download
and/or downloaded over a communication network.
While the invention has been described in connection with
what is presently considered to be the most practical and
variousembodiments,itis to be understood thattheinvention
is not to be limited to the disclosed embodiments, but on the
contrary, is intended to cover various modifications and
equivalentarrangements included within the spiritand scope
ofthe appended claims.
This written description uses examples to disclose the
invention, including the best mode, and also to enable any
person skilled in the art to practice the invention, including
makingand usingany devices orsystemsandperformingany
incorporated methods. The patentable scope the invention is
defined in the claims, and may include other examples that
occur to those skilled in the art. Such other examples are
intended to be within the scope of the claims if they have
structuralelements thatdo notdifferfrom theliterallanguage
oftheclaims, orifthey includeequivalentstructuralelements
with insubstantial differences from the literal languages of
the claims.
We claim:
1. A method, executedbyelectroniccomputerhardware in
combination with Software, for automatic translation of a
computer program language code, comprising:
US 8,762,962 B2
11
tokenizing one or more characters of a source program
ming language code to generate a list oftokens;
parsing the list oftokens to generate a grammatical data
structure, wherein the grammatical data structure com
prises one or more data nodes;
processing the one or more data nodes ofthegrammatical
data, structure to generate a document object model,
wherein the document object model comprises one or
more portable data nodes; and
analyzing the oneormoreportable data nodes in the docu
ment objectmodelto generateone ormorecharactersof
a target programming language code:
normalizing the source programming language, wherein
one or more features of the source programming lan
guageare managedbasedon one or more features ofthe
target programming language, comprising:
identifying one or more non-equivalent and one or more
equivalent features from the oneor more features in the
Sourceprogramminglanguage, whereintheoneormore
non-equivalent features and the one or more equivalent
features are identified based on the one or more features
ofthe target programming language; and
removing the one or more non-equivalent features ofthe
Source programming language;
wherein equivalentfeaturesarefeaturesthatareconfigured
tobe mappedthe Sourceprogramminglanguageandthe
target programming language.
2. The method ofclaim 1, wherein the grammatical data
structure comprises an abstract syntax tree.
3.The methodofclaim 1,whereinthesourceprogramming
language and the target programming language are object
oriented programming languages.
4.The methodofclaim 1,whereinthesourceprogramming
languageandthe targetprogramming languagecompriseone
or more equivalent features.
5. The methodofclaim 1, furthercomprisingdownloading
computer-executable instructions that, ifexecuted by a com
puting device, cause the computing device to execute said
normalizing.
6. The method ofclaim 1 wherein normalizing the source
programming language comprises:
identifying one or more non-equivalent features from the
one or more features in the Source programming lan
guage, wherein the one or more non-equivalent features
are identified based on the one or more features of the
target programming language; and
replacingthe one or more non-equivalentfeatures with the
one or more equivalent features ofthe source program
ming language.
7. The methodofclaim 1 furthercomprisingemulatingthe
Source programming language, wherein one or more non
equivalent features ofthe Source programming language are
emulated.
8. The method ofclaim 1, wherein tokenizing comprises
processingthe oneormore characters ofthesourceprogram
ming language code based on a set ofexpression rules.
9. The method ofclaim 1, wherein parsing comprises pro
cessing the list oftokens based on a set ofgrammar rules.
10. A method, executed by electronic computer hardware
in combination with Software, for automatic translation ofa
computer program language code, comprising:
tokenizing one or more characters of a source program
ming language code to generate a list oftokens;
parsing the list oftokens to generate a grammatical data
structure, wherein the grammatical data structure com
prises one or more data nodes;
10
15
25
30
35
40
45
50
55
60
65
12
processingthe one or more data nodes ofthegrammatical
data structure to generate a document object model,
wherein the document object model comprises one or
more portable data nodes; and
analyzingthe oneormoreportabledata nodes in thedocu
ment objectmodelto generateoneormorecharacters of
a target programming language code:
wherein processing the one or more data nodes of the
grammatical data structure comprises:
scanning the one or more data nodes in the grammatical
data structure to identify one or more metadata nodes
having a metadata structurethat canbe deducedfrom at
least one declaration node; and
removing the one or more metadata nodes to generate the
one or more portable data nodes, wherein the portable
data nodes have a metadata structure that cannot be
deduced from at least one declaration node.
11. The method ofclaim 1, wherein analyzing the one or
moreportabledata nodes inthedocument objectmodelcom
prises:
processingrecursively the oneormoreportable data nodes
in the document object model to generateatarget list of
tokens; and
analyzing the target list oftokens to generate the one or
more characters of the target programming language
code.
12. The method ofclaim 1, further comprising download
ing computer-executable instructions that, if executed by a
computing device, cause the computing device to execute
said tokenizing.
13. The method ofclaim 1, further comprising download
ing computer-executable instructions that, if executed by a
computing device, cause the computing device to execute
said parsing.
14. The method ofclaim 1, further comprising download
ing computer-executable instructions that, if executed by a
computing device, cause the computing device to execute
said processing.
15. An apparatus including electronic computer hardware
in combination with Software, for automatic translation ofa
computerprogram language code, theapparatus comprising:
a tokenizer configured to tokenize one or more characters
of a source programming language code to generate a
list oftokens;
aparser configured to parsethe list oftokens to generatea
grammatical data structure, wherein the grammatical
data structure comprises one or more data nodes;
a generator configured to process the one or more data
nodes of the grammatical data structure to generate a
document object model, wherein the document object
model comprises one or more portable data nodes; and
an analyzerconfiguredto processtheoneormoreportable
datanodes inthedocumentobject modeltogenerateone
or more characters of a target programming language
code
wherein the generator is furtherconfigured to:
Scan the one or more data nodes in the abstract syntax
treeto identify one or more metadata nodes having a
metadata structure that can be deduced from at least
one declaration node; and
remove the one or more metadata nodes to generatethe
one or more portable data nodes having a metadata
structure that cannot be deduced from at least one
declaration node.
16. The apparatus ofclaim 15, wherein the source pro
gramming language and the target programming language
comprise one or more equivalent features.
US 8,762,962 B2
13
17. An apparatus including electronic computer hardware
in combination with Software, for automatic translation ofa
computerprogram language code, theapparatus comprising:
a tokenizer configured to tokenize one or more characters
ofa source programming language code to generate a
list oftokens;
aparser configuredto parsethe list oftokens to generate a
grammatical data structure, wherein the grammatical
data structure comprises one or more data nodes;
a generator configured to process the one or more data
nodes of the grammatical data structure to generate a
document object model, wherein the document object
model comprises one or more portable data nodes; and
an analyzer configured to process the one or more portable
data nodes in the document object model to generate one or
more characters ofa target programming language code:
a normalizer configured to:
identify one or more non-equivalent and one or more
equivalent features from the one or more features in
thesourceprogramminglanguage,whereintheone or
more non-equivalent features and the one or more
equivalent features are identified based on the one or
more features of the target programming language;
and
remove the one or more non-equivalent features ofthe
Source programming language;
wherein equivalent features are features that can be
mappedbetween the Sourceprogramminglanguageand
the target programming language.
18. The apparatus ofclaim 17, wherein the normalizer is
further configuredto remove the one or more non-equivalent
features ofthe sourceprogramming language.
19. Theapparatus ofclaim 15, wherein the tokenizercom
prises a finite State machine.
20. The apparatus ofclaim 15, wherein the grammatical
data structure comprises an abstract syntax tree.
21. The apparatus ofclaim 15, wherein the tokenizer is
configuredtoprocesstheoneormorecharactersoftheSource
programming language code based on a set of expression
rules.
22. The apparatus ofclaim 15, wherein the parser is con
figuredtoprocessthelistoftokensbased on a setofgrammar
rules.
23. The apparatus ofclaim 15, wherein the generator is
configured to scan the one or more data nodes in the gram
matical data structure to identify one or more portable data
nodes.
24. The apparatus of claim 15, wherein the analyzer is
configured to recursively process the one or more portable
data nodes in the document object model to generate a target
list oftokens.
25.Theapparatus ofclaim 15, furthercomprisingan emu
latorconfigured toemulate oneormorefeatures non-equiva
lent ofthe source programming language.
26. The apparatus ofclaim 15, wherein the one or more
data nodes intheabstractsyntaxtree representagrammatical
data structure ofthe list oftokens.
27. The apparatus of claim 15, wherein the analyzer is
further configured to:
process recursively the one or moreportable data nodes in
the document object model to generate a target list of
tokens; and
analyzethetargetlistoftokens togeneratetheone ormore
characters ofthe targetprogramming language code.
28. The apparatus ofclaim 15, wherein the source pro
gramminglanguageandthetargetprogramminglanguageare
object orientedprogramming languages.
5
10
15
25
30
35
40
45
50
55
60
65
14
29. A non-transitory computer-readable medium having
computer-executable instructions for performing a method
for language translation ofa computer program code, said
method comprising:
tokenizing one or more characters ofa source program
ming languagecodeto generatealistoftokensbased on
a set ofexpression rules;
parsing the list oftokens to generate a grammatical data
structure based on a set ofgrammar rule, wherein the
grammatical data structure comprises one or more data
nodes;
processingthe one or more data nodes ofthegrammatical
data structure to generate a document object model,
wherein the document object model comprises one or
more portable nodes; and
analyzing the one ormoreportable nodes ofthe document
object model to generate one or more characters ofa
target programming language code:
wherein processing the one or more data nodes of the
grammatical data structure comprises:
Scanning the oneormore data nodes inthegrammatical
data structureto identify one ormore metadata nodes
havinga metadatastructurethatcanbe deducedfrom
at least one declaration node; and
removing the one or more metadata nodes to generate
theoneormoreportabledatanodeshavingametadata
structure that cannot be deduced from at least one
declaration node.
30. The computer-readable medium ofclaim 29, wherein
the grammatical data structure comprises an abstract syntax
tree.
31. The computer-readable medium ofclaim 29, wherein
the list oftokens is parsed based on a set ofgrammar rules.
32. The computer-readable medium ofclaim 29, wherein
the Sourceprogramming languageis acomputer-gamedevel
opment language.
33. The computer-readable medium ofclaim 29, wherein
analyzing the one or more portable data nodes in the docu
ment object model comprises:
processingrecursively the oneormoreportable data nodes
in the document object model to generateatarget list of
tokens; and
analyzing the target list oftokens to generate the one or
more characters of the target programming language
code.
34. The computer-readable medium ofclaim 29, wherein
the Source programming language and the target program
ming language are object oriented programming languages.
35. A system including electronic computer hardware in
combination with Software, for automatic translation of a
computer program language code, comprising:
means for tokenizing one or more characters ofa source
programming language codeto generatea list oftokens;
meansforparsingthelistoftokenstogenerateagrammati
cal data structure, wherein the grammatical data struc
ture comprises one or more data nodes;
means for processing the one or more data nodes of the
grammatical data structure to generate a document
object model, wherein the documentobject model com
prises one or more portable data nodes; and
means foranalyzingtheoneormore portabledatanodesin
the document object model to generate one or more
characters ofa target programming language code;
wherein the means for processing the grammatical data
structure comprises:
means for Scanning the one or more data nodes in the
grammatical data structure to identify one or more
US 8,762,962 B2
15
metadata nodeshaving metadata structurethat canbe
deduced from at least one declaration node; and
means forremovingthe one or more metadata nodes to
generatetheoneormoreportabledata nodeshavinga
metadata structure that cannot be deduced from at
least one declaration node.
36.The system ofclaim 35, wherein the grammatical data
structure comprises an abstract syntax tree.
37. The system of claim 35, wherein the list of tokens
comprises one or morecategorizedblocks ofthe one ormore
characters ofthe Source programming language code.
38. The system ofclaim 35, wherein the source program
ming language is a computer-game development language.
39. The system ofclaim 35, wherein the target program
ming language is a computer-game development language.
40. The system ofclaim 35 further comprising means for
normalizing the Sourceprogramming language, wherein one
or more features of the Source programming language are
managedbasedononeormorefeaturesofthetargetprogram
ming language.
41.Thesystemofclaim40, wherein the meansfornormal
izing the source programming language comprises:
means foridentifying oneormore non-equivalentand one
or more equivalent features from the one or more fea
tures in the Source programming language, wherein the
oneormorenon-equivalentfeaturesandthe oneormore
equivalent features are identified based on the one or
more features ofthetargetprogramming language; and
means for removing the one or more non-equivalent fea
tures ofthe Source programming language.
42.Thesystem ofclaim 35, wherein the means foranalyz
ing the one or more portable data nodes in the document
object model comprises:
means forprocessing recursively the one or moreportable
data nodes in the document object model to generate a
target list oftokens; and
5
10
15
25
30
16
means foranalyzingthetargetlistoftokensto generatethe
one or more characters ofthe target programming lan
guage code.
43. The system ofclaim 35, wherein the source program
ming language and the target programming language are
object orientedprogramming languages.
44. The method ofclaim 1, wherein the grammatical data
structure defines a relationship between tokens in the list of
tokens.
45. The method of claim 1, wherein the grammar rules
applied in theparsing togeneratethegrammatical data struc
ture can be context-free grammarorattribute grammar.
46. The apparatus of claim 15, wherein the grammatical
data structuredefinesa relationshipbetween tokens in thelist
oftokens.
47.Theapparatusof15,whereinthegrammarrulesapplied
by the parser to generate the grammatical data structure can
be context-free grammar orattribute grammar.
48. The computer readable medium ofclaim 29, wherein
thegrammatical datastructuredefinesarelationship between
tokens in the list oftokens.
49.Thecomputerreadable mediumofclaim 1,whereinthe
grammar rules applied in the parsing to generate the gram
matical data structure can be context-free grammar or
attribute grammar.
50. The system ofclaim 35, wherein thegrammatical data
structure defines a relationship between tokens in the list of
tokens.
51. The system ofclaim 35, wherein the grammar rules
appliedbythe means forparsing togeneratethegrammatical
data structure canbecontext-freegrammarorattributegram
a.

More Related Content

Similar to Methods and apparatus for automatic translation of a computer program language code

2010 tool forum ata handout
2010 tool forum ata handout2010 tool forum ata handout
2010 tool forum ata handoutascetlan
 
Efficient communication techniques
Efficient communication techniquesEfficient communication techniques
Efficient communication techniquesTal Lavian Ph.D.
 
Ease of full Stack Development
Ease of full Stack DevelopmentEase of full Stack Development
Ease of full Stack DevelopmentIRJET Journal
 
software History
software Historysoftware History
software HistoryAvinash Avi
 
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...iosrjce
 
Mobility & Data Strategies
Mobility & Data StrategiesMobility & Data Strategies
Mobility & Data StrategiesSam Basu
 
2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdfAlexKarasulu1
 
Full Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeFull Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeIRJET Journal
 
Data Security String Manipulation by Random Value in Hypertext Preprocessor
Data Security String Manipulation by Random Value in Hypertext PreprocessorData Security String Manipulation by Random Value in Hypertext Preprocessor
Data Security String Manipulation by Random Value in Hypertext Preprocessorijtsrd
 
Voice based web browser
Voice based web browserVoice based web browser
Voice based web browserSowndaryaP
 
Ken Rehor's presentation at eComm 2008
Ken Rehor's presentation at eComm 2008Ken Rehor's presentation at eComm 2008
Ken Rehor's presentation at eComm 2008eComm2008
 
SATISH NAKKA-04222015
SATISH NAKKA-04222015SATISH NAKKA-04222015
SATISH NAKKA-04222015Satish Nakka
 
Net framework
Net frameworkNet framework
Net frameworksumit1503
 
Generation of strings in language for given Regular Expression and printing i...
Generation of strings in language for given Regular Expression and printing i...Generation of strings in language for given Regular Expression and printing i...
Generation of strings in language for given Regular Expression and printing i...IRJET Journal
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentationguest0df6b0
 

Similar to Methods and apparatus for automatic translation of a computer program language code (20)

2010 tool forum ata handout
2010 tool forum ata handout2010 tool forum ata handout
2010 tool forum ata handout
 
Ch8
Ch8Ch8
Ch8
 
Efficient communication techniques
Efficient communication techniquesEfficient communication techniques
Efficient communication techniques
 
Ease of full Stack Development
Ease of full Stack DevelopmentEase of full Stack Development
Ease of full Stack Development
 
software History
software Historysoftware History
software History
 
D017372538
D017372538D017372538
D017372538
 
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...
A Generic Open Source Framework for Auto Generation of Data Manipulation Comm...
 
Mobility & Data Strategies
Mobility & Data StrategiesMobility & Data Strategies
Mobility & Data Strategies
 
2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf
 
Full Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeFull Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future Scope
 
10.1.1.510.6198
10.1.1.510.619810.1.1.510.6198
10.1.1.510.6198
 
Simrat Resume
Simrat ResumeSimrat Resume
Simrat Resume
 
Data Security String Manipulation by Random Value in Hypertext Preprocessor
Data Security String Manipulation by Random Value in Hypertext PreprocessorData Security String Manipulation by Random Value in Hypertext Preprocessor
Data Security String Manipulation by Random Value in Hypertext Preprocessor
 
ResumeCurrent
ResumeCurrentResumeCurrent
ResumeCurrent
 
Voice based web browser
Voice based web browserVoice based web browser
Voice based web browser
 
Ken Rehor's presentation at eComm 2008
Ken Rehor's presentation at eComm 2008Ken Rehor's presentation at eComm 2008
Ken Rehor's presentation at eComm 2008
 
SATISH NAKKA-04222015
SATISH NAKKA-04222015SATISH NAKKA-04222015
SATISH NAKKA-04222015
 
Net framework
Net frameworkNet framework
Net framework
 
Generation of strings in language for given Regular Expression and printing i...
Generation of strings in language for given Regular Expression and printing i...Generation of strings in language for given Regular Expression and printing i...
Generation of strings in language for given Regular Expression and printing i...
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentation
 

More from Tal Lavian Ph.D.

Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Photonic line sharing for high-speed routers
Photonic line sharing for high-speed routersPhotonic line sharing for high-speed routers
Photonic line sharing for high-speed routersTal Lavian Ph.D.
 
Systems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkSystems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkTal Lavian Ph.D.
 
Systems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuSystems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuTal Lavian Ph.D.
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resourcesTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Systems and methods for electronic communications
Systems and methods for electronic communicationsSystems and methods for electronic communications
Systems and methods for electronic communicationsTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Tal Lavian Ph.D.
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resourcesTal Lavian Ph.D.
 
Method and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkMethod and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkTal Lavian Ph.D.
 
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...Tal Lavian Ph.D.
 
Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...Tal Lavian Ph.D.
 
Reliable rating system and method thereof
Reliable rating system and method thereofReliable rating system and method thereof
Reliable rating system and method thereofTal Lavian Ph.D.
 
Time variant rating system and method thereof
Time variant rating system and method thereofTime variant rating system and method thereof
Time variant rating system and method thereofTal Lavian Ph.D.
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 

More from Tal Lavian Ph.D. (20)

Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Photonic line sharing for high-speed routers
Photonic line sharing for high-speed routersPhotonic line sharing for high-speed routers
Photonic line sharing for high-speed routers
 
Systems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkSystems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a network
 
Systems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuSystems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menu
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resources
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Systems and methods for electronic communications
Systems and methods for electronic communicationsSystems and methods for electronic communications
Systems and methods for electronic communications
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resources
 
Method and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkMethod and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay network
 
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...
 
Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...
 
Reliable rating system and method thereof
Reliable rating system and method thereofReliable rating system and method thereof
Reliable rating system and method thereof
 
Time variant rating system and method thereof
Time variant rating system and method thereofTime variant rating system and method thereof
Time variant rating system and method thereof
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menu
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 

Recently uploaded

Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service GayaGaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service Gayasrsj9000
 
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhisoniya singh
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...anilsa9823
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...Suhani Kapoor
 
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...nagunakhan
 
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...Pooja Nehwal
 
Vip Noida Escorts 9873940964 Greater Noida Escorts Service
Vip Noida Escorts 9873940964 Greater Noida Escorts ServiceVip Noida Escorts 9873940964 Greater Noida Escorts Service
Vip Noida Escorts 9873940964 Greater Noida Escorts Serviceankitnayak356677
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...Call Girls in Nagpur High Profile
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...ranjana rawat
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一zul5vf0pq
 
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...Call Girls in Nagpur High Profile
 
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一ga6c6bdl
 
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一ga6c6bdl
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...Pooja Nehwal
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Pooja Nehwal
 

Recently uploaded (20)

Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service GayaGaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
 
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(ANIKA) Wanwadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
young call girls in Sainik Farm 🔝 9953056974 🔝 Delhi escort Service
young call girls in Sainik Farm 🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Sainik Farm 🔝 9953056974 🔝 Delhi escort Service
young call girls in Sainik Farm 🔝 9953056974 🔝 Delhi escort Service
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
 
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...
VIP Call Girls Kavuri Hills ( Hyderabad ) Phone 8250192130 | ₹5k To 25k With ...
 
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
 
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
 
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service -  Bandra F...
WhatsApp 9892124323 ✓Call Girls In Khar ( Mumbai ) secure service - Bandra F...
 
Vip Noida Escorts 9873940964 Greater Noida Escorts Service
Vip Noida Escorts 9873940964 Greater Noida Escorts ServiceVip Noida Escorts 9873940964 Greater Noida Escorts Service
Vip Noida Escorts 9873940964 Greater Noida Escorts Service
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
 
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
 
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单留信学历认证原版一比一
 
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一
如何办理萨省大学毕业证(UofS毕业证)成绩单留信学历认证原版一比一
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
 

Methods and apparatus for automatic translation of a computer program language code

  • 1. (12) United States Patent Ben-Artzi et al. USOO8762962B2 (10) Patent No.: US 8,762.962 B2 (45) Date of Patent: Jun. 24, 2014 (54) (75) (73) (*) (21) (22) (65) (60) (51) (52) (58) METHODS AND APPARATUS FOR AUTOMATIC TRANSLATION OFA COMPUTER PROGRAMI LANGUAGE CODE Inventors: Guy Ben-Artzi, Palo Alto, CA (US); Yotam Shacham, Palo Alto, CA (US); Yehuda Levi, Rishon LeZion (IL); Russell William McMahon, Woodside, CA (US); Amatzi Ben-Artzi, Palo Alto, CA (US); AlexeiAlexevitch, Hertzlia (IL); Alexander Glyakov, Petach Tikva (IL); Tal Lavian, Sunnyvale, CA (US) Assignee: Beek Fund B.V. L.L.C., Dover, DE (US) Notice: Subject to any disclaimer, the term ofthis patent is extended or adjusted under 35 U.S.C. 154(b) by 1409 days. Appl. No.: 12/484,622 Filed: Jun. 15, 2009 Prior Publication Data US 2009/0313613 A1 Dec. 17, 2009 Related U.S. Application Data Provisional application No. 61/132.264, filed on Jun. 16, 2008. Int. C. G06F 9/45 (2006.01) G06F II/00 (2006.01) U.S. C. USPC .............. 717/137; 717/143; 717/139; 714/52 Field of Classification Search USPC .................................................. 717/136. 139 Seeapplication file forcomplete search history. Start -> Selecta featureofthe source programming language (56) References Cited U.S. PATENT DOCUMENTS 5,768,564 A * 6/1998 Andrews et al. .............. 717/137 6,317.871 B1 * 1 1/2001 Andrews et al. ... 717/137 ... 717/1436,378,126 B2 * 4/2002 Tang .................. 6,886,115 B2 * 4/2005 Kondoh et al. ................. 714.52 2003. O145011 A1* 7,2003 Su et al. ......... TO7/100 2004/0031023 A1* 2,2004 Li ............... T17,140 2004/01 11694 A1* 6/2004 Wang et al. . T17/100 2004/0237072 A1* 11,2004 Geissen ..... T17,139 2005/0097514 A1* 5,2005 NuSS ....... T17,114 2006/0212859 A1* 9,2006 Parker et al. ....... T17,143 2006/0288028 A1* 12/2006 Waldvogel et al. TO7 101 2007/0234285 A1 * 10,2007 Mendoza et al. .. T17,114 2008/O141230 A1* 6/2008 Rowlett et al. ..... T17,143 2008/0216060 A1* 9/2008 Vargas ........... 717, 137 2008/0313282 A1* 12/2008 Warila et al. .................. TO9,206 2010, 0146492 A1 6/2010 Shacham et al. * cited by examiner Primary Examiner— Don Wong Assistant Examiner — Mohammad Kabir (74) Attorney, Agent, or Firm —Novak Druce Connolly Bove + Quigg LLP (57) ABSTRACT Embodiments of the methods and apparatus for automatic cross languageprogram codetranslationareprovided.Oneor more characters ofa source programming language code are tokenized to generate a list oftokens. Thereafter, the list of tokens is parsed to generate a grammatical data structure comprising one or more data nodes. The grammatical data structure maybeanabstractsyntaxtree.Theoneormoredata nodes of the grammatical data structure are processed to generate a document object model comprising one or more portable data nodes. Subsequently, the one or more portable data nodes in the document object model are analyzed to generate one or more characters of a target programming language code. 51 Claims, 8 Drawing Sheets Yes ls the selected feature or a similarfeature presentin the targetprogramming isthereanyotherfeature in the source programming language? 302 34 Yes 306
  • 2. US 8,762.962 B2Sheet 1 of 8Jun. 24, 2014U.S. Patent 00|| J?SJECH
  • 3. US 8,762.962 B2Sheet 2 of 8Jun. 24, 2014U.S. Patent uOUuuuOO UOUuuuOOg uOLLILLOO ZOZ UOuuuuOOg
  • 4. U.S. Patent Jun. 24, 2014 Sheet 3 of8 US 8,762.962 B2 Select a feature ofthe Source programming language 302 304 ls the Selected feature Or a similarfeature present in the target programming language? Retain the selected No feature Remove the feature of the SOur 306 programming language C 308 310 ls there any otherfeature in the source programming language? FG. 3
  • 5. US 8,762.962 B2U.S. Patent Z07 <!--IDTITETETETETT?ST?TI
  • 6. US 8,762.962 B2Sheet 5 of 8Jun. 24, 2014U.S. Patent <-]|osied|<!-- +€907
  • 7. US 8,762.962 B2Sheet 6 of 8Jun. 24, 2014U.S. Patent 709 —,—[99090909 r-rer---- usuaurumuruwamaraawaauaou-uu-aa-na-u- 0|||| Z09 —4–p9090909G909[uea]puowÁÐy.JeA i--------------~--~~~~~~~-----------------------------------------------------
  • 8. US 8,762.962 B2Sheet 7 of 8Jun. 24, 2014 Z|||| U.S. Patent
  • 9. U.S. Patent Jun. 24, 2014 Sheet 8 of8 US 8,762.962 B2 Tokenize one or more characters ofa source programming language code to generate a list oftokens Parse the list oftokens to generate an abstract syntax tree Process the abstract syntaxtree to generate a document object model Analyze oneor more nodes in the documents object model to generate one or more characters of a target programming language Code 802 804 806 808 FIG. 8
  • 10. US 8,762,962 B2 1. METHODS AND APPARATUS FOR AUTOMATIC TRANSLATION OFA COMPUTER PROGRAMI LANGUAGE CODE CROSS-REFERENCE TO RELATED APPLICATION This application draws priority from U.S. Provisional Patent Application No. 61/132,264, filed on Jun. 16, 2008, and hereby incorporated by reference herein in its entirety. FIELD OF THE INVENTION The invention relatesto computeraidedtranslation ofpro gramming languages and more specifically the invention relates to real-time automatic translation of computer pro gramming language code. BACKGROUND OF THE INVENTION Various users across the globe communicate or perform various activities on computer and device networks. More over, the users interactwitheach otherthrough the networks, Such as the Internet. Typically, the users use devices like personalcomputerstointeractovertheInternet.Theuserscan interact from various Internet websites or social networking sites, for example, Facebook, Myspace. Hi5, and Orkut etc. Recently, the development in mobile devices such as cell phones, Smartphones and PDAs, computers, laptops and the like has enabled them to be used for performing various activities on networks such as the Internet. Moreover, the mobile devices can be used for real-time interaction with otherusers onthe network. The interactionorcommunication can be in the form of chatting, playing interactive online games, browsing, shopping, music, video, banking, business and the like. The rapid pace ofinnovation in technology has generated varioustypesofdevicesandplatforms.Moreover,thenumber ofdevices is increasing rapidly. For example, there are vari ous operating systems available forthe devices Such as Win dows, Linux,Macintosh,andSymbian,etc. Moreover,alarge number of J2ME platforms are available for the mobile devices suchascellphones. Furthermore, the mobiledevices haveawiderageofcapabilities intermsofscreen size,Screen type, screen resolution, processor, and memory etc. The applications forthese devices have to be developed basedon theirplatforms. Therefore, each application has to be ported to other platforms. For example, in case ofcomputer games the programming languages typically used are JAVA, CH, C++. Action Script, and the like. Therefore, an application developedinAction Scriptprogramming language may have to be ported to other programming language when not Sup ported by a device platform. Further, new applications are beingcontinuously developed for different deviceplatforms. Typically,theprogrammingcodeofanapplication istrans lated manually from one programming language to another. However, manual translation requires specific and in-depth knowledge of the programming languages of the different operating systems. Moreover, manual translation is a very timeconsumingprocess. Furthermore,theprogramming lan guages are constantly developed orget modified. Moreover, the applications have to be developed on specific develop ment platforms compatible with the programming language used for development and the operating system ofa device. Asa result,acompleted revision oftheapplication code may be required to make the interaction possible. Some mecha nisms, such as emulation of applications are available to 10 15 25 30 35 40 45 50 55 60 65 2 Support multipledevices. However, the existing mechanisms generate application program codes that are large or require heavy processingtime. Theproblem is compoundedwith the continuously increasing number of device platforms and technology. A mechanism is therefore desirable to automate the task of cross translating one programming language into another. SUMMARY The invention provides a method forautomatic translation ofacomputerprogramlanguagecode.Themethodcomprises tokenizing one or more characters ofa source programming languagecodetogeneratealistoftokens.Thelistoftokensis parsed to generate an abstract syntax tree, wherein the abstractsyntaxtreecomprises oneormoredatanodes.There after,theoneormoredatanodes oftheabstractsyntaxtreeare processedto generate a document object model, wherein the document object model comprises one or more portable data nodes. Subsequently, the one or more portable data nodes in the document object model are analyzed to generate one or more characters ofa target programming language code. The invention further provides a computer-implemented method forautomatic translation ofa computerprogram lan guage code for real-time applications. The computer imple mented methodcomprises tokenizingone or more characters ofa source programming language code to generate a list of tokensbased on a setofexpression rules. The listoftokens is parsed to generate an abstract syntax tree based on a set of grammar rules, wherein the abstract syntax tree comprises one or more data nodes. Thereafter, the one or more data nodes ofthe abstract syntax tree are processed to generate a document object model, wherein the document object model comprises one ormoreportable nodes. Subsequently,theone or more portable nodes of the document object model are analyzed to generate one or more characters ofa target pro gramming language code. The present invention further provides an apparatus for automatic translation ofa computerprogram language code. Theapparatuscomprisesatokenizerconfiguredtokenizeone ormorecharactersofasourceprogramminglanguagecodeto generate a list oftokens. Further, the apparatus comprises a parser configured to parse the list of tokens to generate an abstract syntax tree, wherein the abstract syntax tree com prises one or more data nodes; a generator configured to processtheone or moredata nodes oftheabstractsyntaxtree to generatea document object model, wherein the document object modelcomprises oneormore portabledatanodes; and an analyzer configured to process the one or more portable data nodes in the document object model to generate one or more characters ofa target programming language code. The present invention further provides a computer-read able medium having computer-executable instructions for performing a method for language translation ofa computer program code, said method comprisingthe steps of tokeniz ingoneormorecharacters ofasourceprogramminglanguage code to generate a list oftokens based on a set ofexpression rules; parsingthe list oftokens to generatean abstract syntax tree based on a set of grammar rule, wherein the abstract Syntaxtree comprises oneormoredatanodes;processingthe one ormoredata nodes oftheabstractsyntaxtreetogenerate a document object model, wherein the document object model comprises one or more portable nodes; and analyzing theoneormoreportable nodesofthedocumentobject model to generate one or more characters ofa target programming language code.
  • 11. US 8,762,962 B2 3 The present invention furtherprovides a computer-imple mented system for automatic translation ofa computer pro gram languagecode, comprising: means fortokenizingoneor more characters ofa source programming language code to generate a list oftokens; means forparsing the list oftokens to generate an abstract syntax tree, wherein the abstract syn tax tree comprises one or more data nodes; means for pro cessingtheone or more data nodes oftheabstractsyntaxtree to generatea document object model, wherein the document object modelcomprises oneormore portabledata nodes; and means for analyzing the one or more portable data nodes in the document object model to generate one or more charac ters ofa targetprogramming language code. BRIEF DESCRIPTION OF THE DRAWINGS Having thus described the invention in general terms, ref erence will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein: FIG. 1 is a functional overview ofan apparatus for auto matic translation ofa source programming language code to a target programming language, in accordance with an embodiment ofthe invention; FIG. 2 illustratesan exemplary feature map foraprogram ming language code, in accordance with an embodiment of the invention; FIG. 3 illustrates a flowchart diagram for normalizing a Source programming language code, in accordance with an embodiment ofthe invention; FIG. 4 illustrates operation ofa tokenizer, in accordance with an embodiment ofthe invention; FIG. 5 illustrates operation ofa parser, in accordancewith an embodiment ofthe invention; FIG. 6 illustrates operation ofa generator, in accordance with an embodiment ofthe invention; FIG. 7 illustrates operation ofan analyzer, in accordance with an embodiment ofthe invention; and FIG. 8 illustrates a flowchart diagram for translation ofa Sourceprogramming languagecode to a target programming language, in accordance with an embodiment of the inven tion. DETAILED DESCRIPTION OF THE INVENTION Illustrative embodiments of the invention now will be describedmorefully hereinafterwith reference to theaccom panyingdrawings,in whichsome,butnotallembodiments of theinventionareshown. Indeed,theinventionmaybeembod ied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so thatthis disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout. FIG. 1 is a functional overview of an apparatus 104 for automatic translation of a source programming language code to a target programming language. As shown, device 102a and 102b may communicate to interactand shareinfor mation. Devices 102a and 102b can be, but not limited to a mobile phone, a laptop, a personal computer, a Smartphone and thelike. Inanembodimentoftheinvention,devices 102a and 102b are mobile devices communicating through net work 100. Similarly, various other devices can be connected over network 100. Devices 102a and 102b may interact with each other by using applications such as chatting, games, messaging, and so forth. Devices 102a-b may have different hardwareandsoftwareplatforms. Examplesofsoftwareplat forms include operating systems such as Windows, Linux, 5 10 15 25 30 35 40 45 50 55 60 65 4 Macintosh, Symbian,andso forth. Moreover,devices 102a-b may have different hardware such as the screen size, Screen resolution, audio and video functionality, processors and so forth. Therefore, the applications executing on the devices 102a and 102b have to be compatible with the operating systems and platform ofthese devices. Thecompatibility oftheapplication may be maintainedby translatingtheprogramminglanguagecodeoftheapplication based on the platforms ofdevice 102a to 102b. Examples of the application include Software games or rich media appli cations. In case ofSoftware games or rich media, the devel opmentenvironmentcanbe typically dividedintofourobject orientedprogramming languages: C++,JAVA,Action Script, and C#. Therefore, translation of programming language code is generally required across these object oriented pro gramming languages. Moreover, these object oriented pro gramming languages share various similar features and thus can be translated into one another. For example, each ofthe above programming languages share the features Such as if statement, arguments, binary expressions, and so forth. Exemplary feature map for the above mentioned program ming languages is explained in detail in conjunction with FIG 2. Apparatus 104 automatically translates the programming language code ofthe application for devices 102a and 102b. As shownin FIG.1,apparatus 104comprisesatokenizer106, parser 108, a generator 110, and an analyzer 112.Apparatus 104 is hereinafter referred to as translator 104. Tokenizer 106 transforms streams of characters from the source program minglanguagecodeintoalistoftokens. Inanembodimentof the invention, the Source programming language is a com puter game development language. Exemplary operation of tokenizer 106 is explained in detail in conjunction with FIG. 4. Parser 108 analyzes the list oftokens generated by token izer106todetermineagrammatical datastructure.Thegram matical data structure is defined on the basis ofthe program ming languages to be cross-translated. The grammatical data structure is hereinafter referred to as anAbstract SyntaxTree (AST). Exemplary operation ofparser 108 is explained in detail in conjunction with FIG. 5. Generator 110 operates on the AST generated by parser 108 to generate a Document Object Model (DOM). The DOM is a simplified data struc ture of the AST. Exemplary operation of generator 110 is explained in detail in conjunction with FIG. 6. The DOM is transformed by analyzer 112 into programming code of a target programming language. Exemplary operation ofana lyzer 112 is explained in detail in conjunction with FIG. 7. Consequently, theprogrammingcodeofthe sourceprogram ming languageistranslatedintotheprogrammingcode ofthe target programming language by translator 104. In an embodiment ofthe invention, the Source programming lan guage is a computer game development language. FIG. 2 shows an exemplary feature map 202 forprogram ming languages. Differentprogramming languages comprise different features. However, various features in the object orientedprogramming languages maybesimilarorcommon. Generally, a feature in one programming language can be emulated in other programming languages. For example, a feature in Action Script 3 (AS3) programming language, the star notation can beemulatedby the void feature in C++ or object feature in JAVA programming language. As anotherexample, pure virtual feature in C++ programming language can be emulated by assert(false) feature in AS3 programming language. Moreover, the features of one pro gramming language can be mapped equivalently to features ofthe other programming languages withoutemulation. The
  • 12. US 8,762,962 B2 5 programming languages that have common features or the featurescanbemappedtoeachotherarereferredtoasequiva lent programming languages. As shown, in FIG. 2, feature map 202 is drawn for C++, JAVA, Action Script 3 (AS3), and C# programming lan guages. However, feature map 202 is not limited to these programming languages only. Feature map 202 comprises C++ features 204, JAVA features 206, AS3 features 208, and C# features 210. C++ features 204 comprise C++ specific features 212. Similarly, JAVAspecific features 214,AS3 spe cific features 216, and C# specific features 218 are the fea tures that are specific to these programming languages only. Examples ofC++ specific features 212 include, but are not limited to operator overloading, function overloading, templates and so forth. Examples ofJAVA specific features 214 include, but are not limited to function overloading, generics, iterators and so forth. Examples ofAS3 specific features 216 include, but are not limited to rest notation, startexpression, for-in statement and so forth. Examplesof C# specific features 218include,butare notlimitedto reflec tion and so forth. Programming language specific features suchasC++ specific features212,JAVAspecific features 214, AS3 specific features 216,andC# specific features 218, may require different run-time environment requirements. For example, emulating generic data types for a target program ming language may requiresignificantcodespace. Similarly, emulation ofa target programming language code that does not involvethe concept ofthreads may require huge process ing overhead. As yet another example, LISP is a program ming language that contains various high level functional ities. Moreover,thedesign ofLISPprogramming languageis different from programming languages such as JAVA, C++, C#,andthelike.Therefore,emulation ofaprogrammingcode written in LISP may requirehuge overhead forprogramming languagecode spaceandprocessingresources.Theprogram ming languages that do not have common features or the features cannot be mapped to each other are referred to as non-equivalentprogramming languages. As shown in FIG. 2, feature map 202 comprises common features 220 for each ofthe programming languages. Com mon features 220 are the features that are common to these programming languages. Therefore, common features 220 can becross-translatedacrosstheseprogramminglanguages. Inanembodimentofthe invention,commonfeatures220can beemulatedacross theseprogramming languages. Examples ofcommon features220include,butarenotlimitedto access visibility, arguments, Boolean literal, member, method, switch statement, if statement, and so forth. Common features 220 can be translated between the pro gramming languages without losingperformance, i.e., space usage or processing resources and processing time. Analysisofcommon features220enable theassessmentof the portability oftheprogramming languages. Moreover, the objectorientedprogramminglanguagescanbemadeportable by analyzing the common features 220 and normalizing the programming languages. The normalizing of programming languages is discussed in conjunction with FIG. 3. FIG. 3 illustrates a flowchart diagram for normalizing the Source programming language according to an embodiment ofthe invention. The Source programming language and the target programming language include features or functions that enable the development of rich media content applica tions. Inan embodimentoftheinvention,thesourceprogram ming language and the target programming language are object oriented programming languages. The source pro gramming language and the target programming language may have some common features. Further, some features in 10 15 25 30 35 40 45 50 55 60 65 6 the Source programming language may be equivalent to the features ofthe targetprogramming language. Thefeatures in the source programming language that are common or equivalenttothe features inthetargetprogramminglanguage are hereinafter referred to as equivalent features. Moreover, SomefeatureoftheSourceprogramminglanguagemay notbe available or Supported in the target programming language. Thefeatures oftheSourceprogramming languagethatarenot available or Supported in the target programming language are hereinafter referred to as non-equivalent features. In an embodiment ofthe invention,thefeatures andcorresponding definitions ofthe features for the source and the target pro gramming languages are maintained in a database. The Source programming language is normalized based on the equivalentand non-equivalentfeatures. In an embodiment of the invention,theprogramming languagesare normalizedby a normalizer. The normalizer is a module in translator 104, which processes the features of the source and the target programming languages. At step 302,afeatureoftheSourceprogramminglanguage is selected. Thereafter, at step 304 it is determined if the feature is available in the target programming language. At step 306, the selected feature from the source programming language is matched with the features ofthe target program ming language. Therefore, in case an equivalent feature is available in the target programming language, then the equivalentfeature is retained. In anembodimentoftheinven tion, the features are matched on the basis offeature defini tion. In anotherembodiment ofthe invention, the featuresare matched based on Semantic meaning ofthe definition. In yet anotherembodimentoftheinvention,thefeaturesaremapped based on the output received from execution ofthe features. Incasethefeature is non-equivalenttofeatures inthetarget programming language, then the non-equivalent feature is removed, at step 308. In an embodimentofthe invention, the non-equivalent features are replaced with an equivalent fea ture ofthe target programming language. Subsequently, at step 310 it is determined ifother features in the Source programming language required to be pro cessed. Thereafter, the above steps are performed iteratively to process all the features ofthe source programming lan guage. As a result, the source and the target programming languages are made equivalent and can be cross-translated. FIG. 4illustratesoperationoftokenizer106,inaccordance with an embodiment of the invention. As shown, tokenizer 106 comprisesacollectionofregularexpressionrules404. In an embodiment of the invention, tokenizer 106 is a lexical analyzer. Regular expression rules 404 define a finite state machine for tokenizer 106. Regular expression rules 404 represent patterns that may be contained in text analyzed by tokenizer106. Exampledefinitionsofvarioustypesofregular expressions may be: Identifier: is a sequence ofletters a-Zor Assignment operator: is the character = Addition operator: is the character + Semicolon: is the character : Number: is a sequence ofcharacters 0-9 The programming code ofSource programming language is processed as stream of characters by tokenizer 106. An input stream 402 ofcharacters representan expression in the Sourceprogramming code: Sum=2+3;.As shown in FIG. 2, input stream 402 comprises the regular expression as input characters S.u.m.-2,+.3,and ;. Input stream 402 is scanned one input character at a time by tokenizer 106. The scanned inputstream 402 isprocessed on thebasis ofregular expression rules 404. As a result, a list of tokens 406 is
  • 13. US 8,762,962 B2 7 generated. Therefore, every timea rule in regularexpression rules404iscompleteda new token is added totheoutputlist. In an embodiment of the invention, list of tokens 406 comprises columns of token list 408a and token type list 408b. Token list 408a comprises the tokens generated from input stream 402 and the token type list 408b comprises the description forthetypeoftokens.Tokens in listoftokens406 are categorized block oftext. Referring to list oftokens 406, thetoken Sum in tokens408a is definedby tokenizer 106 as an identifier in type408b. Similarly,thecompleteprogram ming code ofthe Source programming language can be pro cessed to form a list oftokens. Subsequently, list oftokens 406 is processed by parser 108 to generate structured infor mation. FIG. 5 illustrates operation of parser 108, in accordance with an embodiment of the invention. List of tokens 406 generatedby tokenizer106 does notprovide any information on contextual correctness ofthe tokens. Therefore, the order of tokens in the list may not be contextually correct. For example, theexpression Sum3+=2; is not a correct expres Sion. However,this expression can beprocessedby tokenizer 106 to generate a list of tokens. Parser 108 analyzes list of tokens 406 generatedby tokenizer 106. In an embodimentof theinvention,parser108performssyntacticanalysisoflistof tokens 406. Parser 108 can implement top-down parsing, in an embodiment ofthe invention. Therefore, tokens in list of tokens 406 are consumed from left to right. In another embodimentoftheinvention, parser 108can implementbot tom-up parsing. Therefore, parser 108 locates the basic ele ments in list of tokens 406 and then locates the elements containing the basic elements. Parser 108 analyzes list of tokens 406 to generate an Abstract SyntaxTree (AST) 502. AST 502 is a grammatical data structureanddefines the relationshipbetweenthetokens in listoftokens406. AST502 isgeneratedbasedongrammar rules defined in parser 108. The grammar defined in parser 108 can be context-free grammar or attribute grammar. Exemplary grammar rules in parser 108 include: Assignment Statement<-Identifier-Expression; Expressions-Literal OR Binary Expression Binary Expressions-Expression Operator Expression Literale-Number OR Identifier The arrows in the above rules indicate the direction of the pattern matching reduction. Therefore, based on the above example a statement such as Sum=3+2 is termed as an assignmentstatement.Similarly,basedontheaboverules,the statement 3+2 is termed as a Binary Expression. The grammar rules in parser 108 can be recursive. There fore, one or more rules may be applied recursively on an expression to prepare AST 502. AST 502 comprises data nodes 504. Data nodes 504 comprisea hierarchal data struc ture that represents the structure of the program code. For example, data node 504c comprises binary expression and datanodes504d. 504e,and504fcomprisenumberandopera tor, which aresubsetsofthebinary expression. Inan embodi ment oftheinvention,thegrammarrules can reference token definition rules to define data nodes ofAST 502. Therefore, AST 502 comprises structural information and relation between data nodes 504. In an embodiment ofthe invention, parser108canbeprogrammedbasedonthe rules requiredfor analyzing list oftokens 406. FIG. 6 illustratesoperation ofgenerator110,inaccordance withanembodimentoftheinvention. Generator110 operates on AST 602 to generate a Document Object Model (DOM) 604. DOM 604 is a simplified data structure ofAST 602. As shown in FIG. 6, AST 602 is an exemplary data structure representation ofa variable declaration in theAction Script 3 10 15 25 30 35 40 45 50 55 60 65 8 (AS3) programming language. The variable declaration for this example in ASH programming language is vari:int;. Datanode 606aofAST602 is referredtoastheparentnode ofdata nodes 606b, 606c, and 606d. Generator 110 analyzes AST 602 to identify portable data nodes. Data nodes 606a-d in AST 602 comprises meta structure and metadata of the programming code. However, the metadata may not be required forgeneration ofDOM 604, as the meta-structure is deduced from the other data nodes in AST 602. Therefore, data node 606b is removed by generator 110, because data node 606a isadeclaration nodeandthe meta-structure ofdata node 606b can bededuced from node 606a.Therefore, DOM 604 contains only portable data nodes from AST 602. As a result, DOM 604 includes a simple data structure of the programming code and is generic to any programming lan guage. Theabove example explains the operation ofgenera tor 110 from the perspective ofAS3 programming language. However, the same process can essentially be performed on anASTdevelopedforanyprogramminglanguagecodeandis not limited to any particularprogramming language code. FIG. 7 shows operation ofanalyzer 112 according to an exemplary embodiment ofthe invention. Analyzer 112 pro cesses a document object model to generate programming code in thetarget programming language. Analyzer 112 pro cesses thestructureofDOM 604totranslate theinputcodeof Source programming language into an output code 702 cor respondingtothetargetprogramminglanguage.Output code 702 is generatedbased on the features ofthe target program ming language. For example, output code 702 may be inti in case the target programming language is JAVA. Analyzer 112 processes the portable data nodes of DOM 604 in a standard depth first manner. Therefore, as shown for DOM 604, portable data node 606a, which is the parent node, is processed first followed by portable data nodes 606c and 606d. Analyzer 112 processes nodes 606 to generate tokens cor responding to a DOM node in the target programming lan guage code. In an embodiment ofthe invention, to generate DOM of the target programming language, analyzer 112 executes functions that mapbetweenthemeta-structureofthe Source programming language feature and the character streamofthetargetprogramminglanguage.Therefore, DOM 604 is parsedto generatean abstract syntax tree and thereaf ter, theabstractsyntaxtreeisconvertedtoprogramming code ofthe target programming language by analyzer 112. In an embodimentofthe invention,theprocessingby analyzer 112 comprises recursive scanning of DOM 604 to generate the targetprogramming languagecode. Examplepseudo-code of functionsthatanalyzer112executesfortranslating DOM604 to AS3 or Java are discussed below: Example 1 Functions for Conversion ofDOM 604 to Java Programming Language Function DeconstructASTToJava(node) If(node is oftype Declaration) Print(DeconstructDeclarationToJava(node)) Else Function DeconstructDeclarationToljava (node) 1 Print(DeconstructType(node.getChild(1)));
  • 14. US 8,762,962 B2 -continued 11 Print(**): 12 Print(DeconstructName(node.getChild(O))); 13 Print(":"); 14 Analyzer112 may run thefunctions in example 1 on DOM 604to generateoutputcode 702. As shown in example 1, the function DeconstructASTToJava(node)isdefinedinthelines 1 to 7. This function reads the parent node of DOM 604, which is portable data node 606a and calls the function DeconstructDeclarationToljava(node) definedinthelines8to 14,whenportabledatanode606aisa typeofdeclaration.The function DeconstructDeclarationToljava(node) reads the child nodes in DOM 604,whichareportabledata nodes 606c and 606d. Subsequently, the function DeconstructDeclarati onToljava(node) generates output code 702. In this case out putcode702is inti;,whichisaproperintegerdeclarationin JAVA programming language. Similarly, various otherfunc tionscanbewrittentoanalyzeothertypesofdatanodesin the tree structure of DOM 604 and completely translate source programming languagecodetotargetprogramming language code. Example 2 Functions for Conversion of DOM 604 to ActionScript3 Programming Language 1 Function DeconstructASTToAS3 (node) 2 { 3 If(node is oftype Declaration) 4 Print(DeconstructDeclarationToAS3(node)); 5 Else 6 7 8 Function DeconstructDeclarationToAS3 (node) 9 { 10 Print(“var); 11 Print(DeconstructType(node.getChild(1))); 12 Print(":"); 13 Print(DeconstructName(node.getChild.(2))); 14 Print(":"); 15 Analyzer112 may run thefunctions in example 2 on DOM 604to generateoutputcode 702. As shown in example 2, the function DeconstructASTToAS3(node)isdefinedinthelines 1 to 7. This function reads the parent node of DOM 604, which is portable data node 606a and calls the function DeconstructDeclarationToAS3(node)definedinthe lines8to 15,whenportabledatanode606aisa typeofdeclaration.The function DeconstructDeclarationToAS3(node) reads the child nodes in DOM 604,whichareportabledata nodes 606c and 606d. Subsequently, the function DeconstructDeclarati onToAS3(node) generates outputcode 702. In this case out put code 702 is var: inti;, which is a proper integer decla ration in AS3 programming language. Similarly, various other functions can be written to analyze other types ofdata nodesinthetree structureofDOM 604andcompletely trans late source programming language code to target program ming language code. In an embodiment of the invention, DOM 604 can be analyzed to generate an output code in any otherequivalent programming language. FIG. 8 illustrates a flowchart diagram forcross translation of the source programming language code to a target pro gramminglanguagecode,inaccordancewithanembodiment 10 15 25 30 35 40 45 50 55 60 65 10 ofthe invention. At step 802, an input stream ofoneor more characters of a source programming language code is received at tokenizer 106. Subsequently, the input stream is analyzedlexicallytogeneratealistoftokens. Examples ofthe characters in the input stream include alphabets, numerals, special characters, mathematical operators, their combina tion and so forth. In an embodiment of the invention, the characters are processed sequentially to generate the list of tokens. The order oftokens in the list oftokens may not be con textually correct. Therefore, the list oftoken is analyzed syn tactically by parser108 to generateagrammatical data struc ture, at step 804. In an embodiment of the invention, the grammatical datastructureisahierarchical datastructureand is referred toasanAbstractSyntaxTree (AST). Thereafter,at step806, theASTisprocessedby generator110 togeneratea document object model. Document object model is a simpli fiedgrammaticaldatastructureinahierarchicaldatastructure format. Subsequently, the document object model is pro cessedbyanalyzer 112to generate atargetlistoftokens. The target listoftokensis thereafterprocessed byanalyzer 112 to generatethe targetprogramming language code, at Step 808. Embodiments of the invention are described above with reference to block diagrams and Schematic illustrations of methodsandsystemsaccordingtoembodimentsoftheinven tion. Itwillbeunderstoodthateach blockofthediagramsand combinations ofblocks in the diagrams can be implemented by computerprogram instructions. These computerprogram instructions maybe loadedonto oneormoregeneralpurpose computers, special purpose computers, or other program mable data processing translator to produce machines. Such thattheinstructions which executeonthe computers orother programmable data processing translator create means for implementing the functions specified in the block orblocks. Such computer program instructions may also be stored in a computer-readable memory that can direct a computer or otherprogrammable data processingapparatus to function in a particular manner, Such that the instructions stored in the computer-readable memory produce an article of manufac tureincluding instruction means that implement the function specified in theblockorblocks. Furthermore, such computer program instructions may be made available for download and/or downloaded over a communication network. While the invention has been described in connection with what is presently considered to be the most practical and variousembodiments,itis to be understood thattheinvention is not to be limited to the disclosed embodiments, but on the contrary, is intended to cover various modifications and equivalentarrangements included within the spiritand scope ofthe appended claims. This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to practice the invention, including makingand usingany devices orsystemsandperformingany incorporated methods. The patentable scope the invention is defined in the claims, and may include other examples that occur to those skilled in the art. Such other examples are intended to be within the scope of the claims if they have structuralelements thatdo notdifferfrom theliterallanguage oftheclaims, orifthey includeequivalentstructuralelements with insubstantial differences from the literal languages of the claims. We claim: 1. A method, executedbyelectroniccomputerhardware in combination with Software, for automatic translation of a computer program language code, comprising:
  • 15. US 8,762,962 B2 11 tokenizing one or more characters of a source program ming language code to generate a list oftokens; parsing the list oftokens to generate a grammatical data structure, wherein the grammatical data structure com prises one or more data nodes; processing the one or more data nodes ofthegrammatical data, structure to generate a document object model, wherein the document object model comprises one or more portable data nodes; and analyzing the oneormoreportable data nodes in the docu ment objectmodelto generateone ormorecharactersof a target programming language code: normalizing the source programming language, wherein one or more features of the source programming lan guageare managedbasedon one or more features ofthe target programming language, comprising: identifying one or more non-equivalent and one or more equivalent features from the oneor more features in the Sourceprogramminglanguage, whereintheoneormore non-equivalent features and the one or more equivalent features are identified based on the one or more features ofthe target programming language; and removing the one or more non-equivalent features ofthe Source programming language; wherein equivalentfeaturesarefeaturesthatareconfigured tobe mappedthe Sourceprogramminglanguageandthe target programming language. 2. The method ofclaim 1, wherein the grammatical data structure comprises an abstract syntax tree. 3.The methodofclaim 1,whereinthesourceprogramming language and the target programming language are object oriented programming languages. 4.The methodofclaim 1,whereinthesourceprogramming languageandthe targetprogramming languagecompriseone or more equivalent features. 5. The methodofclaim 1, furthercomprisingdownloading computer-executable instructions that, ifexecuted by a com puting device, cause the computing device to execute said normalizing. 6. The method ofclaim 1 wherein normalizing the source programming language comprises: identifying one or more non-equivalent features from the one or more features in the Source programming lan guage, wherein the one or more non-equivalent features are identified based on the one or more features of the target programming language; and replacingthe one or more non-equivalentfeatures with the one or more equivalent features ofthe source program ming language. 7. The methodofclaim 1 furthercomprisingemulatingthe Source programming language, wherein one or more non equivalent features ofthe Source programming language are emulated. 8. The method ofclaim 1, wherein tokenizing comprises processingthe oneormore characters ofthesourceprogram ming language code based on a set ofexpression rules. 9. The method ofclaim 1, wherein parsing comprises pro cessing the list oftokens based on a set ofgrammar rules. 10. A method, executed by electronic computer hardware in combination with Software, for automatic translation ofa computer program language code, comprising: tokenizing one or more characters of a source program ming language code to generate a list oftokens; parsing the list oftokens to generate a grammatical data structure, wherein the grammatical data structure com prises one or more data nodes; 10 15 25 30 35 40 45 50 55 60 65 12 processingthe one or more data nodes ofthegrammatical data structure to generate a document object model, wherein the document object model comprises one or more portable data nodes; and analyzingthe oneormoreportabledata nodes in thedocu ment objectmodelto generateoneormorecharacters of a target programming language code: wherein processing the one or more data nodes of the grammatical data structure comprises: scanning the one or more data nodes in the grammatical data structure to identify one or more metadata nodes having a metadata structurethat canbe deducedfrom at least one declaration node; and removing the one or more metadata nodes to generate the one or more portable data nodes, wherein the portable data nodes have a metadata structure that cannot be deduced from at least one declaration node. 11. The method ofclaim 1, wherein analyzing the one or moreportabledata nodes inthedocument objectmodelcom prises: processingrecursively the oneormoreportable data nodes in the document object model to generateatarget list of tokens; and analyzing the target list oftokens to generate the one or more characters of the target programming language code. 12. The method ofclaim 1, further comprising download ing computer-executable instructions that, if executed by a computing device, cause the computing device to execute said tokenizing. 13. The method ofclaim 1, further comprising download ing computer-executable instructions that, if executed by a computing device, cause the computing device to execute said parsing. 14. The method ofclaim 1, further comprising download ing computer-executable instructions that, if executed by a computing device, cause the computing device to execute said processing. 15. An apparatus including electronic computer hardware in combination with Software, for automatic translation ofa computerprogram language code, theapparatus comprising: a tokenizer configured to tokenize one or more characters of a source programming language code to generate a list oftokens; aparser configured to parsethe list oftokens to generatea grammatical data structure, wherein the grammatical data structure comprises one or more data nodes; a generator configured to process the one or more data nodes of the grammatical data structure to generate a document object model, wherein the document object model comprises one or more portable data nodes; and an analyzerconfiguredto processtheoneormoreportable datanodes inthedocumentobject modeltogenerateone or more characters of a target programming language code wherein the generator is furtherconfigured to: Scan the one or more data nodes in the abstract syntax treeto identify one or more metadata nodes having a metadata structure that can be deduced from at least one declaration node; and remove the one or more metadata nodes to generatethe one or more portable data nodes having a metadata structure that cannot be deduced from at least one declaration node. 16. The apparatus ofclaim 15, wherein the source pro gramming language and the target programming language comprise one or more equivalent features.
  • 16. US 8,762,962 B2 13 17. An apparatus including electronic computer hardware in combination with Software, for automatic translation ofa computerprogram language code, theapparatus comprising: a tokenizer configured to tokenize one or more characters ofa source programming language code to generate a list oftokens; aparser configuredto parsethe list oftokens to generate a grammatical data structure, wherein the grammatical data structure comprises one or more data nodes; a generator configured to process the one or more data nodes of the grammatical data structure to generate a document object model, wherein the document object model comprises one or more portable data nodes; and an analyzer configured to process the one or more portable data nodes in the document object model to generate one or more characters ofa target programming language code: a normalizer configured to: identify one or more non-equivalent and one or more equivalent features from the one or more features in thesourceprogramminglanguage,whereintheone or more non-equivalent features and the one or more equivalent features are identified based on the one or more features of the target programming language; and remove the one or more non-equivalent features ofthe Source programming language; wherein equivalent features are features that can be mappedbetween the Sourceprogramminglanguageand the target programming language. 18. The apparatus ofclaim 17, wherein the normalizer is further configuredto remove the one or more non-equivalent features ofthe sourceprogramming language. 19. Theapparatus ofclaim 15, wherein the tokenizercom prises a finite State machine. 20. The apparatus ofclaim 15, wherein the grammatical data structure comprises an abstract syntax tree. 21. The apparatus ofclaim 15, wherein the tokenizer is configuredtoprocesstheoneormorecharactersoftheSource programming language code based on a set of expression rules. 22. The apparatus ofclaim 15, wherein the parser is con figuredtoprocessthelistoftokensbased on a setofgrammar rules. 23. The apparatus ofclaim 15, wherein the generator is configured to scan the one or more data nodes in the gram matical data structure to identify one or more portable data nodes. 24. The apparatus of claim 15, wherein the analyzer is configured to recursively process the one or more portable data nodes in the document object model to generate a target list oftokens. 25.Theapparatus ofclaim 15, furthercomprisingan emu latorconfigured toemulate oneormorefeatures non-equiva lent ofthe source programming language. 26. The apparatus ofclaim 15, wherein the one or more data nodes intheabstractsyntaxtree representagrammatical data structure ofthe list oftokens. 27. The apparatus of claim 15, wherein the analyzer is further configured to: process recursively the one or moreportable data nodes in the document object model to generate a target list of tokens; and analyzethetargetlistoftokens togeneratetheone ormore characters ofthe targetprogramming language code. 28. The apparatus ofclaim 15, wherein the source pro gramminglanguageandthetargetprogramminglanguageare object orientedprogramming languages. 5 10 15 25 30 35 40 45 50 55 60 65 14 29. A non-transitory computer-readable medium having computer-executable instructions for performing a method for language translation ofa computer program code, said method comprising: tokenizing one or more characters ofa source program ming languagecodeto generatealistoftokensbased on a set ofexpression rules; parsing the list oftokens to generate a grammatical data structure based on a set ofgrammar rule, wherein the grammatical data structure comprises one or more data nodes; processingthe one or more data nodes ofthegrammatical data structure to generate a document object model, wherein the document object model comprises one or more portable nodes; and analyzing the one ormoreportable nodes ofthe document object model to generate one or more characters ofa target programming language code: wherein processing the one or more data nodes of the grammatical data structure comprises: Scanning the oneormore data nodes inthegrammatical data structureto identify one ormore metadata nodes havinga metadatastructurethatcanbe deducedfrom at least one declaration node; and removing the one or more metadata nodes to generate theoneormoreportabledatanodeshavingametadata structure that cannot be deduced from at least one declaration node. 30. The computer-readable medium ofclaim 29, wherein the grammatical data structure comprises an abstract syntax tree. 31. The computer-readable medium ofclaim 29, wherein the list oftokens is parsed based on a set ofgrammar rules. 32. The computer-readable medium ofclaim 29, wherein the Sourceprogramming languageis acomputer-gamedevel opment language. 33. The computer-readable medium ofclaim 29, wherein analyzing the one or more portable data nodes in the docu ment object model comprises: processingrecursively the oneormoreportable data nodes in the document object model to generateatarget list of tokens; and analyzing the target list oftokens to generate the one or more characters of the target programming language code. 34. The computer-readable medium ofclaim 29, wherein the Source programming language and the target program ming language are object oriented programming languages. 35. A system including electronic computer hardware in combination with Software, for automatic translation of a computer program language code, comprising: means for tokenizing one or more characters ofa source programming language codeto generatea list oftokens; meansforparsingthelistoftokenstogenerateagrammati cal data structure, wherein the grammatical data struc ture comprises one or more data nodes; means for processing the one or more data nodes of the grammatical data structure to generate a document object model, wherein the documentobject model com prises one or more portable data nodes; and means foranalyzingtheoneormore portabledatanodesin the document object model to generate one or more characters ofa target programming language code; wherein the means for processing the grammatical data structure comprises: means for Scanning the one or more data nodes in the grammatical data structure to identify one or more
  • 17. US 8,762,962 B2 15 metadata nodeshaving metadata structurethat canbe deduced from at least one declaration node; and means forremovingthe one or more metadata nodes to generatetheoneormoreportabledata nodeshavinga metadata structure that cannot be deduced from at least one declaration node. 36.The system ofclaim 35, wherein the grammatical data structure comprises an abstract syntax tree. 37. The system of claim 35, wherein the list of tokens comprises one or morecategorizedblocks ofthe one ormore characters ofthe Source programming language code. 38. The system ofclaim 35, wherein the source program ming language is a computer-game development language. 39. The system ofclaim 35, wherein the target program ming language is a computer-game development language. 40. The system ofclaim 35 further comprising means for normalizing the Sourceprogramming language, wherein one or more features of the Source programming language are managedbasedononeormorefeaturesofthetargetprogram ming language. 41.Thesystemofclaim40, wherein the meansfornormal izing the source programming language comprises: means foridentifying oneormore non-equivalentand one or more equivalent features from the one or more fea tures in the Source programming language, wherein the oneormorenon-equivalentfeaturesandthe oneormore equivalent features are identified based on the one or more features ofthetargetprogramming language; and means for removing the one or more non-equivalent fea tures ofthe Source programming language. 42.Thesystem ofclaim 35, wherein the means foranalyz ing the one or more portable data nodes in the document object model comprises: means forprocessing recursively the one or moreportable data nodes in the document object model to generate a target list oftokens; and 5 10 15 25 30 16 means foranalyzingthetargetlistoftokensto generatethe one or more characters ofthe target programming lan guage code. 43. The system ofclaim 35, wherein the source program ming language and the target programming language are object orientedprogramming languages. 44. The method ofclaim 1, wherein the grammatical data structure defines a relationship between tokens in the list of tokens. 45. The method of claim 1, wherein the grammar rules applied in theparsing togeneratethegrammatical data struc ture can be context-free grammarorattribute grammar. 46. The apparatus of claim 15, wherein the grammatical data structuredefinesa relationshipbetween tokens in thelist oftokens. 47.Theapparatusof15,whereinthegrammarrulesapplied by the parser to generate the grammatical data structure can be context-free grammar orattribute grammar. 48. The computer readable medium ofclaim 29, wherein thegrammatical datastructuredefinesarelationship between tokens in the list oftokens. 49.Thecomputerreadable mediumofclaim 1,whereinthe grammar rules applied in the parsing to generate the gram matical data structure can be context-free grammar or attribute grammar. 50. The system ofclaim 35, wherein thegrammatical data structure defines a relationship between tokens in the list of tokens. 51. The system ofclaim 35, wherein the grammar rules appliedbythe means forparsing togeneratethegrammatical data structure canbecontext-freegrammarorattributegram a.