ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Симизации. С иллюстративной целью допускаются некоторыеварианты синтаксической записи. Предусмотрена возможность Повторного задания ошибочных строк. %token число Xi оптим %% злп:функционал '\n' система_ограничений {final();} | система_ограничений функционал '\n' { final();} функционал: линейная_функция {stf();} /* По умолчанию - минимизация */ | оптим '(' линейная_функция ')' {if($1) conv(); stf();} /* В случае максимизации выполнить conv() */ | линейная_функция '-''>' оптим {if($4) conv();stf();} линейная_функция: элем1 | линейная_функция элем; элем: знак число Xi {stc($1*$2,$3); } | знак Xi '*' число { stc($1*$4,$2);} | знак Xi { stc($1,$2);} /* Формы записи коэффициентов */ элем1: элем | число Xi { stc($1,$2);} | Xi '*' число { stc($3,$1);} - 36 - | Xi { stc(1,$1); } знак: '+' {$$=1; } | '-' {$$= -1;} система_ограничений: ограничение '\n' | система_ограничений ограничение '\n' | система_ограничений error '\n' {aclear();yyerrok; printf("повторите последнюю строку\n");} /* В случае ошибки: стирание инф. о строке, восстановление и выдача подсказки */ ограничение: линейная_функция '=' число { stcb($3);} | линейная_функция '=' знак число { if($3<0) conv(); stcb($4);} /* Если bi<0, выполнить conv() */ %% #include "stdio.h" #define MAXM 100 /* предельное число */ #define MAXN 100 /* ограничений и перем.*/ int c[MAXN],b[MAXM],a[MAXM+1][MAXN], neqs,nx,x[MAXN]; /* Лексический анализатор возвращает: * для целых чисел - число, * yylval равно знач. числа; * для идент.вида xi, i=1,2,...XI* * yylval равно его порядк. номеру; * для max/min - оптим, * yylval равно соответственно 1 или 0 */ yylex() { Char c,i; while((c=getc(stdin))==' '); switch(c) { case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': yylval=c-'0'; while((c=getc(stdin))<='9'&&c>='0') yylval=yylval*10+c-'0'; Не нашли, что искали? Воспользуйтесь поиском:
|