扫描,解析和编译ABAP源的过程?

这是关于编译过程的一个相当技术性的问题

ABAP代码.

我知道实际上有ABAP解析器和扫描器类
调用C内核函数来完成实际工作.然后是代码完成
具有事务的功能,该事务返回并将程序的AST(抽象源树)打印为ABAP列表或XML.

现在我的问题是:是否可以“跳过”ABAP源
代码并通过其他方式直接生成这样的AST,而不是写入然后执行
在SE80左右的ABAP程序,并给它编译和编译的一些功能
执行它就像它已被写入并从ABAP代码解析?

也就是说,我可以跳过扫描和解析源并直接给出
一个AST到编译器?如果是这样,以什么格式? ABAP列表看起来更多
打印格式,不像例如Lisp列表括在括号中.

最佳答案 不幸的是,ABAP编译器不使用AST来生成VM代码.

ABAP编译器按顺序工作,并将每个语句的语句(即两个“.”之间的所有内容)转换为一个或多个虚拟机操作码.

如果您很好奇,可以查看显示编译器输出的事务SYNT.您还可以查看报告RSLOAD00,它显示为程序生成的ABAP VM代码.

AST仅构建在顶部以允许代码完成或高级分析.

如果要调用ABAP编译器,则需要生成文本ABAP源代码.

点赞