加入QQ群
售前咨询
18604058908
售后热线
13166668196
微信扫一扫
关注沈阳菲尔德
获取更多免费产品
 
Language

HART现场总线设备描述语言的语言约束

 来源: |  阅读:2088次 |  2022/4/18 18:05:43

DD的文本位于一个或多个源文件和头文件中,此外,标准DD用作简化DD开发和测试的模板。预处理器指令允许源文件DD和导入结构中包含的头文件允许访问标准DD或当前DD的先前版本。这里描述了DD语言的模板支持(导入)。

翻译阶段

翻译语法规则的优先顺序由以下几个阶段规定。

  1. 处理DD源文件,并为行尾引入新行字符如有必要提供指示。
  2. 新行字符和前一个反斜杠字符的每个实例删除、拼接物理源线以形成逻辑DD源线。
  3. 将源文件分解为标记和空格字符序列(包括注释)。保留新行字符。分割源的过程将文件的字符转换为标记取决于上下文。
  4. 执行预处理指令并扩展宏调用。A#包括预处理指令导致从步骤中处理命名的头文件或源文件1到4,递归地执行。
  5. 连接相邻的字符串文字。
  6. 解析所有导入,然后是所有类似的构造
  7. 分隔标记的空格字符不再有效。标记是从语法和语义上进行分析和翻译。标准字典和图像文件引用已解析。
  8. 输出所有翻译结果

DD语言的字符集

DDL源字符集包括:空格字符、控制字符包括水平Tab、垂直Tab、换页、警告、退格、换行、回车和空字符(即0x00)加上以下91个图形字符,如下图所示:

DD语言的字符集

DDL源代码字符集用于除字符串文字外的所有DDL源代码。一串文本支持多种语言中特定于语言环境的字符串。

标记(Token)

标记是DD翻译过程中使用的最小DDL词汇元素。空白,水平和垂直Tab、新行、换页和注释(统称为“空白”)将被忽略,除非它们用来分开一个标记。标记的类别如下图所示:

DD语言的标记

如果DD源已被解析为预处理标记(最多可达给定字符),则下一个预处理标记是可能构成标记的最长字符序列。

标识符

标识符是不带引号的字母和数字序列。标识符可以是,例如,DDL关键字(因此保留)、定义或引用DD项的符号、标准字典字符串句柄、成员定义或引用。如下图所示:

标识符

关键字

以下标识符保留用作关键字,否则不能使用:

DDL关键字如下:

ADD
ALL
ANALOG_OUTPUT
AO
ARRAY
ARRAYS
ASCII
AUTO
AXIS
BAD
BIT_ENUMERATED
BITSTRING
CAPACITY
CASE
CHARACTERISTICS
CHART
CHARTS
CLASS
CLOSE
COLLECTION
COLLECTIONS
COLUMNBREAK
COMM_ERROR
COMMAND
COMMANDS
COMPUTATION
CONSTANT_UNIT
CORRECTABLE
CORRECTION
COUNT
CYCLE_TIME
DATA
DATA_ENTRY_ERROR
DATA_ENTRY_WARNING
DATE
DATE_AND_TIME
DD_REVISION
DEFAULT
DEFAULT_VALUE
DEFINITION
DELETE
DETAIL
DEVICE
DEVICE_REVISION
DEVICE_TYPE
DIAGNOSTIC
DIALOG
DISCRETE
DISPLAY_FORMAT
DISPLAY_ITEMS
DISPLAY_VALUE
DOUBLE
DURATION
DV
DYNAMIC
EDIT_DISPLAY
EDIT_DISPLAYS
EDIT_FORMAT
EDIT_ITEMS
ELEMENTS
ELSE
EMPHASIS
ENUMERATED
ERROR
EUC
EVENT
EVERYTHING
EXIT_ACTIONS
FACTORY
FILE
FILES
FIRST
FLOAT
FREQUENCY
GAUGE
GOOD
GRAPH
GRAPHS
GRID
GROUP
HANDLING
HARDWARE
HART
HEIGHT
HELP
HIGH_HIGH_LIMIT
HIGH_LIMIT
HORIZONTAL
HORIZONTAL_BAR
IF
IGNORE_IN_HANDHELD
IGNORE_IN_HOST
IMAGE
IMPORT
INDEX
INFO
INIT_ACTIONS
INLINE
INPUT
INTEGER
ITEM_ARRAY
ITEM_ARRAYS
ITEMS
KEY_POINTS
LABEL
LARGE
LAST
LENGTH
LIKE
LINE_COLOR
LINE_TYPE
LINEAR
LINK
LIST
LISTS
LOCAL
LOCAL_DISPLAY
LOGARITHMIC
LOW_LIMIT
LOW_LOW_LIMIT
MANUFACTURER
MARGINAL
MAX_VALUE
MEDIUM
MEMBERS
MENU
MENUS
METHOD
METHODS
MIN_VALUE
MISC
MISC_ERROR
MISC_WARNING
MODE
MODE_ERROR
MORE
NO_LABEL
NO_UNIT
NUMBER
NUMBER_OF_ELEMENTS
NUMBER_OF_POINTS
OF
OPEN
OPERATION
ORIENTATION
PACKED_ASCII
PAGE
PASSWORD
PATH
POST_EDIT_ACTIONS
POST_READ_ACTIONS
POST_WRITE_ACTIONS
PRE_EDIT_ACTIONS
PRE_READ_ACTIONS
PRE_WRITE_ACTIONS
PROCESS
PROCESS_ERROR
READ
READ_ONLY
READ_TIMEOUT
REDEFINE
REDEFINITIONS
REFRESH
REFRESH_ACTIONS
REFRESHS
RELATIONS
REPLY
REQUEST
RESPONSE_CODES
REVIEW
SCALING
SCALING_FACTOR
SCOPE
SELECT
SELF_CORRECTING
SEPARATOR
SERVICE
SMALL
SOFTWARE
SOURCE
SOURCES
STATE
STRIP
STYLE
SUCCESS
SUMMARY
SWEEP
TABLE
TIME
TRANSACTION
TRANSPARENT
TV
TYPE
UNCORRECTABLE
UNIT
UNSIGNED_INTEGER
UNSIGNED_INTEGER
VALIDITY
VARIABLE
VARIABLES
VECTORS
VERTICAL
VERTICAL_BAR
VIEW_MAX
VIEW_MIN
WARNING
WAVEFORM
WAVEFORMS
WIDTH
WINDOW
WRITE
WRITE_AS_ONE
WRITE_AS_ONES
WRITE_TIMEOUT
X_AXIS
X_INCREMENT
X_INITIAL
X_LARGE
X_SMALL
X_VALUES
XX_LARGE
XX_SMALL
XY
Y_AXIS
Y_VALUES
YT
FALSE
TRUE

方法相关的关键字如下:
break
case
char
continue
default
do
double
else
float
for
if
int
long
return
short
signed
switch
unsigned
while
DD_ITEM
DD_STRING
DICT_ID
DICTSTRID
ITEM_ID
MEMBER_ID
METHOD_ID
METHODID
VARID

保留的关键字如下:
auto
const
enum
extern
goto
register
sizeof
static
struct
typedef
union
void
volatile