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 ParseNodeStatement(ParserContext context)
        {
            var token = context.PeekNextToken();

            switch (token.Text)
            {
            case "DEF":
                ParseDefNodeStatement(context);
                break;

            case "USE":
                var useStatement = UseStatement.Parse(context);
                var node         = context.FindNode(useStatement.NodeName);
                context.AcceptChild(node);
                break;

            default:
                ParseNode(context);
                break;
            }
        }
Ejemplo n.º 3
0
 protected virtual void ParseNodeStatement(ParserContext context) {
     var token = context.PeekNextToken();
     switch (token.Text) {
         case "DEF":
             ParseDefNodeStatement(context);
             break;
         case "USE":
             var useStatement = UseStatement.Parse(context);
             var node = context.FindNode(useStatement.NodeName);
             context.AcceptChild(node);
             break;
         default:
             ParseNode(context);
             break;
     }
 }
Ejemplo n.º 4
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;
     }
 }