X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fexpressions%2Fparse.c;h=ca510852b0b3bf1b697ae57f621a593767239fcb;hb=882f1af2718defe8917d64972e73adb0d0bcd059;hp=5ae4994484c685362d2daa689e79544c78a9f140;hpb=9f087e7aa4cdff1d5d46d5e188c0017a9d2d0029;p=pspp-builds.git diff --git a/src/language/expressions/parse.c b/src/language/expressions/parse.c index 5ae49944..ca510852 100644 --- a/src/language/expressions/parse.c +++ b/src/language/expressions/parse.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -344,7 +344,13 @@ type_coercion_core (struct expression *e, { /* Convert numeric to boolean. */ if (do_coercion) - *node = expr_allocate_unary (e, OP_NUM_TO_BOOLEAN, *node); + { + union any_node *op_name; + + op_name = expr_allocate_string (e, ss_cstr (operator_name)); + *node = expr_allocate_binary (e, OP_NUM_TO_BOOLEAN, *node, + op_name); + } return true; } break; @@ -356,7 +362,7 @@ type_coercion_core (struct expression *e, msg_disable (); if ((*node)->type == OP_format && fmt_check_input (&(*node)->format.f) - && fmt_check_type_compat (&(*node)->format.f, VAR_NUMERIC)) + && fmt_check_type_compat (&(*node)->format.f, VAL_NUMERIC)) { msg_enable (); if (do_coercion) @@ -370,7 +376,7 @@ type_coercion_core (struct expression *e, msg_disable (); if ((*node)->type == OP_format && fmt_check_output (&(*node)->format.f) - && fmt_check_type_compat (&(*node)->format.f, VAR_NUMERIC)) + && fmt_check_type_compat (&(*node)->format.f, VAL_NUMERIC)) { msg_enable (); if (do_coercion) @@ -577,7 +583,7 @@ parse_binary_operators (struct lexer *lexer, struct expression *e, union any_nod } if (op_count > 1 && chain_warning != NULL) - msg (SW, chain_warning); + msg (SW, "%s", chain_warning); return node; } @@ -801,9 +807,9 @@ parse_sysvar (struct lexer *lexer, struct expression *e) + tm->tm_sec); } else if (lex_match_id (lexer, "$LENGTH")) - return expr_allocate_number (e, get_viewlength ()); + return expr_allocate_number (e, settings_get_viewlength ()); else if (lex_match_id (lexer, "$WIDTH")) - return expr_allocate_number (e, get_viewwidth ()); + return expr_allocate_number (e, settings_get_viewwidth ()); else { msg (SE, _("Unknown system variable %s."), lex_tokid (lexer)); @@ -918,7 +924,7 @@ parse_vector_element (struct lexer *lexer, struct expression *e) || !lex_match (lexer, ')')) return NULL; - return expr_allocate_binary (e, (vector_get_type (vector) == VAR_NUMERIC + return expr_allocate_binary (e, (vector_get_type (vector) == VAL_NUMERIC ? OP_VEC_ELEM_NUM : OP_VEC_ELEM_STR), element, expr_allocate_vector (e, vector)); } @@ -1260,7 +1266,7 @@ parse_function (struct lexer *lexer, struct expression *e) if (!validate_function_args (f, arg_cnt, min_valid)) goto fail; - if ((f->flags & OPF_EXTENSION) && get_syntax () == COMPATIBLE) + if ((f->flags & OPF_EXTENSION) && settings_get_syntax () == COMPATIBLE) msg (SW, _("%s is a PSPP extension."), f->prototype); if (f->flags & OPF_UNIMPLEMENTED) {