Menu

syntax

Newton

string:=".*"
digit:=[0-9]
digits:=digit+
number:=digits[j]?
| digits'.'digit*[EeDd['+''-']?digit+]?[j]?
| digit*'.'digit+[EeDd['+''-']?digit+]?[j]?
symbol:=[a-zA-Z_][a-zA-Z_0-9]*
eol:='\r'|'\n'|'\r\n'|'\n\r'|';'|','
indent:='\t'*
comment:='#'.*
script:= preprocess* statements
preprocess:=eol | include string eol
statements:=indent statement eol statements
| indent statement
| eol
statement:=comment
| declaration
| assignement
| if_statement
| for_loop
| function_define
| class_define
declaration:='global'? symbol
assignment:=symbol_list '=' expression_list
symbol_list:=symbol[,symbol_list]*
expression_list:=expression, expression_list
| expression
expression:=or_expr '&|' expression
| or_expr
or_expr:=and_expr '||' or_expr
| and_expr
and_expr:=not_expr '&&' and_expr
| not_expr
not_expr:='!' compare_expr
| compare_expr
compare_expr:=add_expr '>' compare_expr
| add_expr '>=' compare_expr
| add_expr '<' compare_expr
| add_expr '<=' compare_expr
| add_expr '==' compare_expr
| add_expr '!=' compare_expr
| add_expr
add_expr:=mult_expr '+' add_expr
| mult_expr '-' add_expr
| mult_expr
mult_expr:=negate_expr '*' mult_expr
| negate_expr '/' mult_expr
| negate_expr
negate_expr:='-' power_expr
| power_expr
power_expr:=value '^' value
| value
value:='('expression')'
| symbol
| function_call
| closure_define
| constant
| hash
| vector
function_call:=func_prefix '(' [|expression_list] ')'
func_prefix:=symbol.func_prefix
| symbol
function_define:=function symbol '(' [|symbol_list] ')' ':' statement eol
| function symbol '(' [|symbol_list] ')' ':' eol statements
closure_define:=function '(' [|symbol_list] ')' ':' statement
| function '(' [|symbol_list] ')' ':' eol statements
hash:='{' [|tuple_list] '}'
tuple_list:=tuple, tuple_list
| tuple
tuple:=symbol ':' expression
vector:='[' vector_arguments ']'
vector_arguments:=
| expression_list
| expression ':' expression [':' expression]+
constant:= number
| string
if_statement:=if_statement 'else' if_statement 'else' block
| if_statement 'else' block
| 'if' expression block
for_loop:='for' value_list 'in' expression_list block
| 'for' assignment ';' expression ';' expression block
block:=':' statement eol
| ':' eol statements


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.