[讨论][Objective-C][AS3] 如何实现AS3代码向Objective-C代码的自动转换,求教思路等等。

25 views
Skip to first unread message

Alex

unread,
Nov 2, 2011, 1:36:56 AM11/2/11
to game.dev.top
如题,目的是实现AS3源码到Objective-C源码的自动或半自动转换:
1) 转换是源码级别,而不是在Byte Code级别的转换
2) 涉及到两种语言之间的转换,存在的问题可能比较多,对两种语言比较熟悉的大牛给点建议或者预见一点难点,其实网络上已经存在AS3到JAVA源码
的转换,实现效果待考证。
3) AS3实现的是逻辑控制部分的代码,至于牵涉到的Flash底层核心部分暂时不做考虑,可以假设为已经封装好了Obj-C版的Flash底层核心
渲染。

想法还不成熟,存在的问题比较多,大家给点意见和建议,可行性分析一下,难点讨论一下,实现思路建议一下。

Alex

unread,
Nov 7, 2011, 9:48:18 PM11/7/11
to game.dev.top
这个问题,我先来小结一下吧,现在的主要思路在两个方面,第一个是源码级别转换,第二个是字节码级别转换。
1) 源码级别转换
AS3的语法结构和Obj-C语法结构差异还是比较大的,源码级别转换可能存在一些问题,像AS3向Java的转换似乎通过扫描源码,进行一些相
关的替换等还是可以实现的,可以参看开源工程j2as3:http://code.google.com/p/j2as3/,实现Java to
ActionScript 3 syntax converter.
2) 字节码级别转换
源码级别转换存在的问题是语法结构差异比较大,那么摒弃语法结构差异的方法可以通过AS3的字节码ABC,或者后端采用LLVM分析得到AST也
是可以的,开源工程XMLVM可以说是在字节码基础上实现了"跨平台"特性:
"The goal of XMLVM is to offer a flexible and extensible cross-
compiler toolchain. Instead of cross-compiling on a source code level,
XMLVM cross-compiles byte code instructions from Sun Microsystem's
virtual machine and Microsoft's Common Language Runtime. The benefit
of this approach is that byte code instructions are easier to cross-
compile and the difficult parsing of a high-level programming language
is left to a regular compiler. In XMLVM, byte code-based programs are
represented as XML documents. This allows manipulation and translation
of XMLVM-based programs using advanced XML technologies such as XSLT,
XQuery, and XPath."
关注了其中的一部分内容,JAVA向Obj-C的转换,Android向iPhone的转换,利用AS3和JAVA的语法相似性实现转换应该不
是难事,继而通过XMLVM实现向Obj-C的转换,当然,整个转换过程的关键部分采用的是XMLVM.
其实,由SWF中抽取ABC,然后转换到XML文档表示出语法无关的源码机构,之后向相应语言做转换,似乎是一条康庄大道,但是走起来相信也是
坑坑洼洼,转换出来的代码会是怎样呢?简单的代码或许没有问题(不如直接重写),复杂代码转换之后呢(中间步骤过多,debug会比较耗时)?
Reply all
Reply to author
Forward
0 new messages