The Moving Worlds VRML 2.0 Specification
Draft #2
Syntax Summary (BNF)
April 18, 1996
This section provides a detailed description of each node in VRML 2.0. There
is a helpful table of contents at the top organized functionally. However,
the nodes are listed alphabetically. (An alphabetical Index of Nodes and Fields is also available.)
This document's URL: http://vrml.sgi.com/moving-worlds/spec/BNF.html
This section describes the syntax (grammar) of the Moving Worlds human-readable
file format.
This grammar is ambiguous; semantic knowledge of the names and types of
fields, eventIns, and eventOuts for each node type (either builtIn or userDefined
using PROTO or EXTERNROTO) must be used during parsing so that the parser knows which field type
is being parsed.
The '#' (0x23) character begins a comment wherever it appears outside of
quoted SFString or MFString fields. The '#' character and all characters
until the next carriage-return or newline make up the comment and are treated
as whitespace.
The carriage return (0x0d), newline (0x0a), space (0x20), tab (0x09), and
comma (0x2c) characters are whitespace characters wherever they appear outside
of quoted SFString or MFString fields. Any number of whitespace characters
and comments may be used to separate the syntactic entities of a VRML file.
Please see the Nodes Reference section of the Moving Worlds specification for a description of the allowed
fields, eventIns and eventOuts for all pre-defined node types. Also note
that some of the basic types that will typically be handled by a lexical
analyzer (sffloatValue, sftimeValue, sfint32Value, and sfstringValue) have not been formally specified; please see the Fields Reference section
of the spec for a more complete description of their syntax.
General
- vrmlScene:
- declarations
- declarations:
- declaration
- declaration declarations
- declaration:
- nodeDeclaration
- protoDeclaration
- routeDeclaration
- nodeDeclaration:
- node
- DEF nodeNameId node
- USE nodeNameId
- protoDeclaration:
- proto
- externproto
- proto:
- PROTO nodeTypeId [ interface_declarations ] { vrmlScene }
- interfaceDeclarations:
- interfaceDeclaration
- interfaceDeclaration interfaceDeclarations
- restrictedInterfaceDeclaration:
- eventIn fieldType eventInId
- eventOut fieldType eventOutId
- field fieldType fieldId fieldValue
- interfaceDeclaration:
- restrictedInterfaceDeclaration
- exposedField fieldType fieldId fieldValue
- externproto:
- EXTERNPROTO nodeTypeId [ externInterfaceDeclarations ] mfstringValue
- externInterfaceDeclarations:
- externInterfaceDeclaration
- externInterfaceDeclaration externInterfaceDeclarations
- externInterfaceDeclaration:
- eventIn fieldType eventInId
- eventOut fieldType eventOutId
- field fieldType fieldId
- exposedField fieldType fieldId
- routeDeclaration:
- ROUTE nodeNameId . eventOutId TO nodeNameId . eventInId
Nodes
- node:
- nodeTypeId { nodeGuts }
- Script { scriptGuts }
- nodeGuts:
- nodeGut
- nodeGut nodeGuts
- scriptGuts:
- scriptGut
- scriptGut scriptGuts
- scriptGut:
- nodeGut
- restrictedInterfaceDeclaration
- nodeGut:
- fieldId fieldValue
- fieldId IS fieldId
- eventInId IS eventInId
- eventOutId IS eventOutId
- routeDeclaration
- protoDeclaration
- nodeNameId:
- Id
- nodeTypeId:
- Id
- fieldId:
- Id
- eventInId:
- Id
- eventOutId:
- Id
- Id:
- IdFirstChar
- IdFirstChar IdRestChars
- IdFirstChar:
- Any ISO-10646 character encoded using UTF-8 except: 0x30-0x39, 0x0-0x20,
0x22, 0x23, 0x27, 0x2c, 0x2e, 0x5b, 0x5c, 0x5d, 0x7b, 0x7d.
- IdRestChars:
- Any number of ISO-10646 characters except: 0x0-0x20, 0x22, 0x23, 0x27, 0x2c,
0x2e, 0x5b, 0x5c, 0x5d, 0x7b, 0x7d.
Fields
- fieldType:
- MFColor
- MFFloat
- MFInt32
- MFNode
- MFRotation
- MFString
- MFVec2f
- MFVec3f
- SFBool
- SFColor
- SFFloat
- SFImage
- SFInt32
- SFNode
- SFRotation
- SFString
- SFTime
- SFVec2f
- SFVec3f
- fieldValue:
- sfboolValue
- sfcolorValue
- sffloatValue
- sfimageValue
- sfint32Value
- sfnodeValue
- sfrotationValue
- sfstringValue
- sftimeValue
- sfvec2fValue
- sfvec3fValue
- mfcolorValue
- mffloatValue
- mfint32Value
- mfnodeValue
- mfrotationValue
- mfstringValue
- mfvec2fValue
- mfvec3fValue
- sfboolValue:
- TRUE
- FALSE
- sfcolorValue:
- float float float
- sffloatValue:
- ... floating point number in ANSI C floating point format...
- sfimageValue:
- int32 int32 int32 int32s...
- sfint32Value:
- [0-9]+
- 0x[0-9A-F]+
- sfnodeValue:
- nodeDeclaration
- NULL
- sfrotationValue:
- float float float float
- sfstringValue:
- ".*" ... double-quotes must be \", backslashes must be \\...
- sftimeValue:
- ... double-precision number in ANSI C floating point format...
- sfvec2fValue:
- float float
- sfvec3fValue:
- float float float
- mfcolorValue:
- sfcolorValue
- [ ]
- [ sfcolorValues ]
- sfcolorValues:
- sfcolorValue
- sfcolorValue sfcolorValues
- mffloatValue:
- sffloatValue
- [ ]
- [ sffloatValues ]
- sffloatValues:
- sffloatValue
- sffloatValue sffloatValues
- mfint32Value:
- sfint32Value
- [ ]
- [ sfint32Values ]
- sfint32Values:
- sfint32Value
- sfint32Value sfint32Values
- mfnodeValue:
- nodeDeclaration
- [ ]
- [ nodeDeclarations ]
- nodeDeclarations:
- nodeDeclaration
- nodeDeclaration nodeDeclarations
- mfrotationValue:
- sfrotationValue
- [ ]
- [ sfrotationValues ]
- sfrotationValues:
- sfrotationValue
- sfrotationValue sfrotationValues
- mfstringValue:
- sfstringValue
- [ ]
- [ sfstringValues ]
- sfstringValues:
- sfstringValue
- sfstringValue sfstringValues
- mfvec2fValue:
- sfvec2fValue
- [ ]
- [ sfvec2fValues]
- sfvec2fValues:
- sfvec2fValue
- sfvec2fValue sfvec2fValues
- mfvec3fValue:
- sfvec3fValue
- [ ]
- [ sfvec3fValues ]
- sfvec3fValues:
- sfvec3fValue
- sfvec3fValue sfvec3fValues
[ Return to VRML 2.0 Table of Contents ]