2.5.2 Formula ABNF and Full Grammar Definition
A formula expression MUST conform to the following ABNF [RFC4234] grammar.
-
-
expression = sp (operand / function-call)
-
operand = token
-
token =
PtgAcre/
PtgAngDD/
PtgAngDft/
PtgAngDMS/
PtgAngRad/
PtgBool/
PtgColorRGB/
PtgCy/
PtgDataBinding/
PtgDate/
PtgEDay/
PtgEHour/
PtgEMin/
PtgErr/
PtgESec/
PtgEWeek/
PtgFunc/
PtgFuncVar/
PtgHectare/
PtgJmp/
PtgJmpF/
PtgJmpLabel/
PtgJmpT/
PtgMissArg/
PtgNoOp/
PtgNum/
PtgNumCM/
PtgNumDft/
PtgNumF/
PtgNumFI/
PtgNumI/
PtgNumKM/
PtgNumM/
PtgNumMI/
PtgNumMM/
PtgNumMultiDim/
PtgNumNM/
PtgNumPct/
PtgNumYards/
PtgPageDft/
PtgPop/
PtgPnt/
PtgPushTop/
PtgRecalcRef/
PtgStr1/
PtgTDurDft/
PtgTypCD/
PtgTypCi/
PtgTypDft/
PtgTypDi/
PtgTypPi/
PtgTypPP/
PtgTypPt/
PtgUnsWord -
function-call = if-expression / fixed-func / variable-func
-
if-expression = expression sp (PtgJmpF / PtgJmpT) sp expression sp PtgJmp sp PtgJmpLabel sp PtgPop sp expression PtgJmpLabel
-
fixed-func =
Abs/
ACos/
Add/
Ang360/
ASin/
ATan/
ATan2/
BitAnd/
BitNot/
BitOr/
BitXor/
Blend/
CellIsThemed/
Char/
Cos/
Cat/
CosH/
CY/
Date/
Deg/
Div/
EEQ/
EGE/
EGT/
ELE/
ELT/
ENE/
FEQ/
FGE/
FGT/
FLE/
FLT/
FNE/
FormatEx/
HSL/
Hue/
HueDiff/
Int/
IntersectX/
IntersectY/
Intup/
IsErr/
IsErrNA/
IsError/
IsErrValue/
Len/
Ln/
Log10/
Lower/
Lum/
LumDiff/
Magnitude/
Mid/
Modulus/
MsoShade/
MsoTint/
Mul/
Not/
Now/
Pct/
Pi/
Pow/
Pnt/
Rad/
Rand/
Replace/
RGB/
Round/
Sat/
SatDiff/
SetAtRefEval/
Shade/
Sin/
SinH/
Sqrt/
StrSameEx/
Sub/
Tan/
TanH/
TextHeight/
Time/
Tint/
Tone/
Trim/
Trunc/
UMinus/
UPlus/
Upper -
variable-func
=
And/
Bound/
Ceiling/
DateTime/
DateValue/
Day/
DayOfYear/
Find/
Floor/
Hour/
Index/
Left/
Lookup/
Max/
Min/
Minute/
Month/
Or/
Right/
Second/
SetAtRef/
SetAtRefExpr/
ShapeText/
Sign/
StrSame/
Substitute/
Sum/
TimeValue/
WeekDay/
Year -
fixed-func-name
= "ABS" / "ACOS" / "_ADD" / "ANG360" / "ASIN" / "ATAN" / "ATAN2" / "BITAND" / "BITNOT" / "BITOR" / "BITXOR" / "BLEND" / "CHAR" / "COS" / "_CAT" / "COSH" / "CY" / "DATE" / "DEG" / "_DIV" / "_EEQ" / "_EGE" / "_EGT" / "_ELE" / "_ELT" / "_ENE" / "_FEQ" / "_FGE" / "_FGT" / "_FLE" / "_FLT" / "_FNE" / "FORMATEX" / "HSL" / "HUE" / "HUEDIFF" / "INT" / "INTERSECTX" / "INTERSECTY" / "INTUP" / "ISERR" / "ISERRNA" / "ISERROR" / "ISERRVALUE" / "LEN" / "LN" / "LOG10" / "LOWER" / "LUM" / "LUMDIFF" / "MAGNITUDE" / "MID" / "MODULUS" / "MSOSHADE" / "MSOTINT" / "_MUL" / "NOT" / "NOW" / "_PCT" / "PI" / "POW" / "RAD" / "RAND / "REPLACE" / "RGB" / "ROUND" / "SAT" / "SATDIFF" / "SETATREFEVAL" / "SHADE" / "SIN" / "SINH" / "SQRT" / "STRSAMEEX" / "_SUB" / "TAN" / "TANH" / "TEXTHEIGHT" / "TIME" / "TINT" / "TONE" / "TRIM" / "TRUNC" / "_UMINUS" / "_UPLUS" / "UPPER"
-
var-func-name
= "AND" / "BOUND" / "CEILING" / "DATETIME" / "DATEVALUE" / "DAY" / "DAYOFYEAR" / "FIND" / "FLOOR" / "HOUR" / "INDEX" / "LEFT" / "LOOKUP" / "MAX" / "MIN" / "MINUTE" / "MONTH" / "OR" / "RIGHT" / "SECOND" / "SETATREF" / "SETATREFEXPR" / "SIGN" / "STRSAME" / "SUBSTITUTE" / "SUM" / "TIMEVALUE" / "WEEDKAY" / "YEAR"
-
color-value
= xsd-int
-
currency
= xsd-unsignedInt
-
date-time-value
= xsd-double
-
unit
= xsd-unsignedInt
-
shape-name
= string-value
-
shape-data
= string-value
-
shape-data-type
= xsd-unsignedInt
-
dimension
= xsd-unsignedInt
-
num-args
= xsd-unsignedInt
-
empty-value
= ""
-
string-value
= xsd-string
-
double-value
= xsd-double
-
unsigned-integer-value
= xsd-unsignedInt
-
bool-value = true-value / false-value
-
true-value = %x54/%x74 %x52/%x72 %x55/%x75 %x45/%x65
-
false-value = %x46/%x66 %x41/%x61 %x4C/%x6C %x53/%x73 %x45/%x65
-
xsd-double = ["+" / "-"] *digit ["." 1*digit] [("e" / "E") ["+" / "-"] 1*digit]
-
xsd-int = ["+" / "-"] 1*digit
-
xsd-unsignedInt = 1*digit
-
xsd-string = *(%x20-7E)
-
token-separator
= %x3A ; colon
-
sp
= %x20 ; space
-
digit
= %x30-39 ; Decimal digits (0-9)