From: Igor Maravic <[email protected]>

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

diff --git a/xorp/policy/backend/backend.y b/xorp/policy/backend/backend.y
deleted file mode 100644
index c282906..0000000
--- a/xorp/policy/backend/backend.y
+++ /dev/null
@@ -1,183 +0,0 @@
-%{
-/*
- * yacc -d -p yy_policy_backend_parser -o yacc.yy_policy_backend_parser.cc 
backend.y
- */
-
-#include <vector>
-
-#include "libxorp/xorp.h"
-#include "policy/common/varrw.hh"
-#include "policy/common/element_factory.hh"
-#include "policy/common/operator.hh"
-#include "policy_backend_parser.hh"
-#include "instruction.hh"
-#include "term_instr.hh"
-#include "policy_instr.hh"
-
-extern int  yylex(void);
-extern void yyerror(const char*);
-
-using namespace policy_backend_parser;
-
-static ElementFactory  _ef;
-
-%}
-
-%union {
-       char*           c_str;
-       PolicyInstr*    c_pi;
-};
-
-%token <c_str> YY_ARG
-%token YY_NEWLINE YY_BLANK
-%token YY_POLICY_START YY_POLICY_END YY_TERM_START YY_TERM_END
-%token YY_PUSH YY_PUSH_SET
-%token YY_EQ YY_NE YY_LT YY_GT YY_LE YY_GE
-%token YY_NOT YY_AND YY_OR YY_XOR YY_HEAD YY_CTR YY_NE_INT
-%token YY_ADD YY_SUB YY_MUL
-%token YY_ONFALSE_EXIT
-%token YY_REGEX
-%token YY_LOAD YY_STORE
-%token YY_ACCEPT YY_REJECT
-%token YY_SET YY_NEXT YY_POLICY YY_SUBR_START YY_SUBR_END YY_TERM
-
-%type <c_pi> policy
-%%
-
-program:
-         program policy { _yy_policies->push_back($2); }
-       | program subroutine
-       | program set  
-       | /* empty */
-       ;
-
-set:
-         YY_SET YY_ARG YY_ARG YY_ARG YY_NEWLINE 
-         {
-               // XXX: doesn't delete old
-               (*_yy_sets)[$3] = _ef.create($2, $4);
-               free($2); free($3); free($4);
-         }
-       ;
-
-subroutine:
-         YY_SUBR_START YY_NEWLINE policies YY_SUBR_END YY_NEWLINE
-       ;
-
-policies:
-         policies policy { (*_yy_subr)[$2->name()] = $2; }
-       | /* empty */
-       ;
-
-policy:          YY_POLICY_START YY_ARG YY_NEWLINE terms YY_POLICY_END 
YY_NEWLINE
-       {
-               PolicyInstr* pi = new PolicyInstr($2,_yy_terms);
-
-               pi->set_trace(_yy_trace);
-               _yy_trace = false;
-
-               _yy_terms = new vector<TermInstr*>();
-
-               free($2);
-
-               $$ = pi;
-       }
-       ;
-
-terms:
-         terms YY_TERM_START YY_ARG YY_NEWLINE statements YY_TERM_END 
YY_NEWLINE {
-         
-                       TermInstr* ti = new TermInstr($3,_yy_instructions);
-                       _yy_instructions = new vector<Instruction*>();
-                       _yy_terms->push_back(ti);
-                       free($3);
-                       }
-       | /* empty */           
-       ;
-
-statements: 
-         statements statement YY_NEWLINE
-       | /* empty */
-       ;
-
-
-statement:
-         YY_PUSH YY_ARG YY_ARG {
-                               Instruction* i = new Push(_ef.create($2,$3));
-                               _yy_instructions->push_back(i);
-                               free($2); free($3);
-                               }
-       | YY_PUSH_SET YY_ARG    {
-                               _yy_instructions->push_back(new PushSet($2));
-                               free($2);
-                               }
-       
-       | YY_ONFALSE_EXIT       {
-                               _yy_instructions->push_back(new OnFalseExit());
-                               }
-
-       | YY_LOAD YY_ARG        {
-                               char* err = NULL;
-                               bool is_error = false;
-                               VarRW::Id id = strtoul($2, &err, 10);
-                               if ((err != NULL) && (*err != '\0'))
-                                   is_error = true;
-                               free($2);
-                               if (is_error) {
-                                       yyerror("Need numeric var ID");
-                                       YYERROR;
-                               }
-                               _yy_instructions->push_back(new Load(id));
-                               }
-
-       | YY_STORE YY_ARG       {
-                               char* err = NULL;
-                               bool is_error = false;
-                               VarRW::Id id = strtoul($2, &err, 10);
-
-                               if ((err != NULL) && (*err != '\0'))
-                                   is_error = true;
-
-                               free($2);
-
-                               if (is_error) {
-                                       yyerror("Need numeric var ID");
-                                       YYERROR;
-                               }
-
-                               if (id == VarRW::VAR_TRACE)
-                                       _yy_trace = true;
-
-                               _yy_instructions->push_back(new Store(id));
-                               }
-
-       | YY_ACCEPT             { _yy_instructions->push_back(new Accept()); }
-       | YY_REJECT             { _yy_instructions->push_back(new Reject()); }
-
-       | YY_EQ         { _yy_instructions->push_back(new NaryInstr(new OpEq)); 
}
-       | YY_NE         { _yy_instructions->push_back(new NaryInstr(new OpNe)); 
}
-       | YY_LT         { _yy_instructions->push_back(new NaryInstr(new OpLt)); 
}
-       | YY_GT         { _yy_instructions->push_back(new NaryInstr(new OpGt)); 
}
-       | YY_LE         { _yy_instructions->push_back(new NaryInstr(new OpLe)); 
}
-       | YY_GE         { _yy_instructions->push_back(new NaryInstr(new OpGe)); 
}
-
-       | YY_NOT        { _yy_instructions->push_back(new NaryInstr(new 
OpNot)); }
-       | YY_AND        { _yy_instructions->push_back(new NaryInstr(new 
OpAnd)); }
-       | YY_XOR        { _yy_instructions->push_back(new NaryInstr(new 
OpXor)); }
-       | YY_OR         { _yy_instructions->push_back(new NaryInstr(new OpOr)); 
}
-
-       | YY_ADD        { _yy_instructions->push_back(new NaryInstr(new 
OpAdd)); }
-       | YY_SUB        { _yy_instructions->push_back(new NaryInstr(new 
OpSub)); }
-       | YY_MUL        { _yy_instructions->push_back(new NaryInstr(new 
OpMul)); }
-       | YY_HEAD       { _yy_instructions->push_back(new NaryInstr(new 
OpHead));}
-       | YY_CTR        { _yy_instructions->push_back(new NaryInstr(new 
OpCtr));}
-       | YY_NE_INT     { _yy_instructions->push_back(new NaryInstr(new 
OpNEInt));}
-       | YY_REGEX      { _yy_instructions->push_back(new NaryInstr(new 
OpRegex));}
-       | YY_NEXT YY_POLICY
-       { _yy_instructions->push_back(new Next(Next::POLICY)); }
-       | YY_NEXT YY_TERM
-       { _yy_instructions->push_back(new Next(Next::TERM)); }
-       | YY_POLICY YY_ARG
-       { _yy_instructions->push_back(new Subr($2)); free($2); }
-       ;
-%%
diff --git a/xorp/policy/backend/backend.yy b/xorp/policy/backend/backend.yy
new file mode 100644
index 0000000..844e81e
--- /dev/null
+++ b/xorp/policy/backend/backend.yy
@@ -0,0 +1,183 @@
+%{
+/*
+ * yacc -d -p yy_policy_backend_parser -o yacc.yy_policy_backend_parser.cc 
backend.y
+ */
+
+#include <vector>
+
+#include "libxorp/xorp.h"
+#include "policy/common/varrw.hh"
+#include "policy/common/element_factory.hh"
+#include "policy/common/operator.hh"
+#include "policy/backend/policy_backend_parser.hh"
+#include "policy/backend/instruction.hh"
+#include "policy/backend/term_instr.hh"
+#include "policy/backend/policy_instr.hh"
+
+extern int  yylex(void);
+extern void yyerror(const char*);
+
+using namespace policy_backend_parser;
+
+static ElementFactory  _ef;
+
+%}
+
+%union {
+       char*           c_str;
+       PolicyInstr*    c_pi;
+};
+
+%token <c_str> YY_ARG
+%token YY_NEWLINE YY_BLANK
+%token YY_POLICY_START YY_POLICY_END YY_TERM_START YY_TERM_END
+%token YY_PUSH YY_PUSH_SET
+%token YY_EQ YY_NE YY_LT YY_GT YY_LE YY_GE
+%token YY_NOT YY_AND YY_OR YY_XOR YY_HEAD YY_CTR YY_NE_INT
+%token YY_ADD YY_SUB YY_MUL
+%token YY_ONFALSE_EXIT
+%token YY_REGEX
+%token YY_LOAD YY_STORE
+%token YY_ACCEPT YY_REJECT
+%token YY_SET YY_NEXT YY_POLICY YY_SUBR_START YY_SUBR_END YY_TERM
+
+%type <c_pi> policy
+%%
+
+program:
+         program policy { _yy_policies->push_back($2); }
+       | program subroutine
+       | program set  
+       | /* empty */
+       ;
+
+set:
+         YY_SET YY_ARG YY_ARG YY_ARG YY_NEWLINE 
+         {
+               // XXX: doesn't delete old
+               (*_yy_sets)[$3] = _ef.create($2, $4);
+               free($2); free($3); free($4);
+         }
+       ;
+
+subroutine:
+         YY_SUBR_START YY_NEWLINE policies YY_SUBR_END YY_NEWLINE
+       ;
+
+policies:
+         policies policy { (*_yy_subr)[$2->name()] = $2; }
+       | /* empty */
+       ;
+
+policy:          YY_POLICY_START YY_ARG YY_NEWLINE terms YY_POLICY_END 
YY_NEWLINE
+       {
+               PolicyInstr* pi = new PolicyInstr($2,_yy_terms);
+
+               pi->set_trace(_yy_trace);
+               _yy_trace = false;
+
+               _yy_terms = new vector<TermInstr*>();
+
+               free($2);
+
+               $$ = pi;
+       }
+       ;
+
+terms:
+         terms YY_TERM_START YY_ARG YY_NEWLINE statements YY_TERM_END 
YY_NEWLINE {
+         
+                       TermInstr* ti = new TermInstr($3,_yy_instructions);
+                       _yy_instructions = new vector<Instruction*>();
+                       _yy_terms->push_back(ti);
+                       free($3);
+                       }
+       | /* empty */           
+       ;
+
+statements: 
+         statements statement YY_NEWLINE
+       | /* empty */
+       ;
+
+
+statement:
+         YY_PUSH YY_ARG YY_ARG {
+                               Instruction* i = new Push(_ef.create($2,$3));
+                               _yy_instructions->push_back(i);
+                               free($2); free($3);
+                               }
+       | YY_PUSH_SET YY_ARG    {
+                               _yy_instructions->push_back(new PushSet($2));
+                               free($2);
+                               }
+       
+       | YY_ONFALSE_EXIT       {
+                               _yy_instructions->push_back(new OnFalseExit());
+                               }
+
+       | YY_LOAD YY_ARG        {
+                               char* err = NULL;
+                               bool is_error = false;
+                               VarRW::Id id = strtoul($2, &err, 10);
+                               if ((err != NULL) && (*err != '\0'))
+                                   is_error = true;
+                               free($2);
+                               if (is_error) {
+                                       yyerror("Need numeric var ID");
+                                       YYERROR;
+                               }
+                               _yy_instructions->push_back(new Load(id));
+                               }
+
+       | YY_STORE YY_ARG       {
+                               char* err = NULL;
+                               bool is_error = false;
+                               VarRW::Id id = strtoul($2, &err, 10);
+
+                               if ((err != NULL) && (*err != '\0'))
+                                   is_error = true;
+
+                               free($2);
+
+                               if (is_error) {
+                                       yyerror("Need numeric var ID");
+                                       YYERROR;
+                               }
+
+                               if (id == VarRW::VAR_TRACE)
+                                       _yy_trace = true;
+
+                               _yy_instructions->push_back(new Store(id));
+                               }
+
+       | YY_ACCEPT             { _yy_instructions->push_back(new Accept()); }
+       | YY_REJECT             { _yy_instructions->push_back(new Reject()); }
+
+       | YY_EQ         { _yy_instructions->push_back(new NaryInstr(new OpEq)); 
}
+       | YY_NE         { _yy_instructions->push_back(new NaryInstr(new OpNe)); 
}
+       | YY_LT         { _yy_instructions->push_back(new NaryInstr(new OpLt)); 
}
+       | YY_GT         { _yy_instructions->push_back(new NaryInstr(new OpGt)); 
}
+       | YY_LE         { _yy_instructions->push_back(new NaryInstr(new OpLe)); 
}
+       | YY_GE         { _yy_instructions->push_back(new NaryInstr(new OpGe)); 
}
+
+       | YY_NOT        { _yy_instructions->push_back(new NaryInstr(new 
OpNot)); }
+       | YY_AND        { _yy_instructions->push_back(new NaryInstr(new 
OpAnd)); }
+       | YY_XOR        { _yy_instructions->push_back(new NaryInstr(new 
OpXor)); }
+       | YY_OR         { _yy_instructions->push_back(new NaryInstr(new OpOr)); 
}
+
+       | YY_ADD        { _yy_instructions->push_back(new NaryInstr(new 
OpAdd)); }
+       | YY_SUB        { _yy_instructions->push_back(new NaryInstr(new 
OpSub)); }
+       | YY_MUL        { _yy_instructions->push_back(new NaryInstr(new 
OpMul)); }
+       | YY_HEAD       { _yy_instructions->push_back(new NaryInstr(new 
OpHead));}
+       | YY_CTR        { _yy_instructions->push_back(new NaryInstr(new 
OpCtr));}
+       | YY_NE_INT     { _yy_instructions->push_back(new NaryInstr(new 
OpNEInt));}
+       | YY_REGEX      { _yy_instructions->push_back(new NaryInstr(new 
OpRegex));}
+       | YY_NEXT YY_POLICY
+       { _yy_instructions->push_back(new Next(Next::POLICY)); }
+       | YY_NEXT YY_TERM
+       { _yy_instructions->push_back(new Next(Next::TERM)); }
+       | YY_POLICY YY_ARG
+       { _yy_instructions->push_back(new Subr($2)); free($2); }
+       ;
+%%
-- 
1.7.9.5

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

Reply via email to