Beispiel #1
0
        public static Expression MakeOperator(string @operator, FunctionExpression function)
        {
            var token = new Token(function.Token, TokenType.Global, "global", TokenSubType.Keyword);
            var global = new GlobalExpression(token);

            token = new Token(function.Token, TokenType.Identifier, "__ops", TokenSubType.None);
            var opsField = new FieldExpression(token, global);

            token = new Token(function.Token, TokenType.String, @operator, TokenSubType.Operator);
            var opField = new FieldExpression(token, opsField);

            token = new Token(function.Token, TokenType.Assign, "=", TokenSubType.Operator);
            return new BinaryOperatorExpression(token, opField, function);
        }
Beispiel #2
0
        public Expression Parse(Parser parser, Token token)
        {
            string name;
            List<string> arguments;
            string otherArgs;
            ScopeExpression body;
            bool isOperator;
            bool trailingSemicolon;

            ParseFunction(parser, token, false, out trailingSemicolon, out name, out arguments, out otherArgs, out isOperator, out body);
            var function = new FunctionExpression(token, name, arguments, otherArgs, isOperator, body);

            return isOperator ? MakeOperator(name, function) : function;
        }