Formula Node Syntax

The Formula Node syntax is similar to the syntax used in text-based programming languages. Remember to end assignments with a semicolon (;) as in C. Use scope rules to declare variables in Formula Nodes. Also, keep in mind the allowed functions and the allowed operators and their precedence in the Formula Node.

Note Note  You can use Formula Node most effectively if you are familiar with the C programming language. LabVIEW Help assumes you are familiar with C and does not contain any topics related to programming in C. Refer to The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie or Teach Yourself C by Herbert Schildt for more information.

The Formula Node syntax is summarized below using Backus-Naur Form (BNF notation). The summary includes non-terminal symbols: compound-statement, identifier, conditional-expression, number, array-size, floating-point-type, integer-type, left-hand-side, assignment-operator, and function. Symbols in red bold monospace are terminal symbols given exactly as they should be reproduced. The symbol # denotes any number of the term following it.

statement-list:

statement ;
statement ; statement-list

statement:

assignment
compound-statement
control-statement
conditional-statement
iterative-statement
switch-statement
variable-declaration

assignment:

expression
left-hand-side assignment-operator assignment

expression:

expression binary-operator expression
unary-operator expression
expression unary-operator
expression ? expression : expression
( expression )
identifier
constant
function-name ( argument-list )

left-hand-side:

identifier
identifier array-subscription

array-subscription:

[assignment]
[assignment] array-subscription

assignment-operator: one of

= += –= *= /= >>= <<= &= ^= |= %= **=

binary-operator: one of

+ – * / ^ != == > < >= <= && || & | % **

unary-operator: one of

+ – ! ++ –– ~

argument-list:

expression
expression , argument-list

constant:

pi
number

compound-statement:

{ statement-list }

The following table provides the Formula Node syntax for control, conditional, iterative, and switch statements.

Statement TypeConstructGrammarDescription/Example
Control StatementBreak Statementbreak Use the break keyword to exit the nearest Do, For, or While Loop or switch statement in the Formula Node.
Continue StatementcontinueUse the continue keyword to transfer control to the next iteration of the nearest Do, For, or While Loop in the Formula Node.
Conditional Statementconditional-statement:
   if-statement
   if-else-statement

if (y==x && a[2][3]<a[0][1]) {
     int32 temp;
     temp = a[2][3];
     a[2][3] = y;
     y=temp;
     }
else
     x=y;
If Statementif-statement:
   if ( assignment ) statement

If-Else Statementif-else-statement:
   if-statement else statement
Iterative Statementiterative-statement:
   do-statement
   for-statement
   while-statement
Do Loopsdo statement while ( assignment ) do {
     int32 temp;
     temp = --a[2]+y;
     y=y-1;
     }
while (y!=x && a[2]>=a[0]);
For Loopsfor ( [assignment] ; [assignment] ; [assignment] ) statement for (y=5; y<x; y*=2) {
     int32 temp;
     temp = --a[2]+y;
     x-=temp;
     }
While Loopswhile ( assignment ) statement while (y!=x && a[2]>=a[0]) {
     int32 temp;
     temp = --a[2]+y;
     y=y-1;
     }
Switch Statementswitch ( assignment ) { case-statement-list } switch(month){
     case 2: days = evenyear? 29: 28; break;
     case 4:case 6:case9: days = 30; break;
     default: days = 31; break;
     }
Case Statement Listcase-statement-list:
   case-statement
   case-statement-list case-statement
Case Statementcase-statement:
   case number : statement-list
   default : statement-list

variable-declaration:

type-specifier identifier
type-specifier identifier array-index-list
type-spec identifier = assignment

array-index-list:

[integer-constant]
[integer-constant]array-index-list

type-specifier:

floating-point-type
integer-type

floating-point-type:

float
float32
float64

integer-type:

int
int8
int16
int32
uInt8
uInt16
uInt32

non-digit: one of

_ a~z A~Z

digit: one of

0 1 2 3 4 5 6 7 8 9

nonzero-digit: one of

1 2 3 4 5 6 7 8 9

binary-digit: one of

0 1

octal-digit: one of

0 1 2 3 4 5 6 7

hex-digit: one of

0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

identifier:

non-digit [non-first-character]

non-first-character:

non-digit [non-first-character]
digit [non-first-character]

number:

integer-constant
float-constant

integer-constant:

decimal-constant
binary-constant
octal-constant
hex-constant

decimal-constant:

nonzero-digit #digit

binary-constant:

0b #binary-digit
0B #binary-digit

octal-constant:

0 #octal-digit

hex-constant:

0x #hex-digit
0X #hex-digit

float-constant:

fraction exponent-part
decimal-constant exponent-part

fraction:

#digit . digit #digit

exponent-part:

e [sign] #digit
E [sign] #digit

sign: one of

+ -

comment:

//comment
/* comment */