The Virtual Reality Modeling Language
Specification
Appendix A. Grammar Definition
Version 2.0, ISO/IEC 14772
August 4, 1996
This section provides a detailed description of the grammar
for each node in VRML 2.0. There are four sections: Introduction, General,
Nodes, and Fields.
VRML grammar is ambiguous; semantic knowledge of the names and
types of fields, eventIns, and eventOuts for each node type
(either builtIn or user-defined 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.
- vrmlScene:
- declarations
- declarations:
- declaration
- declaration declarations
- declaration:
- nodeDeclaration
- protoDeclaration
- routeDeclaration
- NULL
- 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
- node:
- nodeTypeId { nodeGuts }
- Script { scriptGuts }
- nodeGuts:
- nodeGut
- nodeGut nodeGuts
- scriptGuts:
- scriptGut
- scriptGut scriptGuts
- scriptGut:
- nodeGut
- restrictedInterfaceDeclaration
- eventIn fieldType eventInId IS
eventInId
- eventOut fieldType eventOutId IS
eventOutId
- field fieldType fieldId IS
fieldId
- 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.
- 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
Local site : http://www.topedge.com
This material is featured under the TopPanel called TeaPot courtesy of Gavin Bell and Chris Marrin.