Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.98 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include"ReadFromFile.h"
  5. #include"DbLinkedLIst.h"
  6. #include<locale.h>
  7. void main()
  8. {
  9. setlocale(LC_ALL, ".1251");
  10. DbLinkedLIst* List = new DbLinkedLIst();
  11. ReadFromFile *per = new ReadFromFile();
  12. per->ReadText(List);
  13. delete(per);
  14. getch();
  15. }
  16.  
  17. __________________________________________________________
  18.  
  19.  
  20.  
  21. #pragma once
  22. #include<iostream>
  23. #include"DbLinkedLIst.h"
  24. #include<stdio.h>
  25. class ReadFromFile
  26. {
  27. FILE *in;
  28. int Size_char;
  29. char ReadOneElement();
  30. public:
  31. ReadFromFile()
  32. {
  33. in = fopen("ReadIn.txt","r");
  34. }
  35. void ReadText(DbLinkedLIst *List);
  36. void processing(DbLinkedLIst *List);
  37. ~ReadFromFile()
  38. {
  39. fclose(in);
  40. }
  41. };
  42. _________________________________________________________
  43.  
  44.  
  45. #include "ReadFromFile.h"
  46.  
  47. void ReadFromFile::ReadText(DbLinkedLIst *List)
  48. {
  49. int i, j;
  50. char c;
  51. c = ReadOneElement();
  52. while (c!=EOF)
  53. {
  54. List->CreateOfNode(c);
  55. c = ReadOneElement();
  56. }
  57. List->printList(List);
  58. processing(List);
  59. }
  60. char ReadFromFile::ReadOneElement()
  61. {
  62. char c;
  63. c = fgetc(in);
  64. return c;
  65. }
  66. void ReadFromFile::processing(DbLinkedLIst* List)
  67. {
  68. List->FindFor(List);
  69. }
  70.  
  71. _____________________________________________________
  72.  
  73. private:
  74. Node *head;
  75. Node *tail;
  76. public:
  77. DbLinkedLIst();
  78. void CreateOfNode(int data);
  79. void printList(DbLinkedLIst *List);
  80. void FindFor(DbLinkedLIst *List);
  81. DbLinkedLIst* AnotherList(DbLinkedLIst *List);
  82. int Flag(DbLinkedLIst *List,Node *cur,int flag);
  83. int Bracket(DbLinkedLIst* List,Node *cur);
  84. int OutPut(int flag, int flag2, int flag3,int flag4,int flag5,int flag6,int flag7,int flag8,int flag9,int flag10,int countOfSpace,int flag12,int flag13,int flag14,int flag15);
  85. int Bracket2(DbLinkedLIst* List, Node *cur);
  86. int provarka(DbLinkedLIst* SecondList, Node *Buf);
  87. int spase(DbLinkedLIst* SecondList, Node **Buf);
  88. int NotNUl(DbLinkedLIst* SecondList,Node **Buf);
  89. int LogicOperation(DbLinkedLIst* SecondList, Node *Buf);
  90. int print(DbLinkedLIst* SecondList, Node *Buf);
  91. int PoslPos(DbLinkedLIst* SecondList, Node *Buf);
  92. Node* check(DbLinkedLIst* SecondList, Node *Buf);
  93. int Skip(DbLinkedLIst* SecondList, Node **Buf);
  94. int STR(Node* Buf, DbLinkedLIst* List);
  95. int LogicOperation2(DbLinkedLIst *SecondList, Node *per);
  96. int KeyWord(DbLinkedLIst *List, Node* Buf);
  97. };
  98.  
  99.  
  100. _____________________________________________________________________________
  101.  
  102. #include "DbLinkedLIst.h"
  103. #include<stdlib.h>
  104. #include <stdio.h>
  105. #include<string.h>
  106. #include<ctype.h>
  107. DbLinkedLIst::DbLinkedLIst()
  108. {
  109. head = tail = NULL;
  110. }
  111. void DbLinkedLIst::CreateOfNode(int data)
  112. {
  113. Node* tmp = (Node *)malloc(sizeof(Node));
  114. if (tmp == NULL)
  115. return;
  116. tmp->value = data;
  117. if (head==NULL)
  118. {
  119. tmp->next = tmp->prev = NULL;
  120. head = tail = tmp;
  121. return;
  122. }
  123. tmp->prev = tail;
  124. tail->next = tmp;
  125. tmp->next = NULL;
  126. tail = tmp;
  127. }
  128. void DbLinkedLIst::printList(DbLinkedLIst *List)
  129. {
  130. Node *cur = head;
  131. while (cur != NULL)
  132. {
  133. putchar(cur->value);
  134. cur = cur->next;
  135. }
  136. }
  137. void DbLinkedLIst::FindFor(DbLinkedLIst *List)
  138. {
  139. char c='f';
  140. int flag = 0, count = 1, flag2 = 0,i,j,flag3=0,Space,flagOfBazis=0,CountOfSleshen=0;
  141. Node *cur = (Node *)malloc(sizeof(Node));
  142. Node *Buf = (Node *)malloc(sizeof(Node));
  143. Node *per = (Node *)malloc(sizeof(Node));
  144. Node *Dopper = (Node *)malloc(sizeof(Node));
  145. Node *Push = (Node *)malloc(sizeof(Node));
  146. cur = head;
  147. if (spase(List, &cur) == 1)
  148. Buf = cur;
  149. if (Skip(List, &cur) == 1)
  150. Buf = cur;
  151. if (Skip(List, &cur) == 5)
  152. {
  153. printf("\n");
  154. printf("ERROR:не найдено ключевого слова\n");
  155. return;
  156. }
  157. while (cur != NULL)
  158. {
  159. flag = 0;
  160. flag2 = 0;
  161. count = 1;
  162. flag3 = 0;
  163. flag = Flag(List,cur,flag);
  164. if (flag==3||flag==2)
  165. {
  166. count = 3;
  167. Buf = cur->next->next;
  168. while (Buf!= NULL )
  169. {
  170. if (Flag(List, Buf, flag) != 3)
  171. {
  172. if (Flag(List, Buf, flag) != 2)
  173. {
  174. if (Bracket(List, Buf) == 1)
  175. {
  176. if (Buf->next == NULL)
  177. {
  178. flag2++;
  179. per = Buf;
  180. break;
  181. }
  182. if (Buf->next->value == ')')
  183. {
  184. flag3++;
  185. Buf = Buf->next;
  186. continue;
  187. }
  188. flag2++;
  189. }
  190. if (Bracket2(List, Buf) == 1)
  191. {
  192. if (Buf->next->value == '(')
  193. {
  194. flag3++;
  195. Buf = Buf->next;
  196. continue;
  197. }
  198. flag2++;
  199. }
  200. count++;
  201. per = Buf;
  202. Buf = Buf->next;
  203. if (Buf->value == '\n')
  204. {
  205. }
  206. }
  207. else
  208. break;
  209. }
  210. else
  211. break;
  212. }
  213. }
  214. if (OutPut(flag, flag2, flag3,0,0,0,0,0,0,0,0,0,0,0,0) == 0)
  215. {
  216. DbLinkedLIst *SecondList = new DbLinkedLIst();
  217. Buf = cur->next->next->next;
  218. Push = per;
  219. while (Buf->value!=')' )
  220. {
  221. Buf = Buf->next;
  222. SecondList->CreateOfNode(Buf->value);
  223. }
  224. Push = Buf;
  225. while (Buf->value != '\n')
  226. {
  227. if (Buf->next != NULL)
  228. {
  229. if (!isspace(Buf->next->value))
  230. {
  231.  
  232. flagOfBazis = 1;
  233. break;
  234. }
  235. }
  236. else
  237. break;
  238. Buf = Buf->next;
  239. }
  240. if (flagOfBazis == 0)
  241. {
  242. SecondList = SecondList->AnotherList(SecondList);
  243. }
  244. }
  245. else
  246. cur = tail;
  247. for (i = 1; i < count+1; i++)
  248. {
  249. if (cur == NULL)
  250. break;
  251. cur = cur->next;
  252. }
  253. count = 1;
  254. }
  255. }
  256. int DbLinkedLIst::Flag(DbLinkedLIst *List,Node *cur,int flag)
  257. {
  258. flag = 0;
  259. if (cur->value == 'f')
  260. flag++;
  261. if (cur->next == NULL)
  262. {
  263. return 1;
  264. }
  265. if (cur->next->value == 'o')
  266. flag++;
  267. if (cur->next->next== NULL)
  268. {
  269. return 1;
  270. }
  271. if (cur->next->next->value == 'r')
  272. flag++;
  273. return flag;
  274. }
  275. DbLinkedLIst* DbLinkedLIst::AnotherList(DbLinkedLIst *SecondList)
  276. {
  277. int flag = 0, flag2 = 0, flag3 = 0, flag4 = 0, flag5 = 0,i;
  278. char c;
  279. Node *cur = head;
  280. Node* Biff;
  281. for (cur; cur != NULL;cur=cur->next)
  282. {
  283. if (cur->value == ';')
  284. flag++;
  285. }
  286. if (flag != 2)
  287. {
  288. printf("Ошибка мало ; в заголовек цикла \n");
  289. return SecondList;
  290. }
  291. else
  292. {
  293. Node *Buf = head;
  294. for (i=0;i<3; i++)
  295. {
  296. if (provarka(SecondList, Buf) == 1)
  297. {
  298. Buf = tail;
  299. break;
  300. }
  301. else
  302. {
  303. Buf = Buf->next;
  304. while (Buf->value != ';')
  305. {
  306. Buf = Buf->next;
  307. if (Buf->next == NULL)
  308. break;
  309. }
  310. }
  311. }
  312. PoslPos(SecondList,Buf);
  313.  
  314. }
  315. return SecondList;
  316. }
  317. int DbLinkedLIst::Bracket(DbLinkedLIst* List,Node *cur)
  318. {
  319. if (cur->value == ')')
  320. return 1;
  321. return 0;
  322. }
  323. int DbLinkedLIst::Bracket2(DbLinkedLIst* List, Node *cur)
  324. {
  325. if (cur->value == '(')
  326. return 1;
  327. return 0;
  328. }
  329. int DbLinkedLIst::OutPut(int flag, int flag2, int flag3, int flag4, int flag5, int flag6, int flag7, int flag8, int flag9, int flag10, int countOfSpace, int flag12, int flag13, int flag14,int flag15)
  330. {
  331. if (flag3 != 0)
  332. {
  333. printf("\n");
  334. printf("ERROR:слишком много скобок в заголовке for\n");
  335. return 1;
  336. }
  337. if (flag != 3)
  338. {
  339. printf("\n");
  340. printf("ERROR:неправильно написано ключевое слово for\n");
  341. return 1;
  342. }
  343. if (flag2 % 2 != 0)
  344. {
  345. printf("\n");
  346. printf("ERROR:нехватает либо открывающей скобки '(' либо закрывающей скобки ')'\n");
  347. return 1;
  348. }
  349. if (flag4 > 0)
  350. {
  351. printf("\n");
  352. printf("ERROR:слишком много переменных при инициализации\n");
  353. return 1;
  354. }
  355. if (flag5!=0)
  356. {
  357. printf("\n");
  358. printf("ERROR:найдена цифра вместо буквы\n");
  359. return 1;
  360. }
  361. if (flag6 != 0)
  362. {
  363. printf("\n");
  364. printf("ERROR:слишком много переменных\n");
  365. return 1;
  366. }
  367. if (flag7 != 0)
  368. {
  369. printf("\n");
  370. printf("ERROR:неправомочная ининциальзация переменной\n");
  371. return 1;
  372. }
  373. if (flag8 != 0)
  374. {
  375. printf("\n");
  376. printf("ERROR:много цифр в выражении\n");
  377. return 1;
  378. }
  379. if (flag9 != 0)
  380. {
  381. printf("\n");
  382. printf("ERROR:много букв в выражении\n");
  383. return 1;
  384. }
  385. if (flag10 != 0)
  386. {
  387. printf("\n");
  388. printf("ERROR:невыполнимое выражение\n");
  389. return 1;
  390. }
  391. if (countOfSpace !=0)
  392. {
  393. printf("\n");
  394. printf("ERROR:невыполнимый оператор'\n");
  395. return 1;
  396. }
  397. if (flag12 != 0)
  398. {
  399. printf("\n");
  400. printf("ERROR:неправомочное использование символа '_''\n");
  401. return 1;
  402. }
  403. if (flag13 != 0)
  404. {
  405. printf("\n");
  406. printf("ERROR:в левой части выражение должно обязательно содержать переменную\n");
  407. return 1;
  408. }
  409. if (flag14 != 0)
  410. {
  411. printf("\n");
  412. printf("ERROR:в правой части выражение должно обязательно содержать только число\n");
  413. return 1;
  414. }
  415. if (flag15 != 0)
  416. {
  417. printf("\n");
  418. printf("ERROR:ожидалось выражение\n");
  419. return 1;
  420. }
  421. return 0;
  422. }
  423. int DbLinkedLIst::spase(DbLinkedLIst* SecondList, Node **Buf)
  424. {
  425. int flag=0;
  426. Node *cur;
  427. cur = (*Buf)->next;
  428. if ((*Buf)->next == NULL)
  429. return 1;
  430. if (isspace((*Buf)->next->value) != NULL)
  431. {
  432. while (isspace(cur->value)!=NULL)
  433. {
  434. cur = cur->next;
  435. if (isalpha(cur->value) != NULL||isdigit(cur->value)!=NULL)
  436. {
  437. (*Buf) = cur;
  438. return 1;
  439. }
  440. }
  441. }
  442. return 0;
  443. }
  444. int DbLinkedLIst::NotNUl(DbLinkedLIst* SecondList, Node **Buf)
  445. {
  446. int flag3=0,countOfSpace=0,flag=0,flag2=0,flag5=0,flag8=0,flag9=0,flag10=0,flag11=0,flag12=0,flagOfalpha=0,flag14=0,logic=0;
  447. Node *per = *Buf;
  448. Node *Dopper = *Buf;
  449. if (LogicOperation(SecondList, *Buf) == 1)
  450. {
  451. if (((*Buf)->value == '&' && (*Buf)->next->value == '&') || ((*Buf)->value == '!' && ((*Buf)->next->value == '=') || ((*Buf)->value == '>') || ((*Buf)->value == '<') || ((*Buf)->value == '|' && (*Buf)->next->value == '|') || ((*Buf)->value == '=')))
  452. {
  453. if ((*Buf)->value == '=')
  454. {
  455. for (*Buf = (*Buf)->next; (*Buf)->value != ';'; *Buf = (*Buf)->next)
  456. {
  457. if (isdigit((*Buf)->value) != NULL)
  458. {
  459. if (spase(SecondList, Buf) == 1 && isdigit((*Buf)->value) != NULL)
  460. flag3++;
  461. }
  462. else
  463. {
  464. if (isalpha((*Buf)->value) == NULL&&!isspace((*Buf)->value) && (*Buf)->value != '_' && (*Buf)->value != '=')
  465. flag5++;
  466. }
  467. if (isalpha((*Buf)->value) != NULL)
  468. {
  469. flagOfalpha++;
  470. if (spase(SecondList, Buf) == 1 && (*Buf)->prev->value == ' ')
  471. flag3++;
  472. }
  473. else
  474. {
  475. if (!isspace((*Buf)->value) && isdigit((*Buf)->value) == NULL && (*Buf)->value != '_' && (*Buf)->value != '=')
  476. flag5++;
  477. }
  478. for (Dopper; Dopper->value != ';'; Dopper = Dopper->next)
  479. {
  480. if (isalpha(Dopper->value) != NULL)
  481. flagOfalpha++;
  482. }
  483. if ((*Buf)->value == '_')
  484. if (flagOfalpha == 0)
  485. flag12++;
  486. }
  487. }
  488. if (((*Buf)->value == '!' && (*Buf)->next->value == '=') || (((*Buf)->value == '>')) || ((*Buf)->value == '<') || ((*Buf)->value == '&' && (*Buf)->next->value == '&') || ((*Buf)->value == '|' && (*Buf)->next->value == '|'))
  489. {
  490. if (((*Buf)->value == '!' && (*Buf)->next->value == '=') || ((*Buf)->value == '&' && (*Buf)->next->value == '&') || ((*Buf)->value == '|' && (*Buf)->next->value == '|'))
  491. (*Buf) = (*Buf)->next;
  492. for (*Buf = (*Buf)->next; (*Buf)->value != ';'; *Buf = (*Buf)->next)
  493. {
  494. if ((*Buf)->next == NULL)
  495. break;
  496. if (isdigit((*Buf)->value) != NULL)
  497. {
  498. if (spase(SecondList, Buf) == 1 && isdigit((*Buf)->value) != NULL)
  499. flag8++;
  500. }
  501. else
  502. {
  503. if (isalpha((*Buf)->value) == NULL&&!isspace((*Buf)->value) && (*Buf)->value != '_' && (((*Buf)->value != '!' && (*Buf)->next->value != '=') && (*Buf)->value != '>' && (*Buf)->value != '<' && ((*Buf)->value != '&' && (*Buf)->next->value != '&') && ((*Buf)->value != '|' && (*Buf)->next->value != '|') && (*Buf)->value != '+'&&(*Buf)->value != '-'))
  504. flag10++;
  505. }
  506. if (isalpha((*Buf)->value) != NULL)
  507. {
  508. if (spase(SecondList, Buf) == 1 && (*Buf)->prev->value == ' ')
  509. flag9++;
  510. }
  511. else
  512. {
  513. if (!isspace((*Buf)->value) && isdigit((*Buf)->value) == NULL && (*Buf)->value != '_' && (((*Buf)->value != '!' && (*Buf)->next->value != '=') && (*Buf)->value != '>' && (*Buf)->value != '<' && ((*Buf)->value != '&' && (*Buf)->next->value != '&') && ((*Buf)->value != '|' && (*Buf)->next->value != '|') && (*Buf)->value != '+' && (*Buf)->value != '-'))
  514. flag10++;
  515. }
  516. for (Dopper; Dopper->value!=')'; Dopper = Dopper->next)
  517. {
  518. if (isalpha(per->value) != NULL)
  519. flagOfalpha++;
  520. }
  521. }
  522. }
  523. if (((*Buf)->value == '+' && (*Buf)->next->value == '+') || (((*Buf)->value == '-'))&& ((*Buf)->value == '-'))
  524. for (*Buf = (*Buf)->next; (*Buf)->value != ';'; *Buf = (*Buf)->next)
  525. {
  526. if (isdigit((*Buf)->value) != NULL)
  527. flag11++;
  528. }
  529. }
  530. }
  531. if (OutPut(3, 0, 0, 0, 0, 0, 0, flag8, flag9, flag10,flag11,flag12,0,flag14,0) == 1)
  532. return 1;
  533. if (flag!=0 &&flag2!=0)
  534. {
  535. printf("\n");
  536. printf("ERROR:ожидалось ; после'++'или '--'\n");
  537. return 1;
  538. }
  539. if (flag5 != 0)
  540. {
  541. printf("\n");
  542. printf("ERROR:неприменимая инициализация\n");
  543. return 1;
  544. }
  545. if (flag3 != 0)
  546. {
  547. printf("\n");
  548. printf("ERROR:неправильная инициализация\n");
  549. return 1;
  550. }
  551. }
  552. int DbLinkedLIst::provarka(DbLinkedLIst* SecondList, Node *Buf)
  553. {
  554. Buf = Buf->next;
  555. Node *per=Buf;
  556. Node *Dopper = Buf->next;
  557. Node *Bazis = Buf->next;
  558. int flag = 0, flag2 = 0, flag3 = 0, flag4 = 0, flag5 = 0, flag6 = 0, f, flag7 = 0, flag8 = 0, flag9=0,flag10=0,count=0,flag11=0,flagOfalpha=0,flag12=0,flag13=0,flag15=0,logika=0;
  559. while (Buf->value != ';')
  560. {
  561. if (LogicOperation(SecondList, Buf) == 1)
  562. {
  563. flag++;
  564. Dopper = Buf;
  565. break;
  566. }
  567. if (Buf->value == '(')
  568. {
  569. Bazis = Buf;
  570. }
  571. Buf = Buf->next;
  572. if (Buf->next == NULL)
  573. break;
  574. }
  575. Buf = per;
  576. per = Buf;
  577. while (Buf->value != ';')
  578. {
  579. if (Dopper->value=='=')
  580. {
  581. if (isdigit(Buf->value) != NULL)
  582. {
  583. if (spase(SecondList, &Buf) == 1 && isdigit(Buf->value) != NULL)
  584. flag4++;
  585. if (flagOfalpha==0)
  586. if (spase(SecondList, &Buf) == 0 && Buf->next->value == '=')
  587. flag4;
  588. }
  589. else
  590. {
  591. if (isalpha(Buf->value) == NULL&&!isspace(Buf->value) && Buf->value != '_'&&Buf->value != '=')
  592. flag7++;
  593. }
  594. if (isalpha(Buf->value) != NULL)
  595. {
  596. flagOfalpha++;
  597. if (spase(SecondList, &Buf) == 1 && Buf->prev->value == ' ')
  598. flag6++;
  599. }
  600. else
  601. {
  602. if (!isspace(Buf->value) && isdigit(Buf->value) == NULL&&Buf->value!= '_'&&Buf->value != '=')
  603. flag7++;
  604. }
  605. for (per; per->value != '='; per = per->next)
  606. {
  607. if (isalpha(per->value) != NULL)
  608. flagOfalpha++;
  609. }
  610. if (Buf->value == '_')
  611. if (flagOfalpha == 0)
  612. flag12++;
  613. if (flagOfalpha == 0)
  614. flag13++;
  615. }
  616. if ((Dopper->value == '!'&&Dopper->next->value == '=') || (Dopper->value == '>') || Dopper->value == '<' || (Dopper->value == '&'&&Dopper->next->value == '&') || (Dopper->value == '|'&&Dopper->next->value == '|') || (Dopper->value == '>'&&Dopper->next->value == '=') || (Dopper->value == '<'&&Dopper->next->value == '='))
  617. {
  618.  
  619. if (isdigit(Buf->value) != NULL)
  620. {
  621. if (spase(SecondList, &Buf) == 1 && isdigit(Buf->value) != NULL)
  622. flag8++;
  623. }
  624. else
  625. {
  626. if (isalpha(Buf->value) == NULL&&!isspace(Buf->value) && Buf->value != '_' && ((Buf->value != '!'&&Buf->next->value != '=') && Buf->value != '>' && Buf->value != '<' && (Buf->value != '&'&&Buf->next->value != '&') && (Buf->value != '|'&&Buf->next->value != '|')&&Buf->value=='+'&&Buf->value=='-'))
  627. flag10++;
  628. }
  629. if (isalpha(Buf->value) != NULL)
  630. {
  631. if (spase(SecondList, &Buf) == 1 && Buf->prev->value == ' ')
  632. flag9++;
  633. }
  634. else
  635. {
  636. if (!isspace(Buf->value) && isdigit(Buf->value) == NULL&&Buf->value != '_' && ((Buf->value != '!'&&Buf->next->value != '=') && Buf->value != '>'&&Buf->value != '<' && (Buf->value != '&'&&Buf->next->value != '&') && (Buf->value != '|'&&Buf->next->value != '|') && Buf->value == '+'&&Buf->value == '-'))
  637. flag10++;
  638. }
  639. logika = LogicOperation2(SecondList, per);
  640. for (per;logika!=1 ; per = per->next)
  641. {
  642. if (per->value == ';')
  643. break;
  644. if (per->next == NULL)
  645. break;
  646. if (isalpha(per->value) != NULL)
  647. flagOfalpha++;
  648. logika = LogicOperation2(SecondList, per);
  649. }
  650. if (Buf->value == '_')
  651. if (flagOfalpha == 0)
  652. flag12++;
  653.  
  654. }
  655. if (Dopper->value == '+'&&Dopper->next->value == '+')
  656. {
  657. if (isdigit(Buf->value) != NULL)
  658. {
  659. if (spase(SecondList, &Buf) == 1 && isdigit(Buf->value) != NULL)
  660. flag4++;
  661. }
  662. else
  663. {
  664. if (isalpha(Buf->value) == NULL&&!isspace(Buf->value) && Buf->value != '_' && Buf->value != '+'&&Buf->next->value == '+' )
  665. flag11++;
  666. }
  667. if (isalpha(Buf->value) != NULL)
  668. {
  669. if (spase(SecondList, &Buf) == 1 && Buf->prev->value == ' ')
  670. flag6++;
  671. }
  672. else
  673. {
  674. if (!isspace(Buf->value) && isdigit(Buf->value) == NULL&&Buf->value != '_' && (Buf->value != '+'&&Buf->next->value == '+'))
  675. flag11++;
  676. }
  677. if (Buf->value == '+'&&Buf->value != '+')
  678. flag11++;
  679. for (per; (per->value !='+'&&per->next->value!='+'); per = per->next)
  680. {
  681. if (isalpha(per->value) != NULL)
  682. flagOfalpha++;
  683. if (per->value=='+')
  684. if (!isspace(per->next->value) && per->next->value != '+')
  685. flag11++;
  686. }
  687. if (Buf->value == '_')
  688. if (flagOfalpha == 0)
  689. flag12++;
  690. }
  691. if ((Dopper->value == '!'&&Dopper->next->value!='='))
  692. {
  693. if (isdigit(Buf->value) != NULL)
  694. {
  695. if (spase(SecondList, &Buf) == 1 && isdigit(Buf->value) != NULL)
  696. flag8++;
  697. }
  698. else
  699. {
  700. if (isalpha(Buf->value) == NULL&&!isspace(Buf->value) && Buf->value != '_' && ((Buf->value != '!'&&Buf->next->value != '=') && Buf->value != '>' && Buf->value != '<' && (Buf->value != '&'&&Buf->next->value != '&') && (Buf->value != '|'&&Buf->next->value != '|')))
  701. flag10++;
  702. }
  703. if (isalpha(Buf->value) != NULL)
  704. {
  705. if (spase(SecondList, &Buf) == 1 && Buf->prev->value == ' ')
  706. flag9++;
  707. }
  708. else
  709. {
  710. if (!isspace(Buf->value) && isdigit(Buf->value) == NULL&&Buf->value != '_' && ((Buf->value != '!'&&Buf->next->value != '=') && Buf->value != '>'&&Buf->value != '<' && (Buf->value != '&'&&Buf->next->value != '&') && (Buf->value != '|'&&Buf->next->value != '|')))
  711. flag10++;
  712. }
  713. for (per; per->value != ';'; per = per->next)
  714. {
  715. if (isalpha(per->value) != NULL)
  716. flagOfalpha++;
  717. }
  718. if (Buf->value == '_')
  719. if (flagOfalpha == 0)
  720. flag12++;
  721. if (Buf->value == '!' && (!isspace(Buf->prev->value) || Buf->next->value == ' '))
  722. flag11++;
  723. }
  724. if (flag == 0)
  725. {
  726. printf("\n");
  727. printf("ERROR:\n");
  728. return 1;
  729. }
  730. if (NotNUl(SecondList, &Buf) == 1)
  731. return 1;
  732. if (OutPut(3, 0, 0, flag3, flag4, flag6, flag7, flag8, flag9, flag10,flag11,flag12,flag13,0,flag15) == 1)
  733. return 1;
  734. if (Buf->value == ';')
  735. return 0;
  736. Buf = Buf->next;
  737. if (Buf == NULL)
  738. break;
  739. if (Buf->next == NULL)
  740. break;
  741. }
  742. }
  743. int DbLinkedLIst::LogicOperation(DbLinkedLIst* SecondList, Node *Buf)
  744. {
  745. int i, i_1, a, _ = 0;
  746. if ((Buf->value == '&'&&Buf->next->value == '&') || (Buf->value == '!'&&Buf->next->value == '=') || Buf->value == '>' || Buf->value == '<' || (Buf->value == '|'&&Buf->next->value == '|') || Buf->value == '=' || (Buf->value == '+'&&Buf->next->value == '+') || (Buf->value == '-'&&Buf->next->value == '-') || Buf->value == '!')
  747. return 1;
  748. else
  749. return 0;
  750. }
  751. int DbLinkedLIst::print(DbLinkedLIst* SecondList, Node *Buf)
  752. {
  753. if ((Buf->value == '+'&&Buf->next->value == '+') || (Buf->value == '-'&&Buf->next->value == '-'))
  754. return 1;
  755. else
  756. return 0;
  757. }
  758. int DbLinkedLIst::PoslPos(DbLinkedLIst* SecondList, Node *Buf)
  759. {
  760. return 0;
  761. }
  762. int DbLinkedLIst::Skip(DbLinkedLIst* List, Node **Buf)
  763. {
  764. int flag = 0;
  765. Node *cur;
  766. cur = (*Buf);
  767. if (Flag(List, *Buf, flag) != 3 || Flag(List, *Buf, flag) != 2)
  768. {
  769. while (Flag(List, cur, flag) != 3&& Flag(List, cur, flag) != 2)
  770. {
  771. cur = cur->next;
  772. if (cur == NULL)
  773. {
  774. return 5;
  775. }
  776. }
  777. (*Buf) = cur;
  778. return 1;
  779. }
  780. return 0;
  781. }
  782. int DbLinkedLIst::STR(Node *Buf, DbLinkedLIst* List)
  783. {
  784. int count = 0;
  785. while (Buf != NULL)
  786. {
  787. if (Buf->value == '\n')
  788. {
  789. count++;
  790. }
  791. Buf = Buf->next;
  792. }
  793. return count;
  794. }
  795. int DbLinkedLIst::LogicOperation2(DbLinkedLIst *SecondList, Node *per)
  796. {
  797. if ((per->value == '!'&&per->next->value == '=') || (per->value == '>') || per->value == '<' || (per->value == '&'&&per->next->value == '&') || (per->value == '|'&&per->next->value == '|') || (per->value == '>'&&per->next->value == '=') || (per->value == '<'&&per->next->value == '='))
  798. return 1;
  799. else
  800. return 0;
  801. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement