Added quantiling UDAFs
[com/gs-lite.git] / src / ftacmp / partn.y
index d394b1d..c7dae74 100644 (file)
-/* ------------------------------------------------
-Copyright 2014 AT&T Intellectual Property
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
- ------------------------------------------- */
-
-/*
-       MUST COMPILE WITH
-   bison --verbose --defines=partn.tab.cc.h -p PartnParser  -o partn.tab.cc partn.y
-
-        (or equivalent).
-*/
-
-%{
-
-
-#include <stdio.h>
-
-/*             Some addn'l includes, necessary but not included by the
-               bison generated code.
-*/
-
-#include <stdlib.h>
-
-/*             prototypes for the parser callbacks.
-*/
-
-#include "parse_partn.h"
-
-extern partn_def_list_t *partn_parse_result;
-
-
-#define YYDEBUG 1
-
-%}
-
-
-       /* symbolic tokens */
-
-%union {
-       int intval;
-       double floatval;
-       char *strval;
-       int subtok;
-
-/*                     for FTA definition.     */
-       literal_t *litval;
-       scalarexp_t *scalarval;
-       se_list_t *se_listval;
-       colref_t *colref;
-       partn_def_list_t *pdl;
-       partn_def_t *pd;
-}
-
-%token <strval> NAME
-%token <strval> STRING_TOKEN
-%token <strval> INTNUM
-%token <strval> LONGINTNUM
-
-/*                     for FTA definition.     */
-%type <litval> literal
-%type <colref> column_ref
-%type <scalarval> scalar_exp
-%type <se_listval> scalar_exp_commalist
-%type <pdl> partn_def_list
-%type <pd> partn_def
-
-%left '|'
-%left '&'
-%left '+' '-'
-%left '*' '/' 
-%nonassoc UMINUS
-
-       /* literal keyword tokens */
-%token HEX_L LHEX_L IP_L
-
-
-%%
-
-/*                     Union of possible results       */
-parse_result:  partn_def_list  {
-               partn_parse_result = $1;
-       }
-       ;
-
-
-partn_def_list:
-       partn_def       {$$ = new partn_def_list_t($1);}
-       | partn_def_list partn_def      {$$=$1->append($2);}
-       ;
-
-partn_def:
-       NAME '[' NAME ']' ':' '(' scalar_exp_commalist ')'
-               {$$ = new partn_def_t($1,$3,$7);}
-       ;
-
-scalar_exp:
-               scalar_exp '+' scalar_exp       { $$=new scalarexp_t("+",$1,$3);}
-       |       scalar_exp '-' scalar_exp       { $$=new scalarexp_t("-",$1,$3);}
-       |       scalar_exp '|' scalar_exp       { $$=new scalarexp_t("|",$1,$3);}
-       |       scalar_exp '*' scalar_exp       { $$=new scalarexp_t("*",$1,$3);}
-       |       scalar_exp '/' scalar_exp       { $$=new scalarexp_t("/",$1,$3);}
-       |       scalar_exp '&' scalar_exp       { $$=new scalarexp_t("&",$1,$3);}
-       |       '+' scalar_exp %prec UMINUS     { $$ = new scalarexp_t("+",$2);}
-       |       '-' scalar_exp %prec UMINUS     { $$ = new scalarexp_t("-",$2);}
-       |       literal { $$= new scalarexp_t($1);}
-       |       column_ref { $$ = new scalarexp_t($1);}
-       |       '(' scalar_exp ')'      {$$ = $2;}
-       ;
-
-scalar_exp_commalist:
-               scalar_exp      {       $$= new se_list_t($1); }
-       |       scalar_exp_commalist ',' scalar_exp     { $$=$1->append($3); }
-       ;
-
-literal:
-               INTNUM          {$$ = new literal_t($1,LITERAL_INT);}
-       |       LONGINTNUM              {$$ = new literal_t($1,LITERAL_LONGINT);}
-       |       HEX_L  STRING_TOKEN     {$$ = new literal_t($2,LITERAL_HEX);}
-       |       LHEX_L  STRING_TOKEN    {$$ = new literal_t($2,LITERAL_LONGHEX);}
-       |       IP_L  STRING_TOKEN      {$$ = new literal_t($2,LITERAL_IP);}
-       ;
-
-
-column_ref:
-               NAME    {$$ = new colref_t($1); }
-       ;
-
-
-%%
-
+/* ------------------------------------------------\r
+Copyright 2014 AT&T Intellectual Property\r
+   Licensed under the Apache License, Version 2.0 (the "License");\r
+   you may not use this file except in compliance with the License.\r
+   You may obtain a copy of the License at\r
+\r
+     http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+ ------------------------------------------- */\r
+\r
+/*\r
+       MUST COMPILE WITH\r
+   bison --verbose --defines=partn.tab.cc.h -p PartnParser  -o partn.tab.cc partn.y\r
+\r
+        (or equivalent).\r
+*/\r
+\r
+%{\r
+\r
+\r
+#include <stdio.h>\r
+\r
+/*             Some addn'l includes, necessary but not included by the\r
+               bison generated code.\r
+*/\r
+\r
+#include <stdlib.h>\r
+\r
+/*             prototypes for the parser callbacks.\r
+*/\r
+\r
+#include "parse_partn.h"\r
+\r
+extern partn_def_list_t *partn_parse_result;\r
+\r
+\r
+#define YYDEBUG 1\r
+\r
+%}\r
+\r
+\r
+       /* symbolic tokens */\r
+\r
+%union {\r
+       int intval;\r
+       double floatval;\r
+       char *strval;\r
+       int subtok;\r
+\r
+/*                     for FTA definition.     */\r
+       literal_t *litval;\r
+       scalarexp_t *scalarval;\r
+       se_list_t *se_listval;\r
+       colref_t *colref;\r
+       partn_def_list_t *pdl;\r
+       partn_def_t *pd;\r
+}\r
+\r
+%token <strval> NAME\r
+%token <strval> STRING_TOKEN\r
+%token <strval> INTNUM\r
+%token <strval> LONGINTNUM\r
+\r
+/*                     for FTA definition.     */\r
+%type <litval> literal\r
+%type <colref> column_ref\r
+%type <scalarval> scalar_exp\r
+%type <se_listval> scalar_exp_commalist\r
+%type <pdl> partn_def_list\r
+%type <pd> partn_def\r
+\r
+%left '|'\r
+%left '&'\r
+%left '+' '-'\r
+%left '*' '/' \r
+%nonassoc UMINUS\r
+\r
+       /* literal keyword tokens */\r
+%token HEX_L LHEX_L IP_L\r
+\r
+\r
+%%\r
+\r
+/*                     Union of possible results       */\r
+parse_result:  partn_def_list  {\r
+               partn_parse_result = $1;\r
+       }\r
+       ;\r
+\r
+\r
+partn_def_list:\r
+       partn_def       {$$ = new partn_def_list_t($1);}\r
+       | partn_def_list partn_def      {$$=$1->append($2);}\r
+       ;\r
+\r
+partn_def:\r
+       NAME '[' NAME ']' ':' '(' scalar_exp_commalist ')'\r
+               {$$ = new partn_def_t($1,$3,$7);}\r
+       ;\r
+\r
+scalar_exp:\r
+               scalar_exp '+' scalar_exp       { $$=new scalarexp_t("+",$1,$3);}\r
+       |       scalar_exp '-' scalar_exp       { $$=new scalarexp_t("-",$1,$3);}\r
+       |       scalar_exp '|' scalar_exp       { $$=new scalarexp_t("|",$1,$3);}\r
+       |       scalar_exp '*' scalar_exp       { $$=new scalarexp_t("*",$1,$3);}\r
+       |       scalar_exp '/' scalar_exp       { $$=new scalarexp_t("/",$1,$3);}\r
+       |       scalar_exp '&' scalar_exp       { $$=new scalarexp_t("&",$1,$3);}\r
+       |       '+' scalar_exp %prec UMINUS     { $$ = new scalarexp_t("+",$2);}\r
+       |       '-' scalar_exp %prec UMINUS     { $$ = new scalarexp_t("-",$2);}\r
+       |       literal { $$= new scalarexp_t($1);}\r
+       |       column_ref { $$ = new scalarexp_t($1);}\r
+       |       '(' scalar_exp ')'      {$$ = $2;}\r
+       ;\r
+\r
+scalar_exp_commalist:\r
+               scalar_exp      {       $$= new se_list_t($1); }\r
+       |       scalar_exp_commalist ',' scalar_exp     { $$=$1->append($3); }\r
+       ;\r
+\r
+literal:\r
+               INTNUM          {$$ = new literal_t($1,LITERAL_INT);}\r
+       |       LONGINTNUM              {$$ = new literal_t($1,LITERAL_LONGINT);}\r
+       |       HEX_L  STRING_TOKEN     {$$ = new literal_t($2,LITERAL_HEX);}\r
+       |       LHEX_L  STRING_TOKEN    {$$ = new literal_t($2,LITERAL_LONGHEX);}\r
+       |       IP_L  STRING_TOKEN      {$$ = new literal_t($2,LITERAL_IP);}\r
+       ;\r
+\r
+\r
+column_ref:\r
+               NAME    {$$ = new colref_t($1); }\r
+       ;\r
+\r
+\r
+%%\r
+\r