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

Tho*_*ten 6 abap parsing compilation abstract-syntax-tree

这是一个关于ABAP代码编译过程的技术性问题。

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

现在我的问题是:是否有可能“跳过”ABAP 源代码并通过其他方式直接生成这样的 AST,而不是在 SE80 左右编写然后执行 ABAP 程序,并将其提供给一些编译和执行它的函数好像它是用 ABAP 代码编写和解析的?

也就是说,我可以跳过对源代码的扫描和解析,直接将 AST 提供给编译器吗?如果有,是什么格式?ABAP 列表看起来更像是一种打印格式,不像例如用括号括起来的 Lisp 列表。

小智 4

不幸的是,ABAP 编译器不使用 AST 来生成 VM 代码。ABAP 编译器按顺序工作,并将每个语句(即两个“.”之间的所有内容)翻译为一个或多个虚拟机操作码。

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

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

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