Ejemplo n.º 1
0
        protected virtual void ParseNode(ParserContext context)
        {
            var token = context.PeekNextToken();

            if (token.Type == VRML97TokenType.EOF)
            {
                return;
            }
            switch (token.Text)
            {
            case "Script":
                ParseScriptNode(context);
                break;

            default:
                var nodeTypeId = ParseNodeTypeId(context);
                var node       = context.CreateNode(nodeTypeId, context.NodeName);
                context.NodeName = null;
                context.PushFieldContainer(node);
                if (context.ReadNextToken().Type != VRML97TokenType.OpenBrace)
                {
                    throw new InvalidVRMLSyntaxException("Open brace expected");
                }
                ParseNodeBody(context);
                if (context.ReadNextToken().Type != VRML97TokenType.CloseBrace)
                {
                    throw new InvalidVRMLSyntaxException();
                }
                context.PopFieldContainer();
                context.AcceptChild(node);
                break;
            }
        }
Ejemplo n.º 2
0
        protected virtual void ParseProto(ParserContext context)
        {
            context.ReadKeyword("PROTO");

            var proto = new ProtoNode {
                name = ParseNodeNameId(context)
            };

            context.PushNodeContainer(proto.children);
            context.PushFieldContainer(proto);
            ParseInterfaceDeclarations(context);
            if (context.ReadNextToken().Type != VRML97TokenType.OpenBrace)
            {
                throw new InvalidVRMLSyntaxException();
            }
            ParseProtoBody(context);
            if (context.ReadNextToken().Type != VRML97TokenType.CloseBrace)
            {
                throw new InvalidVRMLSyntaxException();
            }
            context.PopFieldContainer();
            context.PopNodeContainer();
            context.RegisterPtototype(proto);
        }
Ejemplo n.º 3
0
 protected virtual void ParseNode(ParserContext context) {
     var token = context.PeekNextToken();
     if (token.Type == VRML97TokenType.EOF) return;
     switch (token.Text) {
         case "Script":
             ParseScriptNode(context);
             break;
         default:
             var nodeTypeId = ParseNodeTypeId(context);
             var node = context.CreateNode(nodeTypeId, context.NodeName);
             context.NodeName = null;
             context.PushFieldContainer(node);
             if (context.ReadNextToken().Type != VRML97TokenType.OpenBrace) {
                 throw new InvalidVRMLSyntaxException("Open brace expected");
             }
             ParseNodeBody(context);
             if (context.ReadNextToken().Type != VRML97TokenType.CloseBrace) {
                 throw new InvalidVRMLSyntaxException();
             }
             context.PopFieldContainer();
             context.AcceptChild(node);
             break;
     }
 }
Ejemplo n.º 4
0
        protected virtual void ParseProto(ParserContext context) {
            context.ReadKeyword("PROTO");

            var proto = new ProtoNode {
                name = ParseNodeNameId(context)
            };
            context.PushNodeContainer(proto.children);
            context.PushFieldContainer(proto);
            ParseInterfaceDeclarations(context);
            if (context.ReadNextToken().Type != VRML97TokenType.OpenBrace) {
                throw new InvalidVRMLSyntaxException();
            }
            ParseProtoBody(context);
            if (context.ReadNextToken().Type != VRML97TokenType.CloseBrace) {
                throw new InvalidVRMLSyntaxException();
            }
            context.PopFieldContainer();
            context.PopNodeContainer();
            context.RegisterPtototype(proto);
        }