-/* ------------------------------------------------\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
+/* ------------------------------------------------
+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); }
+ ;
+
+
+%%
+