CascadeFileScanner.l
上传用户:lijia5631
上传日期:2008-11-10
资源大小:1214k
文件大小:5k
源码类别:

视频捕捉/采集

开发平台:

MultiPlatform

  1. /**
  2.   * cubicles
  3.   *
  4.   * This is an implementation of the Viola-Jones object detection 
  5.   * method and some extensions.  The code is mostly platform-
  6.   * independent and uses only standard C and C++ libraries.  It
  7.   * can make use of MPI for parallel training and a few Windows
  8.   * MFC functions for classifier display.
  9.   *
  10.   * Mathias Kolsch, matz@cs.ucsb.edu
  11.   *
  12.   * $Id: CascadeFileScanner.l,v 1.7 2004/10/22 03:26:00 matz Exp $
  13. **
  14. // CascadeFileScanner takes care of scanning integral features,
  15. // weak classifiers, strong classifiers, and classifier cascades
  16. // from file input.  Compile with flex.
  17. //
  18. ////////////////////////////////////////////////////////////////////
  19. //
  20. // By downloading, copying, installing or using the software you 
  21. // agree to this license.  If you do not agree to this license, 
  22. // do not download, install, copy or use the software.
  23. //
  24. // Copyright (C) 2004, Mathias Kolsch, all rights reserved.
  25. // Third party copyrights are property of their respective owners.
  26. //
  27. // Redistribution and use in binary form, with or without 
  28. // modification, is permitted for non-commercial purposes only.
  29. // Redistribution in source, with or without modification, is 
  30. // prohibited without prior written permission.
  31. // If granted in writing in another document, personal use and 
  32. // modification are permitted provided that the following two
  33. // conditions are met:
  34. //
  35. // 1.Any modification of source code must retain the above 
  36. //   copyright notice, this list of conditions and the following 
  37. //   disclaimer.
  38. //
  39. // 2.Redistribution's in binary form must reproduce the above 
  40. //   copyright notice, this list of conditions and the following 
  41. //   disclaimer in the documentation and/or other materials provided
  42. //   with the distribution.
  43. //
  44. // This software is provided by the copyright holders and 
  45. // contributors "as is" and any express or implied warranties, 
  46. // including, but not limited to, the implied warranties of 
  47. // merchantability and fitness for a particular purpose are 
  48. // disclaimed.  In no event shall the copyright holder or 
  49. // contributors be liable for any direct, indirect, incidental, 
  50. // special, exemplary, or consequential damages (including, but not 
  51. // limited to, procurement of substitute goods or services; loss of 
  52. // use, data, or profits; or business interruption) however caused
  53. // and on any theory of liability, whether in contract, strict 
  54. // liability, or tort (including negligence or otherwise) arising 
  55. // in any way out of the use of this software, even if advised of 
  56. // the possibility of such damage.
  57. //
  58. ////////////////////////////////////////////////////////////////////
  59. */
  60. %{
  61. #include "cubicles.hpp"
  62. #include "IntegralFeatures.h"
  63. #include "Classifiers.h"
  64. #include "Cascade.h"
  65. #include "CascadeFileParser.h"
  66. void yyerror(const char *str);
  67. //void yyerror(YYLTYPE *llocp, const char *str);
  68. extern "C" int mywrap(void)
  69. {
  70.   /*
  71.   FILE* fp = fopen("c:\tmp\dump3.txt", "a+");
  72.   fprintf(fp, "wrap calledn");
  73.   fflush(fp);
  74.   fclose(fp);
  75.   */
  76.   return 1;
  77. }
  78. extern string yyIDstring;
  79.  
  80. void nextline(void);
  81.  
  82. #define yywrap mywrap
  83. #define YY_NEVER_INTERACTIVE 1
  84. #define YYERROR_VERBOSE 1
  85. %}
  86. /* definitions */
  87. DIGIT [0-9]
  88. ID [a-wyzA-WYZ_][a-zA-Z0-9_]*|"x"[a-zA-Z_][a-zA-Z0-9_]*
  89. SIMPLE_FP ([+|-]?{DIGIT}+"."{DIGIT}*)|([+|-]?{DIGIT}*"."{DIGIT}+)
  90. EXPONENT_FP [+|-]?{DIGIT}*"."{DIGIT}+[eE][-|+]?{DIGIT}+
  91. %%
  92. "ClassifierCascade" { return CLASSIFIER_CASCADE; }
  93. "sequential" { return TYPE_SEQUENTIAL; }
  94. "fan" { return TYPE_FAN; }
  95. "tree" { return TYPE_TREE; }
  96. "ratio" { return RATIO; }
  97. "fpr" { return FPR; }
  98. "dr" { return DR; }
  99. "successful" { return SUCCESSFUL; }
  100. "exhausted" { return EXHAUSTED; }
  101. "strong" { return STRONG; }
  102. "classifiers" { return CLASSIFIERS; }
  103. "classifier" { return CLASSIFIER; }
  104. "STRONG" { return UPCASE_STRONG; }
  105. "weak" { return WEAK; }
  106. "threshold" { return THRESHOLD; }
  107. "NULL" { return NULL_ID; }
  108. "LeftRight" { return LEFT_RIGHT; }
  109. "UpDown" { return UP_DOWN; }
  110. "LeftCenterRight" { return LEFT_CENTER_RIGHT; }
  111. "SevenColumns" { return SEVEN_COLUMNS; }
  112. "Diag" { return DIAG; }
  113. "LeftRightSame" { return LEFT_RIGHT_SAME; }
  114. "UpDownSame" { return UP_DOWN_SAME; }
  115. "LeftCenterRightSame" { return LEFT_CENTER_RIGHT_SAME; }
  116. "SevenColumnsSame" { return SEVEN_COLUMNS_SAME; }
  117. "SevenColumnsSimilar" { return SEVEN_COLUMNS_SIMILAR; }
  118. "DiagSame" { return DIAG_SAME; }
  119. "DiagSimilar" { return DIAG_SIMILAR; }
  120. "FourBoxes" { return FOUR_BOXES; }
  121. "FourBoxesSame" { return FOUR_BOXES_SAME; }
  122. "branches" { return BRANCHES; }
  123. "COMMON" { return COMMON; }
  124. "BRANCH" { return BRANCH; }
  125. """ { return DOUBLEQUOTE; }
  126. "," { return COMMA; }
  127. "x" { return X_BY; }
  128. ":" { return COLON; }
  129. "(" { return OPEN_PAREN; }
  130. ")" { return CLOSE_PAREN; }
  131. "[" { return OPEN_BRACKET; }
  132. "]" { return CLOSE_BRACKET; }
  133. "*" { return ASTERIX; }
  134. "<" { return LT; }
  135. ">=" { return GTEQ; }
  136. "/" { return SLASH; }
  137. {SIMPLE_FP}|{EXPONENT_FP} { yylval.fval = atof(yytext); return FP_NUMBER; }
  138. -?{DIGIT}+ { yylval.ival = atoi(yytext); return INT_NUMBER; }
  139. {ID} { yyIDstring = string(yytext); yylval.sval = yytext; return NAME; }
  140. "." { return DOT; }
  141. "-" { return MINUS; }
  142.   { ; }
  143. t { ; }
  144. rn { nextline(); }
  145. n { nextline(); }
  146. "#".*rn { nextline(); } /*comment*/
  147. "#".*n { nextline(); } /*comment*/
  148. . { char buf[32]; sprintf(buf, "illegal token: ' '"); buf[16]=yytext[0]; yyerror(buf); }
  149. %%