Visual Servoing Platform  version 3.0.0
vpParser.cpp
1 /****************************************************************************
2  *
3  * This file is part of the ViSP software.
4  * Copyright (C) 2005 - 2015 by Inria. All rights reserved.
5  *
6  * This software is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * ("GPL") version 2 as published by the Free Software Foundation.
9  * See the file LICENSE.txt at the root directory of this source
10  * distribution for additional information about the GNU GPL.
11  *
12  * For using ViSP with software that can not be combined with the GNU
13  * GPL, please contact Inria about acquiring a ViSP Professional
14  * Edition License.
15  *
16  * See http://visp.inria.fr for more information.
17  *
18  * This software was developed at:
19  * Inria Rennes - Bretagne Atlantique
20  * Campus Universitaire de Beaulieu
21  * 35042 Rennes Cedex
22  * France
23  *
24  * If you have questions regarding the use of this file, please contact
25  * Inria at visp@inria.fr
26  *
27  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29  *
30  * Description:
31  * Le module "parser.c" contient les procedures de gestion
32  * de l'analyse syntaxique d'un fichier source dont la grammaire
33  * possede les symboles terminaux de "lex.c".
34  *
35  * Authors:
36  * Jean-Luc CORRE
37  *
38  *****************************************************************************/
39 
40 
41 
42 
43 #include <visp3/robot/vpMy.h>
44 #include <visp3/robot/vpArit.h>
45 #include <visp3/robot/vpView.h>
46 #include <visp3/robot/vpBound.h>
47 #include <visp3/robot/vpToken.h>
48 #include <visp3/robot/vpLex.h>
49 #include <visp3/robot/vpSkipio.h>
50 
51 #include <stdio.h>
52 #ifndef DOXYGEN_SHOULD_SKIP_THIS
53 
54 #ifdef used
55 extern Byte *get_remove (void);
56 extern View_parameters *get_view_parameters (void);
57 #endif /* used */
58 
59 /*
60  * La procedure "parser" fait l'analyse syntaxique du fichier source.
61  * Entree/Sortie :
62  * bsp Scene surfacique polygonale a lire.
63  */
64 void parser (Bound_scene *bsp)
65 {
66  int token;
67 
68  while ((token = lex ()) != T_EOF)
69  switch (token) {
70  case '$' :
71  switch (lex ()) {
72  case T_IDENT : /* saute la commande inconnue */
73  skip_cmd (/* stderr */);
74  unlex ();
75  break;
76  case T_EXIT :
77  return;
78  break;
79  case T_BOUND :
80  if (bsp->bound.nbr == BOUND_NBR) {
81  fprintf (stderr, "mire: too much bound\n");
82  return;
83  }
84  fscanf_Bound (
85  &(bsp->bound.ptr[bsp->bound.nbr++]));
86  break;
87 #ifdef used
88  case T_REMOVE :
89  fscanf_Remove (get_remove ());
90  break;
91  case T_VIEW :
92  fscanf_View_parameters (get_view_parameters ());
93  set_projection (void);
94  break;
95 #endif /* used */
96  default :
97  lexerr ("start", "keyword expected", NULL);
98  break;
99  }
100  break;
101  default :
102  lexerr ("start", "symbol '$' expected", NULL);
103  break;
104  }
105 }
106 
107 #endif