# Expressions Syntax

**Applies To:** Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012

An expression in X++ is used in either a mathematical or logical way. Expressions are built on the data types of the language; that is, an expression returns a value of some type. This value can be used in calculations, assignments, conditional statements, and so on.

## EBNF Description of Expressions in X++

Expression |
= |
Simple-expression [RelationalOperator Simple-expression ] |

RelationalOperator |
= |
= | != | < | > | <= | >= | like |

Simple-expression |
= |
Simple-expression [ + | - | | ] Term | Term |

Term |
= |
Compfactor { Mult-operator CompFactor } |

Mult-operator |
= |
* | / | div | mod | << | >> | & | ^ | | |

CompFactor |
= |
[ ! ] [ - | ~ ] Factor |

Factor |
= |
Literal | Enum | Variable | FunctionCall | ( If-expression ) | Select-expression |

Enum |
= |
EnumName :: Literal |

Variable |
= |
Identifier [ [ Expression ] ] [ . Expression ] |

FunctionCall |
= |
[ Expression (. | ::) | this . ] FunctionName ( argumentlist ) |

If-expression |
= |
Expression ? Expression : Expression |

Semantic restrictions apply on the preceding syntax. You cannot call any method using the :: operator. Similarly, you cannot use the this keyword without an active object; that is, if you are not within a method and so on.

## Examples

Example of expression |
Description |
---|---|

1 |
An integer literal. |

NoYes::No |
An enum-reference. |

A |
A variable-reference. |

Debtor::Find("1") |
A static method-call (returns a customer variable). |

(A > 3 ? true : false) |
An if-expression that returns true or false. |

(select CustTable where CustTable.Account == "100").NameRef |
A select-expression. Returns the nameref field in the customer table. This is a string. |

A >= B |
A logical expression. Returns true or false. |

A + B |
An arithmetic expression. Sums A and B. |

A + B / C |
Calculates B/C, and then adds this to A. |

~A + this.Value() |
Sums binary not A and the result of the method-call Value on the object in scope (this). |

Debtor::Find("1").NameRef |
Returns the NameRef field of the found customer record. |

Debtor::Find("1").Balance() |
A method call to Balance in the customer table (Debtor::Find returns a customer). Returns the balance of the customer with account number 1. |

## See also

**Announcements:** New book: "Inside Microsoft Dynamics AX 2012 R3" now available. Get your copy at the MS Press Store.

## Feedback

Loading feedback...