コード例 #1
0
        bool SetPropertyHelper(string exprStr, bool quote)
        {
            LNode expr = (InLang ?? ParsingService.Default).ParseSingle(exprStr, Sink, ParsingMode.Expressions);

            if (expr.Calls(CodeSymbols.Assign, 2) && !expr[0].IsCall)
            {
                object key    = expr[0].IsLiteral ? expr[0].Value : expr[0].Name;
                LNode  valueN = expr[1];
                object value  = valueN.Value;
                if (quote)
                {
                    value = valueN.Calls(CodeSymbols.Braces) ? valueN.Args.AsLNode(CodeSymbols.Splice) : valueN;
                }
                if (!(value is NoValue))
                {
                    MacroProcessor.DefaultScopedProperties[key] = value;
                    return(true);
                }
            }
            if (quote)
            {
                Sink.Error("Command line", "--snippet: syntax error. Expected `key=code` where `key` is a literal or identifier with which to associate a code snippet.");
            }
            else
            {
                Sink.Error("Command line", "--set: syntax error. Expected `key=value` where `key` is a literal or identifier with which to associate a value.");
            }
            return(false);
        }
コード例 #2
0
ファイル: Compiler.cs プロジェクト: dadhi/ecsharp
        bool SetPropertyHelper(string exprStr, bool quote)
        {
            LNode expr = (InLang ?? ParsingService.Default).ParseSingle(exprStr, Sink, ParsingMode.Expressions);

            if (expr.Calls(CodeSymbols.Assign, 2) && !expr[0].IsCall)
            {
                LNode keyNode = expr[0], valueNode = expr[1];
                if (!keyNode.IsCall)
                {
                    object key = keyNode.IsLiteral ? keyNode.Value : keyNode.Name;
                    if (quote)
                    {
                        valueNode = valueNode.Calls(CodeSymbols.Braces) ? valueNode.WithTarget(CodeSymbols.Splice) : valueNode;
                        MacroProcessor.DefaultScopedProperties[key] = valueNode;
                        return(true);
                    }
                    else if (!valueNode.IsCall)
                    {
                        object value = valueNode.IsLiteral ? valueNode.Value : valueNode.Name.Name;
                        MacroProcessor.DefaultScopedProperties[key] = value;
                        return(true);
                    }
                }
            }
            if (quote)
            {
                Sink.Error("Command line", "--snippet: syntax error. Expected `key=code` where `key` is a literal or identifier with which to associate a code snippet.");
            }
            else
            {
                Sink.Error("Command line", "--set: syntax error. Expected `key=value` where `key` and `value` are literals or identifiers.");
            }
            return(false);
        }