From: Igor Maravic <[email protected]>

Signed-off-by: Igor Maravic <[email protected]>
---
 xorp/policy/policy.y  |  140 -------------------------------------------------
 xorp/policy/policy.yy |  140 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 140 insertions(+), 140 deletions(-)
 delete mode 100644 xorp/policy/policy.y
 create mode 100644 xorp/policy/policy.yy

diff --git a/xorp/policy/policy.y b/xorp/policy/policy.y
deleted file mode 100644
index a8f88a0..0000000
--- a/xorp/policy/policy.y
+++ /dev/null
@@ -1,140 +0,0 @@
-%{
-/*
- * Grammar may be simplified, by allowing "any structure", semantic checking is
- * done at run time anyway...
- * By any structure i mean that you may add / multiple boolean expressions for
- * example. This will give more run time flexibility
- *
- * yacc -d -p yy_policy_parser -o yacc.yy_policy_parser.cc policy.y
- */
-
-#include <vector>
-
-#include "policy_module.h"
-#include "libxorp/xorp.h"
-#include "policy/common/element.hh"
-#include "policy/common/element_factory.hh"
-#include "policy/common/operator.hh"
-#include "policy_parser.hh"
-
-extern int  yylex(void);
-extern void yyerror(const char *m);
-
-using namespace policy_parser;
-
-static ElementFactory _ef;
-
-%}
-
-%union {
-       char*           c_str;
-       Node*           node;
-       BinOper*        op;
-};
-
-%token <c_str> YY_BOOL YY_INT YY_UINT YY_UINTRANGE YY_STR YY_ID 
-%token <c_str> YY_IPV4 YY_IPV4RANGE YY_IPV4NET YY_IPV6 YY_IPV6RANGE YY_IPV6NET
-%token YY_SEMICOLON YY_LPAR YY_RPAR YY_ASSIGN YY_SET YY_REGEX
-%token YY_ACCEPT YY_REJECT YY_PROTOCOL YY_NEXT YY_POLICY YY_PLUS_EQUALS
-%token YY_MINUS_EQUALS YY_TERM
-
-%left YY_NOT YY_AND YY_XOR YY_OR YY_HEAD YY_CTR YY_NE_INT
-%left YY_EQ YY_NE YY_LE YY_GT YY_LT YY_GE
-%left YY_IPNET_EQ YY_IPNET_LE YY_IPNET_GT YY_IPNET_LT YY_IPNET_GE
-%left YY_ADD YY_SUB
-%left YY_MUL
-
-%type <node> actionstatement action boolstatement boolexpr expr assignexpr
-%type <op>   assignop
-%%
-
-statement:
-         statement actionstatement { _parser_nodes->push_back($2); }
-       | statement boolstatement { _parser_nodes->push_back($2); }  
-       | /* empty */
-       ;
-
-actionstatement:
-         action YY_SEMICOLON { $$ = $1; }
-       ; 
-
-action:
-         assignexpr
-       | YY_ACCEPT { $$ = new NodeAccept(_parser_lineno); }
-       | YY_REJECT { $$ = new NodeReject(_parser_lineno); }
-       | YY_NEXT YY_POLICY
-         { $$ = new NodeNext(_parser_lineno, NodeNext::POLICY); }
-       | YY_NEXT YY_TERM
-         { $$ = new NodeNext(_parser_lineno, NodeNext::TERM); }
-       ;
-
-assignexpr:
-         YY_ID assignop expr
-         { $$ = new NodeAssign($1, $2, $3, _parser_lineno); free($1); }
-       ;
-
-assignop:
-         YY_ASSIGN             { $$ = NULL; }
-       | YY_PLUS_EQUALS        { $$ = new OpAdd; }
-       | YY_MINUS_EQUALS       { $$ = new OpSub; }
-       ;
-
-boolstatement:
-         boolexpr YY_SEMICOLON { $$ = $1; }
-       ;
-
-boolexpr:
-         YY_PROTOCOL YY_EQ YY_ID { $$ = new NodeProto($3,_parser_lineno); 
free($3); }
-       | YY_NOT boolexpr { $$ = new NodeUn(new OpNot,$2,_parser_lineno); }
-       | YY_POLICY YY_ID { $$ = new NodeSubr(_parser_lineno, $2); free($2); }
-       | boolexpr YY_AND boolexpr { $$ = new NodeBin(new 
OpAnd,$1,$3,_parser_lineno); }
-       | boolexpr YY_XOR boolexpr { $$ = new NodeBin(new 
OpXor,$1,$3,_parser_lineno); }
-       | boolexpr YY_OR boolexpr { $$ = new NodeBin(new 
OpOr,$1,$3,_parser_lineno); }
-
-       | expr YY_EQ expr { $$ = new NodeBin(new OpEq,$1,$3,_parser_lineno); }
-       | expr YY_NE expr { $$ = new NodeBin(new OpNe,$1,$3,_parser_lineno); }
-       
-       | expr YY_LT expr { $$ = new NodeBin(new OpLt,$1,$3,_parser_lineno); }
-       | expr YY_GT expr { $$ = new NodeBin(new OpGt,$1,$3,_parser_lineno); }
-       | expr YY_LE expr { $$ = new NodeBin(new OpLe,$1,$3,_parser_lineno); }
-       | expr YY_GE expr { $$ = new NodeBin(new OpGe,$1,$3,_parser_lineno); }
-
-       | expr YY_IPNET_EQ expr { $$ = new NodeBin(new 
OpEq,$1,$3,_parser_lineno); }
-       | expr YY_NOT expr { $$ = new NodeBin(new OpNe,$1,$3,_parser_lineno); }
-       | expr YY_IPNET_LT expr { $$ = new NodeBin(new 
OpLt,$1,$3,_parser_lineno); }
-       | expr YY_IPNET_GT expr { $$ = new NodeBin(new 
OpGt,$1,$3,_parser_lineno); }
-       | expr YY_IPNET_LE expr { $$ = new NodeBin(new 
OpLe,$1,$3,_parser_lineno); }
-       | expr YY_IPNET_GE expr { $$ = new NodeBin(new 
OpGe,$1,$3,_parser_lineno); }
-
-       | expr YY_NE_INT expr { $$ = new NodeBin(new OpNEInt, $1, $3, 
_parser_lineno); }
-
-       | YY_LPAR boolexpr YY_RPAR { $$ = $2; }
-       
-       | expr YY_REGEX expr    { $$ = new NodeBin(new OpRegex, $1, $3, 
_parser_lineno); }
-       ;
-
-expr:  
-         expr YY_ADD expr { $$ = new NodeBin(new OpAdd,$1,$3,_parser_lineno); }
-       | expr YY_SUB expr { $$ = new NodeBin(new OpSub,$1,$3,_parser_lineno); }
-       | expr YY_MUL expr { $$ = new NodeBin(new OpMul,$1,$3,_parser_lineno); }
-
-       | YY_HEAD expr { $$ = new NodeUn(new OpHead, $2, _parser_lineno); }
-       | YY_CTR expr expr { $$ = new NodeBin(new OpCtr, $2, $3, 
_parser_lineno); }
-       
-       | YY_LPAR expr YY_RPAR { $$ = $2; }
-
-       | YY_STR { $$ = new 
NodeElem(_ef.create(ElemStr::id,$1),_parser_lineno); free($1); }
-       | YY_UINT { $$ = new 
NodeElem(_ef.create(ElemU32::id,$1),_parser_lineno); free($1);}
-       | YY_UINTRANGE { $$ = new 
NodeElem(_ef.create(ElemU32Range::id,$1),_parser_lineno); free($1);}
-       | YY_INT { $$ = new 
NodeElem(_ef.create(ElemInt32::id,$1),_parser_lineno); free($1);}
-       | YY_BOOL { $$ = new 
NodeElem(_ef.create(ElemBool::id,$1),_parser_lineno); free($1);}
-       | YY_ID { $$ = new NodeVar($1,_parser_lineno); free($1); }
-       | YY_SET YY_ID { $$ = new NodeSet($2,_parser_lineno); free($2); }
-       | YY_IPV4 { $$ = new 
NodeElem(_ef.create(ElemIPv4::id,$1),_parser_lineno); free($1); }
-       | YY_IPV4RANGE { $$ = new 
NodeElem(_ef.create(ElemIPv4Range::id,$1),_parser_lineno); free($1); }
-       | YY_IPV6 { $$ = new 
NodeElem(_ef.create(ElemIPv6::id,$1),_parser_lineno); free($1); }
-       | YY_IPV6RANGE { $$ = new 
NodeElem(_ef.create(ElemIPv6Range::id,$1),_parser_lineno); free($1); }
-       | YY_IPV4NET { $$ = new 
NodeElem(_ef.create(ElemIPv4Net::id,$1),_parser_lineno); free($1); }
-       | YY_IPV6NET { $$ = new 
NodeElem(_ef.create(ElemIPv6Net::id,$1),_parser_lineno); free($1); }
-        ;
-%%
diff --git a/xorp/policy/policy.yy b/xorp/policy/policy.yy
new file mode 100644
index 0000000..1d055e3
--- /dev/null
+++ b/xorp/policy/policy.yy
@@ -0,0 +1,140 @@
+%{
+/*
+ * Grammar may be simplified, by allowing "any structure", semantic checking is
+ * done at run time anyway...
+ * By any structure i mean that you may add / multiple boolean expressions for
+ * example. This will give more run time flexibility
+ *
+ * yacc -d -p yy_policy_parser -o yacc.yy_policy_parser.cc policy.y
+ */
+
+#include <vector>
+
+#include "policy/policy_module.h"
+#include "libxorp/xorp.h"
+#include "policy/common/element.hh"
+#include "policy/common/element_factory.hh"
+#include "policy/common/operator.hh"
+#include "policy/policy_parser.hh"
+
+extern int  yylex(void);
+extern void yyerror(const char *m);
+
+using namespace policy_parser;
+
+static ElementFactory _ef;
+
+%}
+
+%union {
+       char*           c_str;
+       Node*           node;
+       BinOper*        op;
+};
+
+%token <c_str> YY_BOOL YY_INT YY_UINT YY_UINTRANGE YY_STR YY_ID 
+%token <c_str> YY_IPV4 YY_IPV4RANGE YY_IPV4NET YY_IPV6 YY_IPV6RANGE YY_IPV6NET
+%token YY_SEMICOLON YY_LPAR YY_RPAR YY_ASSIGN YY_SET YY_REGEX
+%token YY_ACCEPT YY_REJECT YY_PROTOCOL YY_NEXT YY_POLICY YY_PLUS_EQUALS
+%token YY_MINUS_EQUALS YY_TERM
+
+%left YY_NOT YY_AND YY_XOR YY_OR YY_HEAD YY_CTR YY_NE_INT
+%left YY_EQ YY_NE YY_LE YY_GT YY_LT YY_GE
+%left YY_IPNET_EQ YY_IPNET_LE YY_IPNET_GT YY_IPNET_LT YY_IPNET_GE
+%left YY_ADD YY_SUB
+%left YY_MUL
+
+%type <node> actionstatement action boolstatement boolexpr expr assignexpr
+%type <op>   assignop
+%%
+
+statement:
+         statement actionstatement { _parser_nodes->push_back($2); }
+       | statement boolstatement { _parser_nodes->push_back($2); }  
+       | /* empty */
+       ;
+
+actionstatement:
+         action YY_SEMICOLON { $$ = $1; }
+       ; 
+
+action:
+         assignexpr
+       | YY_ACCEPT { $$ = new NodeAccept(_parser_lineno); }
+       | YY_REJECT { $$ = new NodeReject(_parser_lineno); }
+       | YY_NEXT YY_POLICY
+         { $$ = new NodeNext(_parser_lineno, NodeNext::POLICY); }
+       | YY_NEXT YY_TERM
+         { $$ = new NodeNext(_parser_lineno, NodeNext::TERM); }
+       ;
+
+assignexpr:
+         YY_ID assignop expr
+         { $$ = new NodeAssign($1, $2, $3, _parser_lineno); free($1); }
+       ;
+
+assignop:
+         YY_ASSIGN             { $$ = NULL; }
+       | YY_PLUS_EQUALS        { $$ = new OpAdd; }
+       | YY_MINUS_EQUALS       { $$ = new OpSub; }
+       ;
+
+boolstatement:
+         boolexpr YY_SEMICOLON { $$ = $1; }
+       ;
+
+boolexpr:
+         YY_PROTOCOL YY_EQ YY_ID { $$ = new NodeProto($3,_parser_lineno); 
free($3); }
+       | YY_NOT boolexpr { $$ = new NodeUn(new OpNot,$2,_parser_lineno); }
+       | YY_POLICY YY_ID { $$ = new NodeSubr(_parser_lineno, $2); free($2); }
+       | boolexpr YY_AND boolexpr { $$ = new NodeBin(new 
OpAnd,$1,$3,_parser_lineno); }
+       | boolexpr YY_XOR boolexpr { $$ = new NodeBin(new 
OpXor,$1,$3,_parser_lineno); }
+       | boolexpr YY_OR boolexpr { $$ = new NodeBin(new 
OpOr,$1,$3,_parser_lineno); }
+
+       | expr YY_EQ expr { $$ = new NodeBin(new OpEq,$1,$3,_parser_lineno); }
+       | expr YY_NE expr { $$ = new NodeBin(new OpNe,$1,$3,_parser_lineno); }
+       
+       | expr YY_LT expr { $$ = new NodeBin(new OpLt,$1,$3,_parser_lineno); }
+       | expr YY_GT expr { $$ = new NodeBin(new OpGt,$1,$3,_parser_lineno); }
+       | expr YY_LE expr { $$ = new NodeBin(new OpLe,$1,$3,_parser_lineno); }
+       | expr YY_GE expr { $$ = new NodeBin(new OpGe,$1,$3,_parser_lineno); }
+
+       | expr YY_IPNET_EQ expr { $$ = new NodeBin(new 
OpEq,$1,$3,_parser_lineno); }
+       | expr YY_NOT expr { $$ = new NodeBin(new OpNe,$1,$3,_parser_lineno); }
+       | expr YY_IPNET_LT expr { $$ = new NodeBin(new 
OpLt,$1,$3,_parser_lineno); }
+       | expr YY_IPNET_GT expr { $$ = new NodeBin(new 
OpGt,$1,$3,_parser_lineno); }
+       | expr YY_IPNET_LE expr { $$ = new NodeBin(new 
OpLe,$1,$3,_parser_lineno); }
+       | expr YY_IPNET_GE expr { $$ = new NodeBin(new 
OpGe,$1,$3,_parser_lineno); }
+
+       | expr YY_NE_INT expr { $$ = new NodeBin(new OpNEInt, $1, $3, 
_parser_lineno); }
+
+       | YY_LPAR boolexpr YY_RPAR { $$ = $2; }
+       
+       | expr YY_REGEX expr    { $$ = new NodeBin(new OpRegex, $1, $3, 
_parser_lineno); }
+       ;
+
+expr:  
+         expr YY_ADD expr { $$ = new NodeBin(new OpAdd,$1,$3,_parser_lineno); }
+       | expr YY_SUB expr { $$ = new NodeBin(new OpSub,$1,$3,_parser_lineno); }
+       | expr YY_MUL expr { $$ = new NodeBin(new OpMul,$1,$3,_parser_lineno); }
+
+       | YY_HEAD expr { $$ = new NodeUn(new OpHead, $2, _parser_lineno); }
+       | YY_CTR expr expr { $$ = new NodeBin(new OpCtr, $2, $3, 
_parser_lineno); }
+       
+       | YY_LPAR expr YY_RPAR { $$ = $2; }
+
+       | YY_STR { $$ = new 
NodeElem(_ef.create(ElemStr::id,$1),_parser_lineno); free($1); }
+       | YY_UINT { $$ = new 
NodeElem(_ef.create(ElemU32::id,$1),_parser_lineno); free($1);}
+       | YY_UINTRANGE { $$ = new 
NodeElem(_ef.create(ElemU32Range::id,$1),_parser_lineno); free($1);}
+       | YY_INT { $$ = new 
NodeElem(_ef.create(ElemInt32::id,$1),_parser_lineno); free($1);}
+       | YY_BOOL { $$ = new 
NodeElem(_ef.create(ElemBool::id,$1),_parser_lineno); free($1);}
+       | YY_ID { $$ = new NodeVar($1,_parser_lineno); free($1); }
+       | YY_SET YY_ID { $$ = new NodeSet($2,_parser_lineno); free($2); }
+       | YY_IPV4 { $$ = new 
NodeElem(_ef.create(ElemIPv4::id,$1),_parser_lineno); free($1); }
+       | YY_IPV4RANGE { $$ = new 
NodeElem(_ef.create(ElemIPv4Range::id,$1),_parser_lineno); free($1); }
+       | YY_IPV6 { $$ = new 
NodeElem(_ef.create(ElemIPv6::id,$1),_parser_lineno); free($1); }
+       | YY_IPV6RANGE { $$ = new 
NodeElem(_ef.create(ElemIPv6Range::id,$1),_parser_lineno); free($1); }
+       | YY_IPV4NET { $$ = new 
NodeElem(_ef.create(ElemIPv4Net::id,$1),_parser_lineno); free($1); }
+       | YY_IPV6NET { $$ = new 
NodeElem(_ef.create(ElemIPv6Net::id,$1),_parser_lineno); free($1); }
+        ;
+%%
-- 
1.7.9.5

_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers

Reply via email to