19.2.4. ASL 数据和常量项
// 数值项
> LeadDigitChar := > > > ‘1’-‘9’
> HexDigitChar := > > > DigitChar | ‘A’-‘F’ | ‘a’-‘f’
> OctalDigitChar := > > > ‘0’-‘7’
> NullChar := > > > 0x00
// 数据项
> BufferData := > > > BufferTypeOpcode | BufferTerm
> ComputationalData := > > > BufferData | IntegerData | StringData
> DataObject := > > > BufferData | PackageData | IntegerData | StringData
> DataRefObject := > > > DataObject | ObjectReference
> IntegerData := > > > IntegerTypeOpcode | Integer | ConstTerm
> PackageData := > > > PackageTerm
> StringData := > > > StringTypeOpcode | String
// 整数项
> Integer := > > > DecimalConst | OctalConst | HexConst
> DecimalConst := > > > LeadDigitChar | <DecimalConst DigitChar>
> OctalConst := > > > ‘0’ | <OctalConst OctalDigitChar>
> HexConst := > > > <0x HexDigitChar> | <0X HexDigitChar> | <HexConst HexDigitChar>
> ByteConst := > > > Integer => 0x00-0xFF
> WordConst := > > > Integer => 0x0000-0xFFFF
> DWordConst := > > > Integer => 0x00000000-0xFFFFFFFF
> QWordConst := > > > Integer => 0x0000000000000000-0xFFFFFFFFFFFFFFFF
> ByteConstExpr := > > > <IntegerTypeOpcode | ConstExprTerm | Integer> => ByteConst
> WordConstExpr := > > > <IntegerTypeOpcode | ConstExprTerm | Integer> => WordConst
> DWordConstExpr := > > > <IntegerTypeOpcode | ConstExprTerm | Integer> => DWordConst
> QWordConstExpr := > > > <IntegerTypeOpcode | ConstExprTerm | Integer> => QWordConst
> ConstTerm := > > > ConstExprTerm | Revision
> ConstExprTerm := > > > Zero | One | Ones
// 字符串项
> String := > > > ‘”’ Utf8CharList ‘”’
> Utf8CharList := > > > Nothing | <EscapeSequence Utf8CharList> | <Utf8Char Utf8CharList>
> Utf8Char := > > > 0x01-0x21 | 0x23-0x5B | 0x5D-0x7F | 0xC2-0xDF 0x80-0xBF | 0xE0 0xA0-0xBF 0x80-0xBF | 0xE1-0xEC 0x80-0xBF 0x80-0xBF | 0xED 0x80-0x9F 0x80-0xBF | 0xEE-0xEF 0x80-0xBF 0x80-0xBF | 0xF0 0x90-0xBF 0x80-0xBF 0x80-0xBF | 0xF1-0xF3 0x80-0xBF 0x80-0xBF 0x80-0xBF
// 转义序列
> EscapeSequence := > > > SimpleEscapeSequence | OctalEscapeSequence | HexEscapeSequence
> HexEscapeSequence := > > > \x HexDigitChar | \x HexDigitChar HexDigitChar
> SimpleEscapeSequence := > > > \’ | \” | \a | \b | \f | \n | \r | \t | \v | \\
> OctalEscapeSequence := > > > \ OctalDigitChar | \ OctalDigitChar OctalDigitChar | \ OctalDigitChar OctalDigitChar OctalDigitChar
// 其他数据类型项
> ObjectReference := > > > Integer
> Boolean := > > > True | False
> True := > > > Ones
> False := > > > Zero
// 符号运算符项
> Operators := > > > ‘+’ | ‘-‘ | ‘*’ | ‘/’ | ‘%’ | ‘&’ | ‘|’ | ‘^’ | ‘~’ | ‘<’ | ‘>’ | ‘!’ | ‘=’
> CompoundOperators := > > > “<<” | “>>” | “++” | “-” | “==” | “!=” | “<=” | “>=” | “&&” | “||” | “+=” | “-=” | “*=” | “/=” | “%=” | “<<=” | “>>=” | “&=” | “|=” | “^=”