Ejemplo n.º 1
0
        public object Visit(ValueWithUndefinedOrNullDefaultNode node)
        {
            if (node.Value is VariableNode variableNode)
            {
                if (!_variables.ContainsKey(variableNode.Identity))
                {
                    return(node.DefaultValue.Accept(this));
                }
            }

            return(node.Value.Accept(this) ?? node.DefaultValue.Accept(this));
        }
Ejemplo n.º 2
0
        private bool TryValueOrUndefinedOrNullDefault(ParserContext context, out IAstNode instr)
        {
            instr = null;

            if (!context.Stream.Consume <IAstNode>(TryValue, context, out var value))
            {
                return(false);
            }

            if (!context.Stream.Consume(TokenTypes.DefaultUndefinedOrNullValue))
            {
                return(false);
            }

            if (!context.Stream.Consume <IAstNode>(TryFactor, context, out var defaultValue))
            {
                return(false);
            }

            instr = new ValueWithUndefinedOrNullDefaultNode(value, defaultValue);
            return(true);
        }