> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lexical Conventions

> Understanding identifiers, punctuation, operators, constants, and comments in the FlexiLayout language.

## Identifiers

An **identifier** is a sequence of characters used to denote one of the following:

* Block name
* Element name
* Constant name
* Variable name
* Keyword

Identifiers are case-insensitive.

**Identifier Syntax:**

```
identifier:
nondigit
identifier nondigit
identifier digit
nondigit : one of
_ a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
digit : one of
0 1 2 3 4 5 6 7 8 9
```

## Punctuation Characters

The following punctuation characters can be used:

`. , ( ) * / + - = < > { } : ; ! & |`

The punctuation characters `( )` and `{ }` must appear in pairs.

## Operator Precedence and Associativity

The highest precedence level is at the top of the table.

| Operator                                        | Meaning                        | Associativity |
| :---------------------------------------------- | :----------------------------- | :------------ |
| `( )`                                           | Function call                  |               |
| `:`                                             | Function call                  |               |
| `.`                                             | Member selection               | Left to right |
| `+` `–`                                         | Unary positive, Unary negative |               |
| `*` `/`                                         | Multiplication, Division       | Left to right |
| `+` `–`                                         | Addition, Subtraction          | Left to right |
| `NOT`                                           | Logical NOT (unary)            |               |
| **Comparison operations (have equal priority)** |                                |               |
| `<`                                             | Less than                      | Left to right |
| `>`                                             | Greater than                   | Left to right |
| `<=`                                            | Less than or equal to          | Left to right |
| `>=`                                            | Greater than or equal to       | Left to right |
| `==`                                            | Equality                       | Left to right |
| `!=`                                            | Inequality                     | Left to right |
|                                                 |                                |               |
| `AND`                                           | Logical AND                    | Left to right |
| `OR`                                            | Logical OR                     | Left to right |

## Assignment Operator

The `=` operator assigns a value to a variable.

For example:

```
Distance a;
a = Page( 1 ).RectGlobal.Width;
```

The data type of the expression must be compatible with the data type of the variable.

## Constants

The FlexiLayout language uses only global constants (available in all Code Editor sections).

To view and edit the list of constants defined for the current activity, click the more icon to open the menu of the **Search Elements** tree and select **Constants**.

## Comments

You can add comments to the code. The comments have the same format as in the C language and can be written in one of the following ways:

* The `/*` (slash, asterisk) characters, followed by any sequence of characters (including new lines), followed by the `*/` characters.
* The `//` (two slashes) characters, followed by any sequence of characters. A new line not immediately preceded by a backslash terminates this form of comment.
