Expressions Syntax

Expressions Syntax


The Backus-Naur Form (BNF) notation can be used to precisely describe any language. For expressions, it provides the full description of everything that can be typed within an expression, with the appropriate syntax.

As an introduction on how to read BNF notation, you simply have to know that non-bold items on the left of the arrow can be replaced by one of the items in the list on the right. A vertical bar "|" stands for a choice among a number of possibilities ("or"). If the item on the right of the arrow is also non-bold, it can in turn be replaced, and so on. Terminal tokens indicate that they have no options of their own, and are listed in bold.

For example, the following lines show how -5 * (Fc + 20) can be derived from "expression" by repeated substitutions:

expression
expression * expression
expression * (expression)
expression * (expression + expression)
single_expression * (single_expression + single_expression)
constant * (predefined_token + constant)
integer_value * (Fc + integer_value)
-5 * ( Fc + 20 )

Substitution Rules


expression ' single_expression
| expression + expression
| expression - expression
| expression * expression
| expression / expression
| expression % expression
| - expression
| + expression
| ( expression )


single_expression ' constant
|predefined_token
|predefined_function
|math_function
|scene_element
|local_variable

constant ' integer_value
|float_value

predefined_token ' Fc
|Fs
|Fe
|T
|PI
|E

predefined_function ' randBool( seed )
|rand_0_1( seed )
|RAND( seed, min_value, max_value )

seed ' positive_integer_value
|-
|Ø (nothing)

math_function ' sin( expression )
|cos( expression )
|log( expression )
|exp( expression )
|abs( expression )
|sqrt( expression )
|pow( expression , expression )
|min( expression , expression )
|max( expression , expression )
|av( list_of_expressions )
|cond(conditional_expression , expression , expression )
|at_time ( expression , scene_element )
|at_frame ( expression , scene_element )
|ctr_dist ( scene_element , scene_element )
|ctr_dist_cam ( scene_element )
|ctr_dist_cam_int ( scene_element )
|sinus ( expression , expression, expression )
|oscil ( expression , expression , expression , expression , interpolation_type, expression , expression , interpolation_type )
|ease_in (expression , expression , interpolation_type)
|ease_out ( expression , expression , interpolation_type)
|noise ( expression , expression, expression )
|fmod ( expression , expression )
|has_relation ( scene_element , relation_name , direction_type )

direction_type ' FORWARD
|BACKWARD

interpolation_type ' LinearInterp
   |SplineInterp

relation_name ' Blattice
|BptchDeform
|BSplDeform
|BWave
|Bool
|CamConstr
|CamInt
|CamIntPath
|CamPath
|CamUpVct
|Clay
|Cluster
|ClusterCtr
|Cns2Pnts
|Cns3Pnts
|CnsDir
|CnsFPntObj
|CnsNorm
|CnsObjPnt
|CnsOri
|CnsPivPln
|CnsPln
|CnsPos
|CnsPosLim
|CnsPrefAxis
|CnsRotLim
|CnsScl
|CnsTang
|CnsUpVct
|Custom
|DynDGrav
|DynFan
|DynForce
|DynGrav
|DynNail
|DynObst
|DynWind
|EnvShp
|Exp
|Extract
|Extrusion
|Fcurves
|FcvKeys
|FlexEnv
|FourSided
|Inst
|InvKin
|Inverse
|JntModel
|LigConstr
|LigInt
|LigIntCons
|LigIntPath
|LigPath
|LigSelection
|Mat
|MovePtDef
|MovePtGen
|NLattice
|NPtchDeform
|NSelection
|NSplDeform
|NWave
|Parent
|Path
|Pict
|QSControl
|Qstretch
|Revolution
|RigdEnv
|Rounding
|Shader
|Shader_Array
|Shape
|Skinning
|Symmetry
|T2DEnv
|T2DGlb
|T2DLoc
|T3DGlb
|T3DLoc
|TagGroup
|Trajectory
|Trim
|Vertices
|WavPath
|Zip

list_of_expressions ' expression
|list_of_expressions , expression

conditional_expression ' expression
|expression < expression
|expression > expression
|expression <= expression
|expression >= expression
|expression == expression
|expression != expression

scene_element ' chapter_id element_name . parameter

chapter_id ' MOD
|LIG
|CAM
|MAT
|T2D
|T3D
|WAV
|CHN
| Ø (nothing)

element_name ' a_string_of_characters

parameter ' model_list
|light_list
|camera_list
|material_list
|2Dtexture_list
|3Dtexture_list
|wave_list
|channel_list

model_list ' model_common_list
model_lattice
model_spline_fitting
model_patch_fitting
model_shape_list
model_cluster_list
model_dynamics
model_kine_list
model_metaclay_list

light_list ' light_infinite
|light_spot
|light_point
|light_sun

light_infinite ' lgetnx
lgetny
lgetnz
lgtrs
ligvis
lgr
lgg
lgb
lgumbr

light_spot ' lgetnx
lgetny
lgetnz
lgietx
lgiety
lgietz
lgtrs
lgitrs
ligvis
lgr
lgg
lgb
lgcone
lgsprd
lgstrt
lgend
lgumbr
larotx
laroty
larotz
lasclx
lascly
lasclz

light_point ' lgetnx
lgetny
lgetnz
lgtrs
ligvis
lgr
lgg
lgb
lgstrt
lgend
lgumbr
larotx
laroty
larotz
lasclx
lascly
lasclz

light_sun ' lgr
lgg
lgb
lgumbr

camera_list ' cmetnx
cmetny
cmetnz
cmietx
cmiety
cmietz
cmtrs
cmitrs
camvis
cmroll
cmfov
cmnear
cmfar
cmffcl
cmfstp
cmfdst
fdstrt
fdstop
fdred
fdgreen
fdblue
fdtransp
cmpdst
cmpszx
cmpszy
cmpofx
cmpofy
cmfnfc
cmfffc
cmfout
cmfcoc
cmpact

material_list ' mtambr
mtambg
mtambb
mtdifr
mtdifg
mtdifb
mtspcr
mtspcg
mtspcb
mtspcd
mtrefl
mttrsp
mtrind
mtblrw
mtblrd

2Dtexture_list ' t2uscl
t2vscl
t2uoff
t2voff
t2bld
t2amb
t2diff
t2spec
t2trsp
t2refl
t2roug
t2refm
t2rot
t2Srtx
t2Srty
t2Srtz
t2Sslx
t2Ssly
t2Sslz
t2Strx
t2Stry
t2Strz

3Dtexture_list ' t3spce
t3str
t3powr
t3spce
t3angl
t3dbld
t3amb
t3diff
t3spec
t3refl
t3trsp
t3rou
t3fac2
t3fac3
t3fac4
t3cl1r
t3cl1g
t3cl1b
t3cl2r
t3cl2g
t3dc2a
t3cl2b
t3dc1a
t3cl3r
t3cl3g
t3cl3b
t3dc3a
t3cl4r
t3cl4g
t3cl4b
t3dc4a
t3cl5r
t3cl5g
t3cl5b
t3dc5a
t3sclx
t3scly
t3sclz
t3rotx
t3roty
t3rotz
t3trsx
t3trsy
t3trsz

wave_list ' wvetnx
wvetny
wvetnz
wvrotx
wvroty
wvrotz
wvsclx
wvscly
wvsclz
wvtrns

channel_list ' - depends on which driver is used

local_variable ' A
|B
|C
|D

model_common_list ' local_global_flag etrnx
local_global_flag etrny
local_global_flag etrnz
local_global_flag scalx
local_global_flag scaly
local_global_flag scalz
local_global_flag rotx
local_global_flag roty
local_global_flag rotz
trans
nvisib
bvisib
matte
bmatte

local_global_flag ' G.
|L.
|0 (none)

model_lattice ' ltnode
ltbrch

model_spline_fitting ' nsfscx
nsfscy
nsfscz
nsfrol
nsftrx
nsftry
nsftrz

bsfscx
bsfscy
bsfscz
bsfrol
bsftrx
bsftry
bsftrz

model_patch_fitting ' npfscx
npfscy
npfscz
npfrtx
npfrty
npfrtz
npftrx
npftry
npftrz

bpfscx
bpfscy
bpfscz
bpfrtx
bpfrty
bpfrtz
bpftrx
bpftry
bpftrz
model_shape_list ' shape
wshp_id

model_cluster_list ' clustr_clusterName
cw_clusterName_id

id ' positive_integer_value

clusterName ' a_string_of_characters

model_dynamics ' elast
srough
krough
rtcns

model_kine_list ' velx
vely
velz
accx
accy
accz
rvelx
rvely
rvelz
raccx
raccy
raccz

model_metaclay_list ' clywgt
clayex
clayey
clayez

SOFTIMAGE 3D Reference - 19 APR 1996