我尝试编译ABAP提供的声明变量、类型和类似内容的所有方法,包括过时的语法变体和acrane语法变体。因此,例如,我会在列表中包括字段组,但不包括类的声明。我目前的列表如下。我错过什么了吗?
- DATA-like declarative statements
数据(不包括公共部分的数据开头)、静态、参数、参数、常量
- FIELD-SYMBOLS -内联声明
-程序的实际参数
表单(子例程)、函数、方法
-其他变量声明语句
范围,SELECT-OPTIONS:还有更多?
- TYPES
- DATA BEGIN OF COMMON PART
本身不是一个声明性语句,而是一种对更多数据语句进行分组的方法。
-字段组
声明提取数据集,它不是数据类型和数据对象的ABAP类型概念的一部分
免责声明:我们正在用Java编写一个解析和转换ABAP代码的工具。特别是,我们不打算编写新的ABAP代码。但是,我们的工具必须处理所有ABAP,甚至是过时的语句和晦涩的语法变体。此外,我想指出的是,我不是ABAP专家。
发布于 2019-06-13 08:43:05
要完成您的列表,您可以添加以下列表(部分取自ABAP doc - obsolete declarations):
属性的
TABLES
NODES
LOCAL
FIELDS
CLASS-DATA
ALIASES
(不是真正的声明,但它为给定的attributes)CONTROLS
添加了一个新名称
在构造函数表达式中有辅助变量 (FOR aux...,FOR,LET ...)
程序具有预定义的类型和变量(SY
、SCREEN
等;我觉得您可以从“隐式系统包含”中提取所有这些类型和变量,但您必须了解这些包含)。
最后考虑宏中的语句,内部的(DEFINE
)或外部的(表TRMAC
)。
存在与内部包含相对应的语句
TYPE-POOLS
(在7.02)INFOTYPES
CONTEXTS
之前是必需的
当然,也有所有的DDIC类型。
我不知道你是否也想扫描CREATE DATA
(为了像抽象解释器这样的工具)。
PS:你说公共部分不是真正的声明性语句,这是错误的,他们声明了数据对象,加上一个额外的“共享功能”。
https://stackoverflow.com/questions/56574905
复制