2.12 VFR Expression Statement Definition
The VFR expression is defined in C-style language.
The syntax of VFR expression is defined as a tree. The positions in the tree are determined according to the priority of the operator (for example: + - * /). At the root of it are the terms of OR, followed by the terms of AND, because the priority of operator OR is lower than the operator AND(s). The leaves of the tree are sub- expressions of built-in-functions, unary operators, ternary operators, and constants.

2.12.1 OR

1
vfrStatementExpression ::=
2
andTerm ( "OR" andTerm )*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_OR op-codes.

2.12.2 AND

1
andTerm ::=
2
bitwiseorTerm ( "AND" bitwiseorTerm )*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_AND op-codes.

2.12.3 bitwiseor

1
bitwiseorTerm ::=
2
bitwiseandTerm ( "|" bitwiseandTerm )*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_BITWISE_OR op-codes.

2.12.4 bitwiseand

1
bitwiseandTerm ::=
2
equalTerm ( "&" equalTerm )*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_BITWISE_AND op-codes.

2.12.5 equal

1
equalTerm ::=
2
compareTerm
3
(
4
"==" compareTerm
5
| "!=" compareTerm
6
)*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_EQUAL or EFI_IFR_NOT_EQUAL op-codes.

2.12.6 compare

1
compareTerm ::=
2
shiftTerm
3
(
4
"<" shiftTerm
5
| "<=" shiftTerm
6
| ">" shiftTerm
7
| ">=" shiftTerm
8
)*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_LESS_THAN EFI_IFR_LESS_EQUAL, EFI_IFR_IFR_GREATER_EQUAL, or EFI_IFR_GREATER_THAN op-codes.

2.12.7 shift

1
shiftTerm ::=
2
addMinusTerm
3
(
4
"<<" addMinusTerm
5
| ">>" addMinusTerm
6
)*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_SHIFT_LEFT or EFI_IFR_SHIFT_RIGHT op-codes.

2.12.8 add/minus

1
addMinusTerm ::=
2
multdivmodTerm
3
(
4
"+" multdivmodTerm
5
| "-" multdivmodTerm
6
)*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_ADD or EFI_IFR_SUBTRACT op-codes.

2.12.9 multiply/divide/modulo

1
multdivmodTerm ::=
2
castTerm
3
(
4
"*" castTerm
5
| "/" castTerm
6
| "%" castTerm
7
)*
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_MULTIPLY EFI_IFR_MODULO or EFI_IFR_DIVIDE op-codes.

2.12.10 cast terms

1
castTerm ::=
2
(
3
"("
4
(
5
"BOOLEAN"
6
| "UINT64"
7
| "UINT32"
8
| "UINT16"
9
| "UINT8"
10
)
11
")"
12
)*
13
atomTerm
Copied!

BEHAVIORS AND RESTRICTIONS

The VFR supports the C-style type conversion. The values can be converted into one of the following types: BOOLEAN, UINT64, UINT32, UINT16, UINT8.

2.12.11 atom terms

1
atomTerm ::=
2
vfrExpressionCatenate
3
| vfrExpressionMatch
4
| vfrExpressionParen
5
| vfrExpressionBuildInFunction
6
| vfrExpressionConstant
7
| vfrExpressionUnaryOp
8
| vfrExpressionTernaryOp
9
| vfrExpressionMap
10
| ( "NOT" atomTerm )
11
| vfrExpressionMatch2
Copied!

2.12.11.1 catenate

1
vfrExpressionCatenate ::=
2
"catenate"
3
"(" vfrStatementExpression "," vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_CATENATE op-codes.

Example

1
string varid = MyData.String,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minsize = 6,
5
maxsize = 40,
6
inconsistentif prompt = STRING_TOKEN(STR_CHECK),
7
pushthis != catenate(stringref(STRING_TOKEN(STR_STRING_RIGHT)),
8
stringref(STRING_TOKEN(STR_STRING_LEFT))),
9
endif
10
endstring;
Copied!

2.12.11.2 match

1
vfrExpressionMatch ::=
2
"match"
3
"(" vfrStatementExpression "," vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_MATCH op-codes.

Example

1
grayoutif match(stringref(STRING_TOKEN(STR_PATTERN)),
2
stringref(STRING_TOKEN(STR_STRING)))
3
numeric varid = MyData.Data,
4
prompt = STRING_TOKEN(STR_PROMPT),
5
help = STRING_TOKEN(STR_HELP),
6
minimum = 0,
7
maximum = 243,
8
endnumeric;
9
endif;
Copied!

2.12.11.3 parenthesis

1
vfrExpressionParen ::=
2
"(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Changes the order of the calculation.

2.12.11.4 build-in functions

1
vfrExpressionBuildInFunction ::=
2
dupExp
3
| ideqvalExp
4
| ideqidExp
5
| ideqvallistExp
6
| questionref1Exp
7
| rulerefExp
8
| stringref1Exp
9
| pushthisExp
10
| securityExp
11
| getExp
Copied!

2.12.11.4.1 dup

1
dupExp ::=
2
"dup"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_DUP op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 0xf0,
6
default value = 2 + dup,
7
endnumeric;
Copied!

2.12.11.4.2 ideqval

1
ideqvalExp ::=
2
"ideqval"
3
vfrQuestionDataFieldName "==" Number
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_EQ_ID_VAL op-codes.

Example

1
grayoutif ideqval MyData.Data1 == 99;
2
numeric varid = MyData.Data,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minimum = 0,
6
maximum = 0xf0,
7
endnumeric;
8
endif;
Copied!

2.12.11.4.3 ideqid

1
ideqidExp ::=
2
"ideqid"
3
vfrQuestionDataFieldName "==" vfrQuestionDataFieldName
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_EQ_ID_ID op-codes.

Example

1
grayoutif ideqid MyData.Data2 == MyData.Data3;
2
numeric varid = MyData.Data,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minimum = 0,
6
maximum = 0xf0,
7
endnumeric;
8
endif;
Copied!

2.12.11.4.4 ideqvallist

1
ideqvallistExp ::=
2
"ideqvallist"
3
vfrQuestionDataFieldName "==" ( Number )+
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_EQ_ID_LIST op-codes.
1
grayoutif ideqvallist MyData.Data1 == 1 3;
2
numeric name = MyNumeric,
3
varid = MyData.Data,
4
prompt = STRING_TOKEN(STR_PROMPT),
5
help = STRING_TOKEN(STR_HELP),
6
minimum = 0,
7
maximum = 0xf0,
8
endnumeric;
9
endif;
Copied!

2.12.11.4.5 questionref

1
questionref1Exp ::=
2
"questionref"
3
"(" StringIdentifier | Number ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_QUESTION_REF1 op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 0xf0,
6
default value = questionref(MyNumeric),
7
endnumeric;
Copied!

2.12.11.4.6 ruleref

1
rulerefExp ::=
2
"ruleref" "(" StringIdentifier ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_RULE_REF op-codes.

Example

1
grayoutif ruleref(MyRule) == 1;
2
string varid = MyData.String,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minsize = 6,
6
maxsize = 40,
7
endstring;
8
endif;
Copied!

2.12.11.4.7 stringref

1
stringref1Exp ::=
2
"stringref" "(" getStringId ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_STRING_REF1 op-codes.

Example

1
grayoutif stringref(STRING_TOKEN(STR_STRING)) == 1;
2
string varid = MyData.String,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minsize = 6,
6
maxsize = 40,
7
endstring;
8
endif;
Copied!

2.12.11.4.8 pushthis

1
pushthisExp ::=
2
"pushthis"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_THIS op-codes.

Example

1
string varid = MyData.String,
2
prompt = STRING_TOKEN(STR_PROMPT), help = STRING_TOKEN(STR_HELP),
3
minsize = 6,
4
maxsize = 40,
5
inconsistentif prompt = STRING_TOKEN(STR_CHECK),
6
pushthis != stringref(STRING_TOKEN(STR_STRING))
7
endif
8
endstring;
Copied!

2.12.11.4.9 security

1
securityExp ::=
2
"security" "(" guidDefinition ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_SECURITY op-codes.

Example

1
grayoutif NOT security(EFI_GUID);
2
text
3
help = STRING_TOKEN(STR_HELP),
4
text = STRING_TOKEN(STR_TEXT);
5
endif;
Copied!

2.12.11.4.10 get

1
getExp ::=
2
"get" "(" vfrStorageVarId { "|" "flags" "=" vfrNumericFlags } ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_GET op-codes.
1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
read get(MyData.Data1);
7
endnumeric;
Copied!

2.12.11.5 constant

1
vfrExpressionConstant ::=
2
"TRUE"
3
| "FALSE" | "ONE"
4
| "ONES"
5
| "ZERO"
6
| "UNDEFINED"
7
| "VERSION"
8
| Number
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TRUE EFI_IFR_FALSE, EFI_IFR_ONE EFI_IFR_ONES, EFI_IFR_ZERO, EFI_IFR_UNDEFINED, or EFI_IFR_VERSION op-codes.

2.12.11.6 unary operators

1
vfrExpressionUnaryOp ::=
2
lengthExp
3
| bitwisenotExp
4
| question23refExp
5
| stringref2Exp
6
| toboolExp
7
| tostringExp
8
| unintExp
9
| toupperExp
10
| tolwerExp
11
| setExp
Copied!

2.12.11.6.1 length

1
lengthExp ::=
2
"length" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_LENGTH op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = length(stringref(STRING_TOKEN(STR_STRING))),
7
endnumeric;
Copied!

2.12.11.6.2 bitwisenot

1
bitwisenotExp ::=
2
"~" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_BITWISENOT op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = ~(length(stringref(STRING_TOKEN(STR_STRING)))),
7
endnumeric;
Copied!

2.12.11.6.3 questionrefval

1
question23refExp ::=
2
"questionrefval"
3
"("
4
{
5
DevicePath "=" "STRING_TOKEN" "\(" S:Number "\)" ","
6
}
7
{
8
Uuid "=" guidDefinition[Guid] ","
9
}
10
vfrStatementExpression
11
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_QUESTION_REF2 or EFI_IFR_QUESTION_REF3 op-codes.
1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = questionrefval(QuestionID),
7
endnumeric;
Copied!

2.12.11.6.4 stringrefval

1
stringref2Exp ::=
2
"stringrefval" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_STRING_REF2 op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = length(stringrefval(STR_STRING)),
7
endnumeric;
Copied!

2.12.11.6.5 boolval

1
toboolExp ::=
2
"boolval" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TO_BOOLEAN op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255, default value = boolval(12),
6
endnumeric;
Copied!

2.12.11.6.6 stringval

1
tostringExp ::=
2
"stringval" { "format" "=" Number "," }
3
"(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TO_STRING op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = length(stringval(format = 8, 12)),
7
endnumeric;
Copied!

2.12.11.6.7 unintval

1
unintExp ::=
2
"unintval" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TO_UINT op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = unintval(12 * 3),
7
endnumeric;
Copied!

2.12.11.6.8 toupper

1
toupperExp ::=
2
"toupper" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TO_UPPER op-codes.

Example

1
grayoutif length(toupper(stringref(STRING_TOKEN(STR_STRING))))==1;
2
string varid = MyData.String,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minsize = 6,
6
maxsize = 40,
7
endstring;
8
endif;
Copied!

2.12.11.6.9 tolower

1
tolwerExp ::=
2
"tolower" "(" vfrStatementExpression ")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TO_LOWER op-codes.
1
grayoutif length(tolower(stringref(STRING_TOKEN(STR_STRING))))==2;
2
string varid = MyData.String,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minsize = 6,
6
maxsize = 40,
7
endstring;
8
endif;
Copied!

2.12.11.6.10 set

1
setExp ::=
2
"set"
3
"("
4
vfrStorageVarId { "|" "flags" "=" vfrNumericFlags } ","
5
vfrStatementExpression
6
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_SET op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
write set(MyData.Data1,10);
7
endnumeric;
Copied!

2.12.11.7 ternary operators

1
vfrExpressionTernaryOp ::=
2
conditionalExp
3
| findExp
4
| midExp
5
| tokenExp
6
| spanExp
Copied!

2.12.11.7.1 cond

1
conditionalExp ::=
2
"cond"
3
"("
4
vfrStatementExpression1
5
"?"
6
vfrStatementExpression2
7
":"
8
vfrStatementExpression3
9
")"
Copied!

BEHAVIORS AND RESTRICTIONS

If (Expr1) then x = Expr3 else Expr2
Generates EFI_IFR_CONDITIONAL op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = cond(2 == 1 ? 5 : 10),
7
endnumeric;
Copied!

2.12.11.7.2 find

1
findExp ::=
2
"find"
3
"("
4
findFormat ( "|" findFormat )*
5
","
6
vfrStatementExpression
7
","
8
vfrStatementExpression
9
","
10
vfrStatementExpression
11
")"
12
13
findFormat ::=
14
"SENSITIVE"
15
| "INSENSITIVE"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_FIND op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value =
7
find(INSENSITIVE, (stringref(STRING_TOKEN(STR_STRING1))),
8
(stringref(STRING_TOKEN(STR_STRING2))), 1),
9
endnumeric;
Copied!

2.12.11.7.3 mid

1
midExp ::=
2
"mid"
3
"("
4
vfrStatementExpression
5
","
6
vfrStatementExpression
7
","
8
vfrStatementExpression
9
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_MID op-codes.

Example

1
grayoutif length(mid(stringref(STRING_TOKEN(STR_STRING)),6,8))==1;
2
string varid = MyData.String,
3
prompt = STRING_TOKEN(STR_PROMPT),
4
help = STRING_TOKEN(STR_HELP),
5
minsize = 6,
6
maxsize = 40,
7
endstring;
8
endif;
Copied!

2.12.11.7.4 tok

1
tokenExp ::=
2
"token"
3
"("
4
vfrStatementExpression
5
","
6
vfrStatementExpression
7
","
8
vfrStatementExpression
9
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_TOKEN op-codes.

Example

1
grayoutif length(token(stringref(STRING_TOKEN(STR_STRING1)),
2
stringref(STRING_TOKEN(STR_STRING2)), 0)) == 2;
3
string varid = MyData.String,
4
prompt = STRING_TOKEN(STR_PROMPT),
5
help = STRING_TOKEN(STR_HELP),
6
minsize = 6,
7
maxsize = 40,
8
endstring;
9
endif;
Copied!

2.12.11.7.5 span

1
spanExp ::=
2
"span"
3
"("
4
"flags" "=" spanFlags ( "|" spanFlags )*
5
","
6
vfrStatementExpression
7
","
8
vfrStatementExpression
9
","
10
vfrStatementExpression
11
")"
12
13
spanFlags ::=
14
Number
15
| "LAST_NON_MATCH"
16
| "FIRST_NON_MATCH"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_SPAN op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = span(flags = LAST_NON_MATCH,
7
stringref(STRING_TOKEN(STR_STRING1)),
8
stringref(STRING_TOKEN(STR_STRING2)),0),
9
endnumeric;
Copied!

2.12.11.8 map

1
vfrExpressionMap ::=
2
"map"
3
"("
4
vfrStatementExpression
5
":"
6
(
7
vfrStatementExpression
8
","
9
vfrStatementExpression
10
";"
11
)*
12
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_MAP op-codes.

Example

1
numeric varid = MyData.Data,
2
prompt = STRING_TOKEN(STR_PROMPT),
3
help = STRING_TOKEN(STR_HELP),
4
minimum = 0,
5
maximum = 255,
6
default value = map(pushthis:0,10;1,2;3,5;6,8;),
7
endnumeric;
Copied!

2.12.11.9 match2

1
vfrExpressionMatch ::=
2
"match2"
3
"("
4
vfrStatementExpressionPattern
5
","
6
vfrStatementExpressionString
7
","
8
guidDefinition[Guid]
9
")"
Copied!

BEHAVIORS AND RESTRICTIONS

Generates EFI_IFR_MATCH2 op-codes.

Example

1
grayoutif match2(stringref(STRING_TOKEN(STR_PATTERN)),
2
stringref(STRING_TOKEN(STR_STRING)),
3
PERL_GUID);
4
numeric varid = MyData.Data,
5
prompt = STRING_TOKEN(STR_PROMPT),
6
help = STRING_TOKEN(STR_HELP),
7
minimum = 0,
8
maximum = 243,
9
endnumeric;
10
endif;
Copied!
Last modified 1yr ago
Copy link
Contents
2.12.1 OR
BEHAVIORS AND RESTRICTIONS
2.12.2 AND
BEHAVIORS AND RESTRICTIONS
2.12.3 bitwiseor
BEHAVIORS AND RESTRICTIONS
2.12.4 bitwiseand
BEHAVIORS AND RESTRICTIONS
2.12.5 equal
BEHAVIORS AND RESTRICTIONS
2.12.6 compare
BEHAVIORS AND RESTRICTIONS
2.12.7 shift
BEHAVIORS AND RESTRICTIONS
2.12.8 add/minus
BEHAVIORS AND RESTRICTIONS
2.12.9 multiply/divide/modulo
BEHAVIORS AND RESTRICTIONS
2.12.10 cast terms
BEHAVIORS AND RESTRICTIONS
2.12.11 atom terms
2.12.11.1 catenate
BEHAVIORS AND RESTRICTIONS
Example
2.12.11.2 match
BEHAVIORS AND RESTRICTIONS
Example
2.12.11.3 parenthesis
BEHAVIORS AND RESTRICTIONS
2.12.11.4 build-in functions
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
2.12.11.5 constant
BEHAVIORS AND RESTRICTIONS
2.12.11.6 unary operators
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
BEHAVIORS AND RESTRICTIONS
Example
2.12.11.8 map
BEHAVIORS AND RESTRICTIONS
Example
2.12.11.9 match2
BEHAVIORS AND RESTRICTIONS
Example