# HG changeset patch # User jwe # Date 748343172 0 # Node ID e122c49e9726c72333a36148454e1de89babd36d # Parent 3438ee77fea27659414d5d2841701b5023bec5f2 [project @ 1993-09-18 09:06:01 by jwe] Changes to make gplot smarter about distinguishing ranges and literal matrices. diff -r 3438ee77fea2 -r e122c49e9726 src/lex.l --- a/src/lex.l Fri Sep 17 06:11:35 1993 +0000 +++ b/src/lex.l Sat Sep 18 09:06:12 1993 +0000 @@ -443,7 +443,7 @@ if (! in_brace_or_paren.empty ()) in_brace_or_paren.pop (); - if (plotting) + if (plotting && ! past_plot_range) { in_plot_range = 0; RETURN (CLOSE_BRACE); @@ -460,6 +460,8 @@ quote_is_transpose = 1; cant_be_identifier = 1; convert_spaces_to_comma = 1; + if (plotting && ! in_plot_range) + past_plot_range = 1; current_input_column += yyleng; DO_COMMA_INSERT_CHECK; return IMAG_NUM; @@ -474,6 +476,8 @@ quote_is_transpose = 1; cant_be_identifier = 1; convert_spaces_to_comma = 1; + if (plotting && ! in_plot_range) + past_plot_range = 1; current_input_column += yyleng; DO_COMMA_INSERT_CHECK; return NUM; @@ -481,7 +485,7 @@ \[{S}* { in_brace_or_paren.push (1); - if (plotting) + if (plotting && ! past_plot_range) { in_plot_range = 1; RETURN (OPEN_BRACE); @@ -544,6 +548,9 @@ } } + if (plotting && ! in_plot_range) + past_plot_range = 1; + if (plotting && in_plot_style) { char *sty = plot_style_token (&tok[1]); @@ -723,12 +730,28 @@ "&&" { BIN_OP_RETURN (EXPR_AND); } "|" { BIN_OP_RETURN (EXPR_OR); } "&" { BIN_OP_RETURN (EXPR_AND); } -"!" { RETURN (EXPR_NOT); } -"~" { BIN_OP_RETURN (EXPR_NOT); } +"!" { + if (plotting && ! in_plot_range) + past_plot_range = 1; + RETURN (EXPR_NOT); + } +"~" { + if (plotting && ! in_plot_range) + past_plot_range = 1; + BIN_OP_RETURN (EXPR_NOT); + } "<" { BIN_OP_RETURN (EXPR_LT); } ">" { BIN_OP_RETURN (EXPR_GT); } -"+" { BIN_OP_RETURN ('+'); } -"-" { BIN_OP_RETURN ('-'); } +"+" { + if (plotting && ! in_plot_range) + past_plot_range = 1; + BIN_OP_RETURN ('+'); + } +"-" { + if (plotting && ! in_plot_range) + past_plot_range = 1; + BIN_OP_RETURN ('-'); + } "**" { BIN_OP_RETURN (POW); } "*" { BIN_OP_RETURN ('*'); } "/" { BIN_OP_RETURN ('/'); } @@ -738,6 +761,8 @@ "^" { BIN_OP_RETURN (POW); } "=" { RETURN ('='); } "(" { + if (plotting && ! in_plot_range) + past_plot_range = 1; in_brace_or_paren.push (0); RETURN ('('); } @@ -798,6 +823,7 @@ current_input_column = 0; do_comma_insert = 0; plotting = 0; + past_plot_range = 0; in_plot_range = 0; in_plot_using = 0; in_plot_style = 0; @@ -982,9 +1008,9 @@ if (almost_match ("title", s)) return TITLE; else if (almost_match ("using", s)) - { in_plot_using = 1; return USING; } + { in_plot_using = 1; past_plot_range = 1; return USING; } else if (almost_match ("with", s)) - { in_plot_style = 1; return WITH; } + { in_plot_style = 1; past_plot_range = 1; return WITH; } else return 0; } diff -r 3438ee77fea2 -r e122c49e9726 src/parse.y --- a/src/parse.y Fri Sep 17 06:11:35 1993 +0000 +++ b/src/parse.y Sat Sep 18 09:06:12 1993 +0000 @@ -88,6 +88,10 @@ // Nonzero means we're working on a plot command. int plotting = 0; +// Nonzero means we've seen something that means we must be past the +// range part of a plot command. +int past_plot_range = 0; + // Nonzero means we're looking at the range part of a plot command. int in_plot_range = 0; @@ -395,6 +399,7 @@ tree_subplot_list *tmp = $2->reverse (); $$ = new tree_plot_command (tmp, $1); plotting = 0; + past_plot_range = 0; in_plot_range = 0; in_plot_using = 0; in_plot_style = 0; @@ -404,6 +409,7 @@ tree_subplot_list *tmp = $3->reverse (); $$ = new tree_plot_command (tmp, $2, $1); plotting = 0; + past_plot_range = 0; in_plot_range = 0; in_plot_using = 0; in_plot_style = 0;