~ubuntu-branches/ubuntu/trusty/gnumeric/trusty

« back to all changes in this revision

Viewing changes to src/parser.c

  • Committer: Bazaar Package Importer
  • Author(s): Angel Abad
  • Date: 2011-05-02 10:16:08 UTC
  • mfrom: (2.1.28 sid)
  • Revision ID: james.westby@ubuntu.com-20110502101608-5m2ohvyqiph54pmd
Tags: 1.10.14-1ubuntu1
* Merge from debian unstable. Remaining changes:
  - debian/control: Promote gnumeric-doc to Recommends in package gnumeric
    so that help gets installed automatically.
  - debian/rules: run intltool-update in po{,-functions}/

Show diffs side-by-side

added added

removed removed

Lines of Context:
682
682
     ARRAY_ROW_SEP = 271,
683
683
     SHEET_SEP = 272,
684
684
     INVALID_TOKEN = 273,
685
 
     tok_RIGHT_EXP = 274,
686
 
     tok_LEFT_EXP = 275,
687
 
     tok_PLUS = 276,
688
 
     tok_NEG = 277,
689
 
     RANGE_INTERSECT = 278,
690
 
     RANGE_SEP = 279
 
685
     tok_WORKBOOKREF = 274,
 
686
     tok_RIGHT_EXP = 275,
 
687
     tok_LEFT_EXP = 276,
 
688
     tok_PLUS = 277,
 
689
     tok_NEG = 278,
 
690
     RANGE_INTERSECT = 279,
 
691
     RANGE_SEP = 280
691
692
   };
692
693
#endif
693
694
/* Tokens.  */
707
708
#define ARRAY_ROW_SEP 271
708
709
#define SHEET_SEP 272
709
710
#define INVALID_TOKEN 273
710
 
#define tok_RIGHT_EXP 274
711
 
#define tok_LEFT_EXP 275
712
 
#define tok_PLUS 276
713
 
#define tok_NEG 277
714
 
#define RANGE_INTERSECT 278
715
 
#define RANGE_SEP 279
 
711
#define tok_WORKBOOKREF 274
 
712
#define tok_RIGHT_EXP 275
 
713
#define tok_LEFT_EXP 276
 
714
#define tok_PLUS 277
 
715
#define tok_NEG 278
 
716
#define RANGE_INTERSECT 279
 
717
#define RANGE_SEP 280
716
718
 
717
719
 
718
720
 
734
736
 
735
737
 
736
738
/* Line 214 of yacc.c  */
737
 
#line 738 "parser.c"
 
739
#line 740 "parser.c"
738
740
} YYSTYPE;
739
741
# define YYSTYPE_IS_TRIVIAL 1
740
742
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
746
748
 
747
749
 
748
750
/* Line 264 of yacc.c  */
749
 
#line 750 "parser.c"
 
751
#line 752 "parser.c"
750
752
 
751
753
#ifdef short
752
754
# undef short
961
963
/* YYFINAL -- State number of the termination state.  */
962
964
#define YYFINAL  4
963
965
/* YYLAST -- Last index in YYTABLE.  */
964
 
#define YYLAST   203
 
966
#define YYLAST   221
965
967
 
966
968
/* YYNTOKENS -- Number of terminals.  */
967
 
#define YYNTOKENS  41
 
969
#define YYNTOKENS  42
968
970
/* YYNNTS -- Number of nonterminals.  */
969
 
#define YYNNTS  13
 
971
#define YYNNTS  14
970
972
/* YYNRULES -- Number of rules.  */
971
 
#define YYNRULES  59
 
973
#define YYNRULES  62
972
974
/* YYNRULES -- Number of states.  */
973
 
#define YYNSTATES  99
 
975
#define YYNSTATES  102
974
976
 
975
977
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
976
978
#define YYUNDEFTOK  2
977
 
#define YYMAXUTOK   279
 
979
#define YYMAXUTOK   280
978
980
 
979
981
#define YYTRANSLATE(YYX)                                                \
980
982
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
985
987
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
986
988
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
987
989
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
988
 
       2,     2,     2,     2,     2,     2,     2,    29,    22,     2,
989
 
      35,    36,    25,    24,    32,    23,     2,    26,     2,     2,
990
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
991
 
      19,    21,    20,     2,     2,     2,     2,     2,     2,     2,
992
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
993
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
994
 
       2,    39,     2,    40,     2,     2,     2,     2,     2,     2,
995
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
996
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
997
 
       2,     2,     2,    37,     2,    38,     2,     2,     2,     2,
 
990
       2,     2,     2,     2,     2,     2,     2,    30,    23,     2,
 
991
      36,    37,    26,    25,    33,    24,     2,    27,     2,     2,
 
992
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
993
      20,    22,    21,     2,     2,     2,     2,     2,     2,     2,
 
994
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
995
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
996
       2,    40,     2,    41,     2,     2,     2,     2,     2,     2,
 
997
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
998
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
999
       2,     2,     2,    38,     2,    39,     2,     2,     2,     2,
998
1000
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
999
1001
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1000
1002
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1009
1011
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1010
1012
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1011
1013
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1012
 
      15,    16,    17,    18,    27,    28,    30,    31,    33,    34
 
1014
      15,    16,    17,    18,    19,    28,    29,    31,    32,    34,
 
1015
      35
1013
1016
};
1014
1017
 
1015
1018
#if YYDEBUG
1020
1023
       0,     0,     3,     6,     8,    12,    13,    15,    17,    19,
1021
1024
      21,    25,    29,    33,    37,    41,    45,    49,    53,    57,
1022
1025
      61,    65,    69,    73,    77,    81,    85,    88,    91,    94,
1023
 
      97,   101,   105,   107,   110,   113,   118,   120,   122,   126,
1024
 
     129,   132,   136,   138,   142,   146,   150,   154,   156,   160,
1025
 
     163,   164,   166,   169,   172,   174,   175,   177,   181,   183
 
1026
      97,   101,   105,   107,   110,   113,   118,   120,   122,   124,
 
1027
     125,   128,   132,   135,   138,   142,   144,   148,   152,   156,
 
1028
     160,   162,   166,   169,   170,   172,   175,   178,   180,   181,
 
1029
     183,   187,   189
1026
1030
};
1027
1031
 
1028
1032
/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1029
1033
static const yytype_int8 yyrhs[] =
1030
1034
{
1031
 
      42,     0,    -1,    43,    44,    -1,     1,    -1,    43,    44,
1032
 
      14,    -1,    -1,     5,    -1,     4,    -1,     3,    -1,    49,
1033
 
      -1,    44,    24,    44,    -1,    44,    23,    44,    -1,    44,
1034
 
      25,    44,    -1,    44,    26,    44,    -1,    44,    27,    44,
1035
 
      -1,    44,    28,    44,    -1,    44,    22,    44,    -1,    44,
1036
 
      21,    44,    -1,    44,    19,    44,    -1,    44,    20,    44,
1037
 
      -1,    44,     7,    44,    -1,    44,     9,    44,    -1,    44,
1038
 
       8,    44,    -1,    44,    10,    44,    -1,    44,    11,    44,
1039
 
      -1,    44,    33,    44,    -1,    23,    44,    -1,    24,    44,
1040
 
      -1,    12,    44,    -1,    44,    29,    -1,    35,    50,    36,
1041
 
      -1,    37,    53,    38,    -1,    45,    -1,    48,     3,    -1,
1042
 
      47,     3,    -1,     3,    35,    50,    36,    -1,     3,    -1,
1043
 
       4,    -1,    39,    46,    40,    -1,    39,    40,    -1,    46,
1044
 
      17,    -1,    47,    46,    17,    -1,     6,    -1,    45,    34,
1045
 
      45,    -1,     6,    34,    45,    -1,    45,    34,     6,    -1,
1046
 
       6,    34,     6,    -1,    44,    -1,    44,    14,    50,    -1,
1047
 
      14,    50,    -1,    -1,     5,    -1,    23,     5,    -1,    24,
1048
 
       5,    -1,    46,    -1,    -1,    51,    -1,    51,    15,    52,
1049
 
      -1,    52,    -1,    52,    16,    53,    -1
 
1035
      43,     0,    -1,    44,    45,    -1,     1,    -1,    44,    45,
 
1036
      14,    -1,    -1,     5,    -1,     4,    -1,     3,    -1,    51,
 
1037
      -1,    45,    25,    45,    -1,    45,    24,    45,    -1,    45,
 
1038
      26,    45,    -1,    45,    27,    45,    -1,    45,    28,    45,
 
1039
      -1,    45,    29,    45,    -1,    45,    23,    45,    -1,    45,
 
1040
      22,    45,    -1,    45,    20,    45,    -1,    45,    21,    45,
 
1041
      -1,    45,     7,    45,    -1,    45,     9,    45,    -1,    45,
 
1042
       8,    45,    -1,    45,    10,    45,    -1,    45,    11,    45,
 
1043
      -1,    45,    34,    45,    -1,    24,    45,    -1,    25,    45,
 
1044
      -1,    12,    45,    -1,    45,    30,    -1,    36,    52,    37,
 
1045
      -1,    38,    55,    39,    -1,    46,    -1,    50,     3,    -1,
 
1046
      49,     3,    -1,     3,    36,    52,    37,    -1,     3,    -1,
 
1047
       4,    -1,    17,    -1,    -1,    19,    48,    -1,    40,    47,
 
1048
      41,    -1,    40,    41,    -1,    47,    17,    -1,    49,    47,
 
1049
      17,    -1,     6,    -1,    46,    35,    46,    -1,     6,    35,
 
1050
      46,    -1,    46,    35,     6,    -1,     6,    35,     6,    -1,
 
1051
      45,    -1,    45,    14,    52,    -1,    14,    52,    -1,    -1,
 
1052
       5,    -1,    24,     5,    -1,    25,     5,    -1,    47,    -1,
 
1053
      -1,    53,    -1,    53,    15,    54,    -1,    54,    -1,    54,
 
1054
      16,    55,    -1
1050
1055
};
1051
1056
 
1052
1057
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1053
1058
static const yytype_uint16 yyrline[] =
1054
1059
{
1055
 
       0,   599,   599,   605,   613,   619,   622,   623,   624,   628,
1056
 
     629,   630,   631,   632,   633,   634,   635,   636,   637,   638,
1057
 
     639,   640,   641,   642,   643,   644,   649,   653,   657,   658,
1058
 
     660,   678,   685,   686,   704,   725,   742,   743,   747,   777,
1059
 
     799,   808,   820,   821,   825,   829,   833,   839,   844,   855,
1060
 
     865,   868,   869,   874,   879,   883,   884,   889,   897,   902
 
1060
       0,   600,   600,   606,   614,   620,   623,   624,   625,   629,
 
1061
     630,   631,   632,   633,   634,   635,   636,   637,   638,   639,
 
1062
     640,   641,   642,   643,   644,   645,   650,   654,   658,   659,
 
1063
     661,   679,   686,   687,   705,   726,   743,   744,   747,   748,
 
1064
     751,   752,   780,   802,   811,   823,   824,   828,   832,   836,
 
1065
     842,   847,   858,   868,   871,   872,   877,   882,   886,   887,
 
1066
     892,   900,   905
1061
1067
};
1062
1068
#endif
1063
1069
 
1069
1075
  "$end", "error", "$undefined", "STRING", "QUOTED_STRING", "CONSTANT",
1070
1076
  "RANGEREF", "tok_GTE", "tok_LTE", "tok_NE", "tok_AND", "tok_OR",
1071
1077
  "tok_NOT", "INTERSECT", "ARG_SEP", "ARRAY_COL_SEP", "ARRAY_ROW_SEP",
1072
 
  "SHEET_SEP", "INVALID_TOKEN", "'<'", "'>'", "'='", "'&'", "'-'", "'+'",
1073
 
  "'*'", "'/'", "tok_RIGHT_EXP", "tok_LEFT_EXP", "'%'", "tok_PLUS",
1074
 
  "tok_NEG", "','", "RANGE_INTERSECT", "RANGE_SEP", "'('", "')'", "'{'",
1075
 
  "'}'", "'['", "']'", "$accept", "line", "opt_exp", "exp", "function",
1076
 
  "string_opt_quote", "workbookref", "sheetref", "cellref", "arg_list",
1077
 
  "array_exp", "array_row", "array_rows", 0
 
1078
  "SHEET_SEP", "INVALID_TOKEN", "tok_WORKBOOKREF", "'<'", "'>'", "'='",
 
1079
  "'&'", "'-'", "'+'", "'*'", "'/'", "tok_RIGHT_EXP", "tok_LEFT_EXP",
 
1080
  "'%'", "tok_PLUS", "tok_NEG", "','", "RANGE_INTERSECT", "RANGE_SEP",
 
1081
  "'('", "')'", "'{'", "'}'", "'['", "']'", "$accept", "line", "opt_exp",
 
1082
  "exp", "function", "string_opt_quote", "opt_sheet_sep", "workbookref",
 
1083
  "sheetref", "cellref", "arg_list", "array_exp", "array_row",
 
1084
  "array_rows", 0
1078
1085
};
1079
1086
#endif
1080
1087
 
1084
1091
static const yytype_uint16 yytoknum[] =
1085
1092
{
1086
1093
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1087
 
     265,   266,   267,   268,   269,   270,   271,   272,   273,    60,
1088
 
      62,    61,    38,    45,    43,    42,    47,   274,   275,    37,
1089
 
     276,   277,    44,   278,   279,    40,    41,   123,   125,    91,
1090
 
      93
 
1094
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
 
1095
      60,    62,    61,    38,    45,    43,    42,    47,   275,   276,
 
1096
      37,   277,   278,    44,   279,   280,    40,    41,   123,   125,
 
1097
      91,    93
1091
1098
};
1092
1099
# endif
1093
1100
 
1094
1101
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1095
1102
static const yytype_uint8 yyr1[] =
1096
1103
{
1097
 
       0,    41,    42,    42,    43,    43,    44,    44,    44,    44,
1098
 
      44,    44,    44,    44,    44,    44,    44,    44,    44,    44,
1099
 
      44,    44,    44,    44,    44,    44,    44,    44,    44,    44,
1100
 
      44,    44,    44,    44,    44,    45,    46,    46,    47,    47,
1101
 
      48,    48,    49,    49,    49,    49,    49,    50,    50,    50,
1102
 
      50,    51,    51,    51,    51,    52,    52,    52,    53,    53
 
1104
       0,    42,    43,    43,    44,    44,    45,    45,    45,    45,
 
1105
      45,    45,    45,    45,    45,    45,    45,    45,    45,    45,
 
1106
      45,    45,    45,    45,    45,    45,    45,    45,    45,    45,
 
1107
      45,    45,    45,    45,    45,    46,    47,    47,    48,    48,
 
1108
      49,    49,    49,    50,    50,    51,    51,    51,    51,    51,
 
1109
      52,    52,    52,    52,    53,    53,    53,    53,    54,    54,
 
1110
      54,    55,    55
1103
1111
};
1104
1112
 
1105
1113
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1108
1116
       0,     2,     2,     1,     3,     0,     1,     1,     1,     1,
1109
1117
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1110
1118
       3,     3,     3,     3,     3,     3,     2,     2,     2,     2,
1111
 
       3,     3,     1,     2,     2,     4,     1,     1,     3,     2,
1112
 
       2,     3,     1,     3,     3,     3,     3,     1,     3,     2,
1113
 
       0,     1,     2,     2,     1,     0,     1,     3,     1,     3
 
1119
       3,     3,     1,     2,     2,     4,     1,     1,     1,     0,
 
1120
       2,     3,     2,     2,     3,     1,     3,     3,     3,     3,
 
1121
       1,     3,     2,     0,     1,     2,     2,     1,     0,     1,
 
1122
       3,     1,     3
1114
1123
};
1115
1124
 
1116
1125
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1118
1127
   means the default is an error.  */
1119
1128
static const yytype_uint8 yydefact[] =
1120
1129
{
1121
 
       0,     3,     0,     0,     1,     8,     7,     6,    42,     0,
1122
 
       0,     0,    50,    55,     0,     2,    32,     0,     0,     0,
1123
 
       9,    50,     0,    28,    26,    27,    50,    47,     0,    36,
1124
 
      37,    51,     0,     0,    54,    56,    58,     0,    39,     0,
1125
 
       0,     0,     0,     0,     0,     4,     0,     0,     0,     0,
1126
 
       0,     0,     0,     0,     0,     0,    29,     0,     0,    40,
1127
 
      34,     0,    33,     0,     0,    46,    44,    49,    50,    30,
1128
 
      52,    53,    55,    55,    31,    38,    20,    22,    21,    23,
1129
 
      24,    18,    19,    17,    16,    11,    10,    12,    13,    14,
1130
 
      15,    25,    45,    43,    41,    35,    48,    57,    59
 
1130
       0,     3,     0,     0,     1,     8,     7,     6,    45,     0,
 
1131
      39,     0,     0,    53,    58,     0,     2,    32,     0,     0,
 
1132
       0,     9,    53,     0,    28,    38,    40,    26,    27,    53,
 
1133
      50,     0,    36,    37,    54,     0,     0,    57,    59,    61,
 
1134
       0,    42,     0,     0,     0,     0,     0,     0,     4,     0,
 
1135
       0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
 
1136
       0,     0,    43,    34,     0,    33,     0,     0,    49,    47,
 
1137
      52,    53,    30,    55,    56,    58,    58,    31,    41,    20,
 
1138
      22,    21,    23,    24,    18,    19,    17,    16,    11,    10,
 
1139
      12,    13,    14,    15,    25,    48,    46,    44,    35,    51,
 
1140
      60,    62
1131
1141
};
1132
1142
 
1133
1143
/* YYDEFGOTO[NTERM-NUM].  */
1134
1144
static const yytype_int8 yydefgoto[] =
1135
1145
{
1136
 
      -1,     2,     3,    27,    16,    17,    18,    19,    20,    28,
1137
 
      35,    36,    37
 
1146
      -1,     2,     3,    30,    17,    18,    26,    19,    20,    21,
 
1147
      31,    38,    39,    40
1138
1148
};
1139
1149
 
1140
1150
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1141
1151
   STATE-NUM.  */
1142
 
#define YYPACT_NINF -14
 
1152
#define YYPACT_NINF -19
1143
1153
static const yytype_int16 yypact[] =
1144
1154
{
1145
 
      60,   -14,    12,    70,   -14,    -2,    10,   -14,    -6,    70,
1146
 
      70,    70,    65,   162,    15,   103,    33,    20,     0,    35,
1147
 
     -14,    65,    14,    24,    24,    24,    65,   130,     8,   -14,
1148
 
     -14,   -14,    80,    81,   -14,    72,    64,    52,   -14,    51,
1149
 
      70,    70,    70,    70,    70,   -14,    70,    70,    70,    70,
1150
 
      70,    70,    70,    70,    70,    70,   -14,    70,    75,   -14,
1151
 
      79,    84,   -14,    56,    63,   -14,   -14,   -14,    65,   -14,
1152
 
     -14,   -14,   162,   162,   -14,   -14,   150,   150,   150,    73,
1153
 
      73,   150,   150,   150,   170,    -4,    -4,     3,     3,     3,
1154
 
     135,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14
 
1155
      62,   -19,     7,   108,   -19,   -11,    20,   -19,   -18,   108,
 
1156
      30,   108,   108,    85,    15,     0,   129,    25,    53,    19,
 
1157
      32,   -19,    85,    18,     2,   -19,   -19,     2,     2,    85,
 
1158
     157,    34,   -19,   -19,   -19,    68,    70,   -19,    61,    63,
 
1159
      38,   -19,    37,   108,   108,   108,   108,   108,   -19,   108,
 
1160
     108,   108,   108,   108,   108,   108,   108,   108,   108,   -19,
 
1161
     108,    66,   -19,    65,    75,   -19,    43,    49,   -19,   -19,
 
1162
     -19,    85,   -19,   -19,   -19,    15,    15,   -19,   -19,     4,
 
1163
       4,     4,    59,    59,     4,     4,     4,   178,   187,   187,
 
1164
     165,   165,   165,    73,   -19,   -19,   -19,   -19,   -19,   -19,
 
1165
     -19,   -19
1155
1166
};
1156
1167
 
1157
1168
/* YYPGOTO[NTERM-NUM].  */
1158
1169
static const yytype_int8 yypgoto[] =
1159
1170
{
1160
 
     -14,   -14,   -14,    -1,     4,   -13,   -14,   -14,   -14,   -10,
1161
 
     -14,    31,    42
 
1171
     -19,   -19,   -19,    -1,     3,   -14,   -19,   -19,   -19,   -19,
 
1172
     -13,   -19,    21,    29
1162
1173
};
1163
1174
 
1164
1175
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1168
1179
#define YYTABLE_NINF -38
1169
1180
static const yytype_int8 yytable[] =
1170
1181
{
1171
 
      34,    39,    15,    60,    30,    61,    43,    44,    23,    24,
1172
 
      25,    63,     4,    43,    44,   -36,    67,    64,    29,    30,
1173
 
      65,    52,    53,    54,    55,    56,    66,   -37,    22,    57,
1174
 
      54,    55,    56,    21,    43,    44,    57,    59,    62,    76,
1175
 
      77,    78,    79,    80,    69,    81,    82,    83,    84,    85,
1176
 
      86,    87,    88,    89,    90,    38,    91,    57,    96,    34,
1177
 
      34,     1,    93,    -5,    -5,    -5,    -5,    58,     5,     6,
1178
 
       7,     8,    -5,     5,     6,     7,     8,     9,    64,    26,
1179
 
      73,    92,     9,    -5,    -5,    70,    71,    72,    10,    11,
1180
 
      74,    75,    95,    10,    11,    -5,   -36,    -5,    21,    -5,
1181
 
      12,    94,    13,    97,    14,    12,    57,    13,     0,    14,
1182
 
      40,    41,    42,    43,    44,    98,     0,    45,     0,     0,
1183
 
       0,     0,    46,    47,    48,    49,    50,    51,    52,    53,
1184
 
      54,    55,    56,     0,     0,     0,    57,    40,    41,    42,
1185
 
      43,    44,     0,     0,    68,    43,    44,     0,     0,    46,
1186
 
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1187
 
      43,    44,     0,    57,    56,    29,    30,    31,    57,     0,
1188
 
       0,     0,    49,    50,    51,    52,    53,    54,    55,    56,
1189
 
      43,    44,     0,    57,     0,    32,    33,     0,     0,     0,
1190
 
       0,     0,     0,    50,    51,    52,    53,    54,    55,    56,
1191
 
       0,     0,     0,    57
 
1182
      37,    42,    16,    32,    33,    64,   -36,     4,    24,    66,
 
1183
      27,    28,    46,    47,    46,    47,    70,    23,    32,    33,
 
1184
      34,    67,    63,    33,    68,    22,    69,    52,    53,    54,
 
1185
      55,    56,    57,    58,    59,    65,    60,   -37,    60,    35,
 
1186
      36,    41,    79,    80,    81,    82,    83,    25,    84,    85,
 
1187
      86,    87,    88,    89,    90,    91,    92,    93,    99,    94,
 
1188
      61,    37,    37,     1,    96,    -5,    -5,    -5,    -5,    67,
 
1189
      62,    72,    95,    73,    -5,    74,    75,    77,    78,    76,
 
1190
      98,    -5,   -36,    46,    47,    22,    -5,    -5,     5,     6,
 
1191
       7,     8,    97,    60,     0,     0,   100,     9,    -5,    29,
 
1192
      -5,     0,    -5,    59,    10,   101,     0,    60,     0,    11,
 
1193
      12,     5,     6,     7,     8,     0,     0,     0,     0,     0,
 
1194
       9,    13,     0,    14,     0,    15,     0,    10,     0,     0,
 
1195
       0,     0,    11,    12,     0,     0,    43,    44,    45,    46,
 
1196
      47,     0,     0,    48,    13,     0,    14,     0,    15,    49,
 
1197
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
 
1198
       0,     0,     0,    60,    43,    44,    45,    46,    47,     0,
 
1199
       0,    71,     0,     0,     0,    46,    47,    49,    50,    51,
 
1200
      52,    53,    54,    55,    56,    57,    58,    59,    46,    47,
 
1201
       0,    60,     0,    57,    58,    59,     0,    46,    47,    60,
 
1202
       0,     0,    53,    54,    55,    56,    57,    58,    59,     0,
 
1203
       0,     0,    60,    55,    56,    57,    58,    59,     0,     0,
 
1204
       0,    60
1192
1205
};
1193
1206
 
1194
1207
static const yytype_int8 yycheck[] =
1195
1208
{
1196
 
      13,    14,     3,     3,     4,    18,    10,    11,     9,    10,
1197
 
      11,    21,     0,    10,    11,    17,    26,     3,     3,     4,
1198
 
       6,    25,    26,    27,    28,    29,    22,    17,    34,    33,
1199
 
      27,    28,    29,    35,    10,    11,    33,    17,     3,    40,
1200
 
      41,    42,    43,    44,    36,    46,    47,    48,    49,    50,
1201
 
      51,    52,    53,    54,    55,    40,    57,    33,    68,    72,
1202
 
      73,     1,    58,     3,     4,     5,     6,    34,     3,     4,
1203
 
       5,     6,    12,     3,     4,     5,     6,    12,     3,    14,
1204
 
      16,     6,    12,    23,    24,     5,     5,    15,    23,    24,
1205
 
      38,    40,    36,    23,    24,    35,    17,    37,    35,    39,
1206
 
      35,    17,    37,    72,    39,    35,    33,    37,    -1,    39,
1207
 
       7,     8,     9,    10,    11,    73,    -1,    14,    -1,    -1,
1208
 
      -1,    -1,    19,    20,    21,    22,    23,    24,    25,    26,
1209
 
      27,    28,    29,    -1,    -1,    -1,    33,     7,     8,     9,
1210
 
      10,    11,    -1,    -1,    14,    10,    11,    -1,    -1,    19,
1211
 
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
1212
 
      10,    11,    -1,    33,    29,     3,     4,     5,    33,    -1,
1213
 
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
1214
 
      10,    11,    -1,    33,    -1,    23,    24,    -1,    -1,    -1,
1215
 
      -1,    -1,    -1,    23,    24,    25,    26,    27,    28,    29,
1216
 
      -1,    -1,    -1,    33
 
1209
      14,    15,     3,     3,     4,    19,    17,     0,     9,    22,
 
1210
      11,    12,    10,    11,    10,    11,    29,    35,     3,     4,
 
1211
       5,     3,     3,     4,     6,    36,    23,    23,    24,    25,
 
1212
      26,    27,    28,    29,    30,     3,    34,    17,    34,    24,
 
1213
      25,    41,    43,    44,    45,    46,    47,    17,    49,    50,
 
1214
      51,    52,    53,    54,    55,    56,    57,    58,    71,    60,
 
1215
      35,    75,    76,     1,    61,     3,     4,     5,     6,     3,
 
1216
      17,    37,     6,     5,    12,     5,    15,    39,    41,    16,
 
1217
      37,    19,    17,    10,    11,    36,    24,    25,     3,     4,
 
1218
       5,     6,    17,    34,    -1,    -1,    75,    12,    36,    14,
 
1219
      38,    -1,    40,    30,    19,    76,    -1,    34,    -1,    24,
 
1220
      25,     3,     4,     5,     6,    -1,    -1,    -1,    -1,    -1,
 
1221
      12,    36,    -1,    38,    -1,    40,    -1,    19,    -1,    -1,
 
1222
      -1,    -1,    24,    25,    -1,    -1,     7,     8,     9,    10,
 
1223
      11,    -1,    -1,    14,    36,    -1,    38,    -1,    40,    20,
 
1224
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
 
1225
      -1,    -1,    -1,    34,     7,     8,     9,    10,    11,    -1,
 
1226
      -1,    14,    -1,    -1,    -1,    10,    11,    20,    21,    22,
 
1227
      23,    24,    25,    26,    27,    28,    29,    30,    10,    11,
 
1228
      -1,    34,    -1,    28,    29,    30,    -1,    10,    11,    34,
 
1229
      -1,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
 
1230
      -1,    -1,    34,    26,    27,    28,    29,    30,    -1,    -1,
 
1231
      -1,    34
1217
1232
};
1218
1233
 
1219
1234
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1220
1235
   symbol of state STATE-NUM.  */
1221
1236
static const yytype_uint8 yystos[] =
1222
1237
{
1223
 
       0,     1,    42,    43,     0,     3,     4,     5,     6,    12,
1224
 
      23,    24,    35,    37,    39,    44,    45,    46,    47,    48,
1225
 
      49,    35,    34,    44,    44,    44,    14,    44,    50,     3,
1226
 
       4,     5,    23,    24,    46,    51,    52,    53,    40,    46,
1227
 
       7,     8,     9,    10,    11,    14,    19,    20,    21,    22,
1228
 
      23,    24,    25,    26,    27,    28,    29,    33,    34,    17,
1229
 
       3,    46,     3,    50,     3,     6,    45,    50,    14,    36,
1230
 
       5,     5,    15,    16,    38,    40,    44,    44,    44,    44,
1231
 
      44,    44,    44,    44,    44,    44,    44,    44,    44,    44,
1232
 
      44,    44,     6,    45,    17,    36,    50,    52,    53
 
1238
       0,     1,    43,    44,     0,     3,     4,     5,     6,    12,
 
1239
      19,    24,    25,    36,    38,    40,    45,    46,    47,    49,
 
1240
      50,    51,    36,    35,    45,    17,    48,    45,    45,    14,
 
1241
      45,    52,     3,     4,     5,    24,    25,    47,    53,    54,
 
1242
      55,    41,    47,     7,     8,     9,    10,    11,    14,    20,
 
1243
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
 
1244
      34,    35,    17,     3,    47,     3,    52,     3,     6,    46,
 
1245
      52,    14,    37,     5,     5,    15,    16,    39,    41,    45,
 
1246
      45,    45,    45,    45,    45,    45,    45,    45,    45,    45,
 
1247
      45,    45,    45,    45,    45,     6,    46,    17,    37,    52,
 
1248
      54,    55
1233
1249
};
1234
1250
 
1235
1251
#define yyerrok         (yyerrstatus = 0)
2043
2059
        case 2:
2044
2060
 
2045
2061
/* Line 1455 of yacc.c  */
2046
 
#line 599 "parser.y"
 
2062
#line 600 "parser.y"
2047
2063
    {
2048
2064
                unregister_allocation ((yyvsp[(2) - (2)].expr));
2049
2065
                unregister_allocation ((yyvsp[(1) - (2)].list));
2054
2070
  case 3:
2055
2071
 
2056
2072
/* Line 1455 of yacc.c  */
2057
 
#line 605 "parser.y"
 
2073
#line 606 "parser.y"
2058
2074
    {
2059
2075
                if (state->result != NULL) {
2060
2076
                        gnm_expr_list_unref (state->result);
2066
2082
  case 4:
2067
2083
 
2068
2084
/* Line 1455 of yacc.c  */
2069
 
#line 613 "parser.y"
 
2085
#line 614 "parser.y"
2070
2086
    {
2071
2087
               unregister_allocation ((yyvsp[(2) - (3)].expr));
2072
2088
               unregister_allocation ((yyvsp[(1) - (3)].list));
2078
2094
  case 5:
2079
2095
 
2080
2096
/* Line 1455 of yacc.c  */
2081
 
#line 619 "parser.y"
 
2097
#line 620 "parser.y"
2082
2098
    { (yyval.list) = NULL; register_expr_list_allocation ((yyval.list)); }
2083
2099
    break;
2084
2100
 
2085
2101
  case 6:
2086
2102
 
2087
2103
/* Line 1455 of yacc.c  */
2088
 
#line 622 "parser.y"
 
2104
#line 623 "parser.y"
2089
2105
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2090
2106
    break;
2091
2107
 
2092
2108
  case 7:
2093
2109
 
2094
2110
/* Line 1455 of yacc.c  */
2095
 
#line 623 "parser.y"
 
2111
#line 624 "parser.y"
2096
2112
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2097
2113
    break;
2098
2114
 
2099
2115
  case 8:
2100
2116
 
2101
2117
/* Line 1455 of yacc.c  */
2102
 
#line 624 "parser.y"
 
2118
#line 625 "parser.y"
2103
2119
    {
2104
2120
                (yyval.expr) = parser_simple_val_or_name ((yyvsp[(1) - (1)].expr));
2105
2121
                if ((yyval.expr) == NULL) { YYERROR; }
2109
2125
  case 9:
2110
2126
 
2111
2127
/* Line 1455 of yacc.c  */
2112
 
#line 628 "parser.y"
 
2128
#line 629 "parser.y"
2113
2129
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2114
2130
    break;
2115
2131
 
2116
2132
  case 10:
2117
2133
 
2118
2134
/* Line 1455 of yacc.c  */
2119
 
#line 629 "parser.y"
 
2135
#line 630 "parser.y"
2120
2136
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_ADD,     (yyvsp[(3) - (3)].expr)); }
2121
2137
    break;
2122
2138
 
2123
2139
  case 11:
2124
2140
 
2125
2141
/* Line 1455 of yacc.c  */
2126
 
#line 630 "parser.y"
 
2142
#line 631 "parser.y"
2127
2143
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_SUB,     (yyvsp[(3) - (3)].expr)); }
2128
2144
    break;
2129
2145
 
2130
2146
  case 12:
2131
2147
 
2132
2148
/* Line 1455 of yacc.c  */
2133
 
#line 631 "parser.y"
 
2149
#line 632 "parser.y"
2134
2150
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_MULT,    (yyvsp[(3) - (3)].expr)); }
2135
2151
    break;
2136
2152
 
2137
2153
  case 13:
2138
2154
 
2139
2155
/* Line 1455 of yacc.c  */
2140
 
#line 632 "parser.y"
 
2156
#line 633 "parser.y"
2141
2157
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_DIV,     (yyvsp[(3) - (3)].expr)); }
2142
2158
    break;
2143
2159
 
2144
2160
  case 14:
2145
2161
 
2146
2162
/* Line 1455 of yacc.c  */
2147
 
#line 633 "parser.y"
 
2163
#line 634 "parser.y"
2148
2164
    { (yyval.expr) = build_exp ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2149
2165
    break;
2150
2166
 
2151
2167
  case 15:
2152
2168
 
2153
2169
/* Line 1455 of yacc.c  */
2154
 
#line 634 "parser.y"
 
2170
#line 635 "parser.y"
2155
2171
    { (yyval.expr) = build_exp ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2156
2172
    break;
2157
2173
 
2158
2174
  case 16:
2159
2175
 
2160
2176
/* Line 1455 of yacc.c  */
2161
 
#line 635 "parser.y"
 
2177
#line 636 "parser.y"
2162
2178
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_CAT,     (yyvsp[(3) - (3)].expr)); }
2163
2179
    break;
2164
2180
 
2165
2181
  case 17:
2166
2182
 
2167
2183
/* Line 1455 of yacc.c  */
2168
 
#line 636 "parser.y"
 
2184
#line 637 "parser.y"
2169
2185
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_EQUAL,   (yyvsp[(3) - (3)].expr)); }
2170
2186
    break;
2171
2187
 
2172
2188
  case 18:
2173
2189
 
2174
2190
/* Line 1455 of yacc.c  */
2175
 
#line 637 "parser.y"
 
2191
#line 638 "parser.y"
2176
2192
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_LT,              (yyvsp[(3) - (3)].expr)); }
2177
2193
    break;
2178
2194
 
2179
2195
  case 19:
2180
2196
 
2181
2197
/* Line 1455 of yacc.c  */
2182
 
#line 638 "parser.y"
 
2198
#line 639 "parser.y"
2183
2199
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_GT,              (yyvsp[(3) - (3)].expr)); }
2184
2200
    break;
2185
2201
 
2186
2202
  case 20:
2187
2203
 
2188
2204
/* Line 1455 of yacc.c  */
2189
 
#line 639 "parser.y"
 
2205
#line 640 "parser.y"
2190
2206
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_GTE,     (yyvsp[(3) - (3)].expr)); }
2191
2207
    break;
2192
2208
 
2193
2209
  case 21:
2194
2210
 
2195
2211
/* Line 1455 of yacc.c  */
2196
 
#line 640 "parser.y"
 
2212
#line 641 "parser.y"
2197
2213
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_NOT_EQUAL,       (yyvsp[(3) - (3)].expr)); }
2198
2214
    break;
2199
2215
 
2200
2216
  case 22:
2201
2217
 
2202
2218
/* Line 1455 of yacc.c  */
2203
 
#line 641 "parser.y"
 
2219
#line 642 "parser.y"
2204
2220
    { (yyval.expr) = build_binop ((yyvsp[(1) - (3)].expr), GNM_EXPR_OP_LTE,     (yyvsp[(3) - (3)].expr)); }
2205
2221
    break;
2206
2222
 
2207
2223
  case 23:
2208
2224
 
2209
2225
/* Line 1455 of yacc.c  */
2210
 
#line 642 "parser.y"
 
2226
#line 643 "parser.y"
2211
2227
    { (yyval.expr) = build_logical ((yyvsp[(1) - (3)].expr), TRUE,      (yyvsp[(3) - (3)].expr)); }
2212
2228
    break;
2213
2229
 
2214
2230
  case 24:
2215
2231
 
2216
2232
/* Line 1455 of yacc.c  */
2217
 
#line 643 "parser.y"
 
2233
#line 644 "parser.y"
2218
2234
    { (yyval.expr) = build_logical ((yyvsp[(1) - (3)].expr), FALSE, (yyvsp[(3) - (3)].expr)); }
2219
2235
    break;
2220
2236
 
2221
2237
  case 25:
2222
2238
 
2223
2239
/* Line 1455 of yacc.c  */
2224
 
#line 644 "parser.y"
 
2240
#line 645 "parser.y"
2225
2241
    {
2226
2242
                (yyval.expr) = build_intersect ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
2227
2243
                if ((yyval.expr) == NULL) { YYERROR; }
2231
2247
  case 26:
2232
2248
 
2233
2249
/* Line 1455 of yacc.c  */
2234
 
#line 649 "parser.y"
 
2250
#line 650 "parser.y"
2235
2251
    {
2236
2252
                GnmExpr *tmp = fold_negative_constant ((yyvsp[(2) - (2)].expr));
2237
2253
                (yyval.expr) = tmp ? tmp : build_unary_op (GNM_EXPR_OP_UNARY_NEG, (yyvsp[(2) - (2)].expr));
2241
2257
  case 27:
2242
2258
 
2243
2259
/* Line 1455 of yacc.c  */
2244
 
#line 653 "parser.y"
 
2260
#line 654 "parser.y"
2245
2261
    {
2246
2262
                /* Don't fold here.  */
2247
2263
                (yyval.expr) = build_unary_op (GNM_EXPR_OP_UNARY_PLUS, (yyvsp[(2) - (2)].expr));
2251
2267
  case 28:
2252
2268
 
2253
2269
/* Line 1455 of yacc.c  */
2254
 
#line 657 "parser.y"
 
2270
#line 658 "parser.y"
2255
2271
    { (yyval.expr) = build_not ((yyvsp[(2) - (2)].expr)); }
2256
2272
    break;
2257
2273
 
2258
2274
  case 29:
2259
2275
 
2260
2276
/* Line 1455 of yacc.c  */
2261
 
#line 658 "parser.y"
 
2277
#line 659 "parser.y"
2262
2278
    { (yyval.expr) = build_unary_op (GNM_EXPR_OP_PERCENTAGE, (yyvsp[(1) - (2)].expr)); }
2263
2279
    break;
2264
2280
 
2265
2281
  case 30:
2266
2282
 
2267
2283
/* Line 1455 of yacc.c  */
2268
 
#line 660 "parser.y"
 
2284
#line 661 "parser.y"
2269
2285
    {
2270
2286
                if ((yyvsp[(2) - (3)].list) == NULL) {
2271
2287
                        report_err (state, g_error_new (1, PERR_INVALID_EMPTY,
2289
2305
  case 31:
2290
2306
 
2291
2307
/* Line 1455 of yacc.c  */
2292
 
#line 678 "parser.y"
 
2308
#line 679 "parser.y"
2293
2309
    {
2294
2310
                unregister_allocation ((yyvsp[(2) - (3)].list));
2295
2311
                (yyval.expr) = build_array ((yyvsp[(2) - (3)].list));
2301
2317
  case 33:
2302
2318
 
2303
2319
/* Line 1455 of yacc.c  */
2304
 
#line 686 "parser.y"
 
2320
#line 687 "parser.y"
2305
2321
    {
2306
2322
                GnmNamedExpr *nexpr = NULL;
2307
2323
                char const *name = value_peek_string ((yyvsp[(2) - (2)].expr)->constant.value);
2325
2341
  case 34:
2326
2342
 
2327
2343
/* Line 1455 of yacc.c  */
2328
 
#line 704 "parser.y"
 
2344
#line 705 "parser.y"
2329
2345
    {
2330
2346
                GnmNamedExpr *nexpr = NULL;
2331
2347
                char const *name = value_peek_string ((yyvsp[(2) - (2)].expr)->constant.value);
2350
2366
  case 35:
2351
2367
 
2352
2368
/* Line 1455 of yacc.c  */
2353
 
#line 725 "parser.y"
 
2369
#line 726 "parser.y"
2354
2370
    {
2355
2371
                char const *name = value_peek_string ((yyvsp[(1) - (4)].expr)->constant.value);
2356
2372
                GnmExpr const *f_call = (*state->convs->input.func) (
2368
2384
        }
2369
2385
    break;
2370
2386
 
2371
 
  case 38:
 
2387
  case 41:
2372
2388
 
2373
2389
/* Line 1455 of yacc.c  */
2374
 
#line 747 "parser.y"
 
2390
#line 752 "parser.y"
2375
2391
    {
2376
2392
                char const *wb_name = value_peek_string ((yyvsp[(2) - (3)].expr)->constant.value);
2377
2393
                Workbook *ref_wb = state->pos
2381
2397
                              ? state->pos->sheet->workbook
2382
2398
                              : NULL))
2383
2399
                        : NULL;
2384
 
                Workbook *wb;
2385
 
                if (state->convs->input.external_wb)
2386
 
                        wb = (*state->convs->input.external_wb) (state->convs, ref_wb, wb_name);
2387
 
                else
2388
 
                        wb = gnm_app_workbook_get_by_name (wb_name,
2389
 
                         ref_wb ? go_doc_get_uri ((GODoc *)ref_wb) : NULL);
 
2400
                Workbook *wb =
 
2401
                        state->convs->input.external_wb (state->convs,
 
2402
                                                         ref_wb,
 
2403
                                                         wb_name);
2390
2404
 
2391
2405
                if (wb != NULL) {
2392
2406
                        unregister_allocation ((yyvsp[(2) - (3)].expr)); gnm_expr_free ((yyvsp[(2) - (3)].expr));
2404
2418
        }
2405
2419
    break;
2406
2420
 
2407
 
  case 39:
 
2421
  case 42:
2408
2422
 
2409
2423
/* Line 1455 of yacc.c  */
2410
 
#line 777 "parser.y"
 
2424
#line 780 "parser.y"
2411
2425
    {
2412
2426
                /* Special syntax for global names shadowed by sheet names.  */
2413
2427
                Workbook *wb = state->pos
2427
2441
        }
2428
2442
    break;
2429
2443
 
2430
 
  case 40:
 
2444
  case 43:
2431
2445
 
2432
2446
/* Line 1455 of yacc.c  */
2433
 
#line 799 "parser.y"
 
2447
#line 802 "parser.y"
2434
2448
    {
2435
2449
                Sheet *sheet = parser_sheet_by_name (state->pos->wb, (yyvsp[(1) - (2)].expr));
2436
2450
                if (sheet != NULL) {
2442
2456
        }
2443
2457
    break;
2444
2458
 
2445
 
  case 41:
 
2459
  case 44:
2446
2460
 
2447
2461
/* Line 1455 of yacc.c  */
2448
 
#line 808 "parser.y"
 
2462
#line 811 "parser.y"
2449
2463
    {
2450
2464
                Workbook *wb = (yyvsp[(1) - (3)].wb);
2451
2465
                Sheet *sheet = parser_sheet_by_name (wb, (yyvsp[(2) - (3)].expr));
2458
2472
        }
2459
2473
    break;
2460
2474
 
2461
 
  case 42:
2462
 
 
2463
 
/* Line 1455 of yacc.c  */
2464
 
#line 820 "parser.y"
2465
 
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2466
 
    break;
2467
 
 
2468
 
  case 43:
2469
 
 
2470
 
/* Line 1455 of yacc.c  */
2471
 
#line 821 "parser.y"
2472
 
    {
2473
 
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), NULL);
2474
 
                if ((yyval.expr) == NULL) { YYERROR; }
2475
 
        }
2476
 
    break;
2477
 
 
2478
 
  case 44:
2479
 
 
2480
 
/* Line 1455 of yacc.c  */
2481
 
#line 825 "parser.y"
2482
 
    {
2483
 
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyvsp[(1) - (3)].expr));
2484
 
                if ((yyval.expr) == NULL) { YYERROR; }
2485
 
        }
2486
 
    break;
2487
 
 
2488
2475
  case 45:
2489
2476
 
2490
2477
/* Line 1455 of yacc.c  */
2491
 
#line 829 "parser.y"
2492
 
    {
2493
 
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyvsp[(3) - (3)].expr));
2494
 
                if ((yyval.expr) == NULL) { YYERROR; }
2495
 
        }
 
2478
#line 823 "parser.y"
 
2479
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2496
2480
    break;
2497
2481
 
2498
2482
  case 46:
2499
2483
 
2500
2484
/* Line 1455 of yacc.c  */
2501
 
#line 833 "parser.y"
 
2485
#line 824 "parser.y"
2502
2486
    {
2503
2487
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), NULL);
2504
2488
                if ((yyval.expr) == NULL) { YYERROR; }
2508
2492
  case 47:
2509
2493
 
2510
2494
/* Line 1455 of yacc.c  */
2511
 
#line 839 "parser.y"
 
2495
#line 828 "parser.y"
 
2496
    {
 
2497
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyvsp[(1) - (3)].expr));
 
2498
                if ((yyval.expr) == NULL) { YYERROR; }
 
2499
        }
 
2500
    break;
 
2501
 
 
2502
  case 48:
 
2503
 
 
2504
/* Line 1455 of yacc.c  */
 
2505
#line 832 "parser.y"
 
2506
    {
 
2507
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyvsp[(3) - (3)].expr));
 
2508
                if ((yyval.expr) == NULL) { YYERROR; }
 
2509
        }
 
2510
    break;
 
2511
 
 
2512
  case 49:
 
2513
 
 
2514
/* Line 1455 of yacc.c  */
 
2515
#line 836 "parser.y"
 
2516
    {
 
2517
                (yyval.expr) = build_range_ctor ((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), NULL);
 
2518
                if ((yyval.expr) == NULL) { YYERROR; }
 
2519
        }
 
2520
    break;
 
2521
 
 
2522
  case 50:
 
2523
 
 
2524
/* Line 1455 of yacc.c  */
 
2525
#line 842 "parser.y"
2512
2526
    {
2513
2527
                unregister_allocation ((yyvsp[(1) - (1)].expr));
2514
2528
                (yyval.list) = gnm_expr_list_prepend (NULL, (yyvsp[(1) - (1)].expr));
2516
2530
        }
2517
2531
    break;
2518
2532
 
2519
 
  case 48:
 
2533
  case 51:
2520
2534
 
2521
2535
/* Line 1455 of yacc.c  */
2522
 
#line 844 "parser.y"
 
2536
#line 847 "parser.y"
2523
2537
    {
2524
2538
                GSList *tmp = (yyvsp[(3) - (3)].list);
2525
2539
                unregister_allocation ((yyvsp[(3) - (3)].list));
2533
2547
        }
2534
2548
    break;
2535
2549
 
2536
 
  case 49:
 
2550
  case 52:
2537
2551
 
2538
2552
/* Line 1455 of yacc.c  */
2539
 
#line 855 "parser.y"
 
2553
#line 858 "parser.y"
2540
2554
    {
2541
2555
                GSList *tmp = (yyvsp[(2) - (2)].list);
2542
2556
                unregister_allocation ((yyvsp[(2) - (2)].list));
2549
2563
        }
2550
2564
    break;
2551
2565
 
2552
 
  case 50:
2553
 
 
2554
 
/* Line 1455 of yacc.c  */
2555
 
#line 865 "parser.y"
2556
 
    { (yyval.list) = NULL; }
2557
 
    break;
2558
 
 
2559
 
  case 51:
 
2566
  case 53:
2560
2567
 
2561
2568
/* Line 1455 of yacc.c  */
2562
2569
#line 868 "parser.y"
2563
 
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2564
 
    break;
2565
 
 
2566
 
  case 52:
2567
 
 
2568
 
/* Line 1455 of yacc.c  */
2569
 
#line 869 "parser.y"
2570
 
    {
2571
 
                GnmExpr *tmp = fold_negative_constant ((yyvsp[(2) - (2)].expr));
2572
 
                if (!tmp) { YYERROR; }
2573
 
                (yyval.expr) = tmp;
2574
 
         }
2575
 
    break;
2576
 
 
2577
 
  case 53:
2578
 
 
2579
 
/* Line 1455 of yacc.c  */
2580
 
#line 874 "parser.y"
2581
 
    {
2582
 
                GnmExpr *tmp = fold_positive_constant ((yyvsp[(2) - (2)].expr));
2583
 
                if (!tmp) { YYERROR; }
2584
 
                (yyval.expr) = tmp;
2585
 
         }
 
2570
    { (yyval.list) = NULL; }
2586
2571
    break;
2587
2572
 
2588
2573
  case 54:
2589
2574
 
2590
2575
/* Line 1455 of yacc.c  */
2591
 
#line 879 "parser.y"
2592
 
    { (yyval.expr) = parse_string_as_value ((yyvsp[(1) - (1)].expr)); }
 
2576
#line 871 "parser.y"
 
2577
    { (yyval.expr) = (yyvsp[(1) - (1)].expr); }
2593
2578
    break;
2594
2579
 
2595
2580
  case 55:
2596
2581
 
2597
2582
/* Line 1455 of yacc.c  */
2598
 
#line 883 "parser.y"
2599
 
    { (yyval.list) = NULL; }
 
2583
#line 872 "parser.y"
 
2584
    {
 
2585
                GnmExpr *tmp = fold_negative_constant ((yyvsp[(2) - (2)].expr));
 
2586
                if (!tmp) { YYERROR; }
 
2587
                (yyval.expr) = tmp;
 
2588
         }
2600
2589
    break;
2601
2590
 
2602
2591
  case 56:
2603
2592
 
2604
2593
/* Line 1455 of yacc.c  */
2605
 
#line 884 "parser.y"
 
2594
#line 877 "parser.y"
 
2595
    {
 
2596
                GnmExpr *tmp = fold_positive_constant ((yyvsp[(2) - (2)].expr));
 
2597
                if (!tmp) { YYERROR; }
 
2598
                (yyval.expr) = tmp;
 
2599
         }
 
2600
    break;
 
2601
 
 
2602
  case 57:
 
2603
 
 
2604
/* Line 1455 of yacc.c  */
 
2605
#line 882 "parser.y"
 
2606
    { (yyval.expr) = parse_string_as_value ((yyvsp[(1) - (1)].expr)); }
 
2607
    break;
 
2608
 
 
2609
  case 58:
 
2610
 
 
2611
/* Line 1455 of yacc.c  */
 
2612
#line 886 "parser.y"
 
2613
    { (yyval.list) = NULL; }
 
2614
    break;
 
2615
 
 
2616
  case 59:
 
2617
 
 
2618
/* Line 1455 of yacc.c  */
 
2619
#line 887 "parser.y"
2606
2620
    {
2607
2621
                unregister_allocation ((yyvsp[(1) - (1)].expr));
2608
2622
                (yyval.list) = g_slist_prepend (NULL, (yyvsp[(1) - (1)].expr));
2610
2624
        }
2611
2625
    break;
2612
2626
 
2613
 
  case 57:
 
2627
  case 60:
2614
2628
 
2615
2629
/* Line 1455 of yacc.c  */
2616
 
#line 889 "parser.y"
 
2630
#line 892 "parser.y"
2617
2631
    {
2618
2632
                unregister_allocation ((yyvsp[(3) - (3)].list));
2619
2633
                unregister_allocation ((yyvsp[(1) - (3)].expr));
2622
2636
        }
2623
2637
    break;
2624
2638
 
2625
 
  case 58:
 
2639
  case 61:
2626
2640
 
2627
2641
/* Line 1455 of yacc.c  */
2628
 
#line 897 "parser.y"
 
2642
#line 900 "parser.y"
2629
2643
    {
2630
2644
                unregister_allocation ((yyvsp[(1) - (1)].list));
2631
2645
                (yyval.list) = g_slist_prepend (NULL, (yyvsp[(1) - (1)].list));
2633
2647
        }
2634
2648
    break;
2635
2649
 
2636
 
  case 59:
 
2650
  case 62:
2637
2651
 
2638
2652
/* Line 1455 of yacc.c  */
2639
 
#line 902 "parser.y"
 
2653
#line 905 "parser.y"
2640
2654
    {
2641
2655
                unregister_allocation ((yyvsp[(3) - (3)].list));
2642
2656
                unregister_allocation ((yyvsp[(1) - (3)].list));
2648
2662
 
2649
2663
 
2650
2664
/* Line 1455 of yacc.c  */
2651
 
#line 2652 "parser.c"
 
2665
#line 2666 "parser.c"
2652
2666
      default: break;
2653
2667
    }
2654
2668
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2860
2874
 
2861
2875
 
2862
2876
/* Line 1675 of yacc.c  */
2863
 
#line 910 "parser.y"
 
2877
#line 913 "parser.y"
2864
2878
 
2865
2879
 
2866
2880
static char const *
3333
3347
                        return eat_space (state, QUOTED_STRING);
3334
3348
                }
3335
3349
        }
 
3350
 
 
3351
        case '[': {
 
3352
                const char *p = state->ptr;
 
3353
                GString *s = g_string_new (NULL);
 
3354
                Workbook *ref_wb = state->pos
 
3355
                        ? (state->pos->wb
 
3356
                           ? state->pos->wb
 
3357
                           : (state->pos->sheet
 
3358
                              ? state->pos->sheet->workbook
 
3359
                              : NULL))
 
3360
                        : NULL;
 
3361
 
 
3362
                while (g_unichar_isspace (g_utf8_get_char (p)))
 
3363
                        p = g_utf8_next_char (p);
 
3364
 
 
3365
                if (p[0] == '"' || p[0] == '\'') {
 
3366
                        p = go_strunescape (s, p);
 
3367
                } else {
 
3368
                        gunichar uc;
 
3369
                        while (1) {
 
3370
                                uc = g_utf8_get_char (p);
 
3371
                                if (!uc || uc == ']' || g_unichar_isspace (uc))
 
3372
                                        break;
 
3373
                                p = g_utf8_next_char (p);
 
3374
                                g_string_append_unichar (s, uc);
 
3375
                        }
 
3376
                }
 
3377
 
 
3378
                while (g_unichar_isspace (g_utf8_get_char (p)))
 
3379
                        p = g_utf8_next_char (p);
 
3380
 
 
3381
                if (s->len == 0 || p[0] != ']') {
 
3382
                        g_string_free (s, TRUE);
 
3383
                        break;
 
3384
                }
 
3385
 
 
3386
                yylval.wb = state->convs->input.external_wb (state->convs,
 
3387
                                                             ref_wb,
 
3388
                                                             s->str);
 
3389
                g_string_free (s, TRUE);
 
3390
                if (!yylval.wb)
 
3391
                        break;
 
3392
 
 
3393
                state->ptr = p + 1;
 
3394
                return tok_WORKBOOKREF;
 
3395
        }
3336
3396
        }
3337
3397
 
3338
3398
        if ((end = state->convs->input.name (start, state->convs))) {