Difference between revisions of "NXSL Formal Grammar"
Jump to navigation
Jump to search
Lukas Rypl (talk | contribs) m (Added category) |
|||
Line 172: | Line 172: | ||
REAL ::= \-?[0-9]+\.[0-9]+ | REAL ::= \-?[0-9]+\.[0-9]+ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Scripting Guide]] |
Revision as of 08:53, 28 January 2013
script ::=
module |
expression
module ::=
module_component { module_component }
module_component ::=
function |
statement_or_block |
use_statement
use_statement ::=
use any_identifier ";"
any_identifier ::=
IDENTIFIER |
COMPOUND_IDENTFIER
function ::=
sub IDENTIFIER "(" [ identifier_list ] ")" block
identifier_list ::=
IDENTIFIER { "," IDENTIFIER }
block ::=
"{" { statement_or_block } "}"
statement_or_block ::=
statement |
block
statement ::=
expression ";" |
builtin_statement |
";"
builtin_statement ::=
simple_statement ";" |
if_statement |
do_statement |
while_statement |
for_statement |
foreach_statement |
switch_statement |
array_statement |
global_statement |
break ";"
continue ";"
simple_statement ::=
keyword [ expression ]
keyword ::=
exit |
print |
println |
return
if_statement ::=
if "(" expression ")" statement_or_block [ else statement_or_block ]
for_statement ::=
for "(" expression ";" expression ";" expression ")" statement_or_block
foreach_statement ::=
foreach "(" IDENTIFIER ":" expression ")" statement_or_block
while_statement ::=
while "(" expression ")" statement_or_block
do_statement ::=
do statement_or_block while "(" expression ")" ";"
switch_statement ::=
switch "(" expression ")" "{" case { case } [ default ] "}"
case ::=
case constant ":" { statement_or_block }
default ::=
default ":" { statement_or_block }
array_statement ::=
[ global ] array identifier_list ";"
global_statement ::=
global global_variable_declaration { "," global_variable_declaration } ";"
global_variable_declaration ::=
IDENTIFIER [ "=" expression ]
expression ::=
"(" expression ")" |
IDENTIFIER "=" expression |
expression "->" IDENTIFIER |
"-" expression |
"!" expression |
"~" expression |
inc IDENTIFIER |
dec IDENTIFIER |
IDENTIFIER inc |
IDENTIFIER dec |
expression "+" expression |
expression "-" expression |
expression "*" expression |
expression "/" expression |
expression "%" expression |
expression like expression |
expression ilike expression |
expression "~=" expression |
expression match expression |
expression imatch expression |
expression "==" expression |
expression "!=" expression |
expression "<" expression |
expression "<=" expression |
expression ">" expression |
expression ">=" expression |
expression "&" expression |
expression "|" expression |
expression "^" expression |
expression "&&" expression |
expression "||" expression |
expression "<<" expression |
expression ">>" expression |
expression "." expression |
expression "?" expression ":" expression |
operand
operand ::=
function_call |
type_cast |
constant |
IDENTIFIER
type_cast ::=
builtin_type "(" expression ")"
builtin_type ::=
int32 |
int64 |
uint32 |
uint64 |
real |
string
function_call ::=
IDENTIFIER "(" [ expression { "," expression } ] ")"
constant ::=
STRING |
INT32 |
INT64 |
UINT32 |
UINT64 |
REAL |
NULL
Terminal symbols
IDENTIFIER ::= [A-Za-z_\$][A-Za-z_\$0-9]*
COMPOUND_IDENTIFIER ::= { IDENTIFIER}(::{ IDENTIFIER})+
INTEGER ::= \-?(0x)?[0-9]+
INT32 ::= INTEGER
INT64 ::= {INTEGER}L
UINT32 ::= {INTEGER}U
UINT64 ::= {INTEGER}(UL|LU)
REAL ::= \-?[0-9]+\.[0-9]+