这是关于ABAP代码。
我知道ABAP解析器和扫描程序类实际上调用C内核函数来完成真正的工作。然后是代码完成事务的功能,该事务将程序的AST(抽象源树)返回并打印为ABAP列表或XML。
现在我的问题是:是否可以"跳过"ABAP源代码,并通过编写然后执行ABAP程序在SE80左右,并将其交给一些编译和执行它,就好像它是从ABAP代码中写入和解析的一样?
也就是说,我可以跳过对源的扫描和解析,直接给出AST到编译器?如果是,格式是什么?ABAP列表看起来更详细一种打印格式,不像用括号括起来的Lisp列表。
遗憾的是,ABAP编译器不使用AST来生成VM代码。ABAP编译器按顺序工作,并将每条语句(即介于两个"."之间的所有语句)转换为一个或多个虚拟机操作码。
如果您很好奇,可以看看事务SYNT,它显示编译器的输出。您还可以查看报告RSLOAD00,它显示了为程序生成的ABAP VM代码。
AST只是建立在顶部,以允许代码完成或高级分析。
如果要调用ABAP编译器,则需要生成文本ABAP源代码。