[Xorp-hackers] [PATCH 02/15] xorp: policy:backend: Rename backend.y to backend.yy

igorm at etf.rs igorm at etf.rs
Fri Aug 31 04:33:48 PDT 2012


From: Igor Maravic <igorm at etf.rs>


Signed-off-by: Igor Maravic <igorm at etf.rs>
---
 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



More information about the Xorp-hackers mailing list