3dsMaxMaxScript语法
以下是完整的MAXScript在EBNF语法形式。与在线参考有轻微的不同。
这些规则通常包含⼀个具有特殊意义的字符数。特殊字符的规则有以下意义:
[...] -- 括号内的项是可选的
(...|...|...) -- 选择其中的⼀个
{...}
{...}+ 你可以指定⼀次或多次
::= -- 定义⼀个名称的语法规则
<rule> -- 你可以插⼊定义的命名规则
解放的姜戈EBNF形式的⼀个例⼦:
[-]{<digit>}[.{<digit>}][(e | E)[+ | -]{<digit>}+]
解释如下:
语法定义
[-]{<digit>}⼀个可选的负号, 和 0或多个数字英汉双语
[.{<digit>}]⼀个可选的序列(指数部分)组成的:⼀个句点,和 0或多个数字
[(e | E)[+ | -]{<digit>}+]⼀个可选的序列(指数部分)组成的:
’r;e’ 或者 ’r;E’, 和⼀个可选的正负符号,和 1个或多个数字
<program> ::= { <expr> }+ <expr> ::= <simple_expr> <variable_decls>
<assignment>
<if_expr>
<while_loop>
<do_loop>
<for_loop>
<loop_exit>
<ca_expr>
<struct_def>
<try_expr>
<variable_decls>
<function_def>
<function_return>
<context_expr>
<max_command>
<utility_def>
<rollout_def>
<tool_def>
<rcmenu_def>
<macroscript_def>
<plugin_def>
<variable_decls> ::= ( local | global ) <decl> { , <decl> } persistent global <decl> { , <decl> }
<decl> ::= <var_name> [ = <expr> ] -- name and optional
-- initial value
<var_name> ::= { <alphanumeric> | _ }
'{ <any_char_except_quote> }'
<assignment> ::= <destination> = <expr>
<destination> += <expr>
<destination> -= <expr>
<destination> *= <expr>
<destination> /= <expr>
<destination> ::= <var_name>
<property>
<index>
蛤蜊怎么吃
<if_expr> ::= if <expr> then <expr> [ el <expr> ]
if <expr> do <expr>
<while_loop> ::= while <expr> do <expr>
<do_loop> ::= do <expr> while <expr>
<for_loop> ::= for <name> ( in | = ) <source> (do | collect) <expr> <source> ::= <expr> to <expr> [ by <expr> ] [ where <expr> ]
<expr> [ where <expr> ]
<loop-exit> ::= exit [ with <expr> ]
<loop-continue> ::= continue
<ca_expr> ::= ca [ <expr> ] of ( { <ca_item> } )
<ca_item> ::= <factor> : <expr>
default : <expr>
<struct_def> ::= struct (<member> { , <member> } )
<member> ::= <name> [ = <expr> ] -- name and optional initial value
<function_def>
<try_expr> ::= try <expr> catch <expr>
<function_def> ::= [ mapped ] (function | fn) <var_name> { <arg> } = <expr> <arg> ::= <var_name>
<var_name>: [ <operand> ]
<function_return> ::= return <expr>
<context_expr> ::= <context> { , <context> } <expr>
<context> ::= [with] animate <logical_expr>
at level <operand>
at time <operand>
in <operand>
[in] coordsys ( local | world | parent | <operand> )
about ( pivot | lection | coordsys | <operand> )
[ with ] undo <logical_expr>
<t_context> ::= t <context>
<utility_def> ::= utility <var_name> <string> { <var_name>:<operand> } \ ( { <utility_clau> }+ )
满都海公园<utility_clau> ::= <rollout>
<rollout_clau>
<rollout_def> ::= rollout <var_name> <string> { <var_name>:<operand> } \ ( { <rollout_clau> }+ )
鲁西西传主要内容<rollout_clau> ::= local <decl> { , <decl> }
<function_def>
<struct_def>
<moutool>
推测造句<item_group>
<rollout_item>
<rollout_handler>
<item_group> ::= group <string> ( { <rollout_item> } )
<rollout_handler> ::= on <var_name> <var_name> { <var_name> } do <expr>
<rollout_item> ::= <item_type> <var_name> [ <string> ] { <var_name>:<operand> }
<item_type> ::= label
button
edittext
combobox
dropdownList
listbox
spinner
slider
pickbutton
radiobuttons
checkbox
checkbutton
colorPicker
mapbutton
materialbutton
progressbar
timer
bitmap
<rcmenu_def> ::= rcmenu <var_name> ( { <rcmenu_clau> }+ )
<rcmenu_clau> ::= local <decl> { , <decl> }
<function_def>
<struct_def>
<rcmenu_item>
<rcmenu_handler>
<rcmenu_handler> ::= on <var_name> <var_name> do <expr>
<rcmenu_item> ::= <rcmenu_item_type> <var_name> <string> { <var_name>:<operand> } <rcmenu_item_type>::= menuitem
parator
submenu
<macroscript_def> ::= macroscript <var_name> <string> { <var_name>:<operand> } \ ( <expr_q> )
<moutool_def> ::= tool <var_name> { <var_name>:<operand> } ( { <tool_clau> }+ )
<tool_clau> ::= local <decl> { , <decl> }
<function_def>
<struct_def>
古言小说
<tool_handler>
<tool_handler> ::= on <var_name> <var_name> { <var_name> } do <expr>
<plugin_def> ::= plugin <var_name> <var_name> { <var_name>:<operand> } \
( { <plugin_clau> }+ )
<plugin_clau> ::= local <decl> { , <decl> }
<function_def>
<struct_def>
<parameters>
<moutool_def>
<rollout_def>
<plugin_handler>
<parameters> ::= parameters <var_name> { <var_name>:<operand> } ( { <param_clau> }+ ) <param_clau> ::= { <param_defs> }+百度为什么叫度娘
{ <param_handler> }
<param_defs> ::= <var_name> { <var_name>:<operand> }
<param_handler> ::= on <var_name> <var_name> { <var_name> } do <expr>
<plugin_handler> ::= on <var_name> do <expr>
<simple_expr> ::= <operand>
<math_expr>
<compare_expr>
<logical_expr>
<function_call>
<expr_q>
<math_expr> ::= <math_operand> + <math_operand> -- standard arithmetic addition
<math_operand> - <math_operand> -- standard arithmetic subtraction
<math_operand> * <math_operand> -- standard arithmetic multiplication
<math_operand> / <math_operand> -- standard arithmetic division
<math_operand> ^ <math_operand> -- exponential, rai to the power
<math_operand> as <class> -- conversion between types
<math_operand> ::= <operand>
<function_call>