⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lp.y

📁 linux下的源码分类器SVM
💻 Y
字号:
/* ========================================================================= *//* NAME  : lp.y                                                              *//* ========================================================================= */%token VAR CONS SIGN AR_M_OP RE_OP END_C COMMA COLON MINIMISE MAXIMISE%{#include "lpkit.h" #include "lpglob.h"#include "read.h"/* globals */char Last_var[NAMELEN];char Constraint_name[NAMELEN];int Lin_term_count;REAL f;int x;int Sign;int isign; 	/* internal_sign variable to make sure nothing goes wrong */		/* with lookahead */int make_neg;	/* is true after the relational operator is seen in order */		/* to remember if lin_term stands before or after re_op */int Within_int_decl = FALSE; /* TRUE when we are within an int declaration */%}%start inputfile%%inputfile	:{  init_read();  isign = 0;  make_neg = 0;  Sign = 0;} 		  objective_function		  constraints                  int_declarations		;constraints	: constraint		| constraints		  constraint		;constraint      : real_constraint                | VAR COLON {  add_constraint_name(Last_var, Rows);}                  real_constraint                ;real_constraint	: x_lineair_sum		  RE_OP{  store_re_op();  make_neg = 1; }		  x_lineair_sum                  END_C{  if(Lin_term_count == 0) {    fprintf(stderr, "WARNING line %d: constraint contains no variables\n",	    yylineno);    null_tmp_store();  }  if(Lin_term_count  > 1)    Rows++;  if(Lin_term_count == 1)    store_bounds();  Lin_term_count = 0;  isign = 0 ;  make_neg = 0;  Constraint_name[0] = '\0';}		;int_declarations: /* EMPTY */                | real_int_decls                ;real_int_decls  : int_declaration                | real_int_decls int_declaration                ;int_declaration : int_declarator vars END_C                ;int_declarator  : VAR {check_decl(Within_int_decl);}                ;vars            : VAR {if(!Ignore_decl)add_int_var((char *)yytext);}                | vars VAR {if(!Ignore_decl)add_int_var((char *)yytext);}                | vars COMMA VAR {if(!Ignore_decl)add_int_var((char *)yytext);}                ;x_lineair_sum	: x_lineair_term 		| SIGN{  isign = Sign; }		  x_lineair_term		| x_lineair_sum		  SIGN{  isign = Sign; }		  x_lineair_term		;x_lineair_term	: lineair_term		| CONS{  if (    (isign || !make_neg)      && !(isign && !make_neg)) /* but not both! */    f = -f;  rhs_store(f);  isign = 0;}		;lineair_sum	: lineair_term 		| SIGN{  isign = Sign;}		  lineair_term		| lineair_sum		  SIGN{  isign = Sign;}		  lineair_term		;lineair_term	: VAR{  if (    (isign || make_neg)      && !(isign && make_neg)) /* but not both! */    var_store(Last_var, Rows, (REAL) -1);  else    var_store(Last_var, Rows, (REAL) 1);  isign = 0;}		| CONS 		  VAR{  if (    (isign || make_neg)      && !(isign && make_neg)) /* but not both! */    f = -f;  var_store(Last_var, Rows, f);  isign = 0;}		| CONS 		  AR_M_OP		  VAR{  if (    (isign || make_neg)      && !(isign && make_neg)) /* but not both! */    f = -f;  var_store(Last_var, Rows, f);  isign = 0;}		;objective_function:   MAXIMISE real_of{  Maximise = TRUE;}                    | MINIMISE real_of{  Maximise = FALSE;}                    | real_of                ;real_of:            lineair_sum		    END_C{  Rows++;  Lin_term_count  =  0;  isign = 0;  make_neg = 0;}                    | END_C /* allow empty OF */{  Rows++;  Lin_term_count  =  0;  isign = 0;  make_neg = 0;}		;%%#include "lex.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -