Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpParser.cpp
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
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 https://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#include "vpParser.h"
40#include "vpBoundio.h"
41#include "vpLex.h"
42#include "vpSkipio.h"
43#include "vpToken.h"
44
45#include <stdio.h>
46#ifndef DOXYGEN_SHOULD_SKIP_THIS
47
49/*
50 * La procedure "parser" fait l'analyse syntaxique du fichier source.
51 * Entree/Sortie :
52 * bsp Scene surfacique polygonale a lire.
53 */
54 void parser(Bound_scene *bsp)
55{
56 int token;
57
58 while ((token = lex()) != T_EOF)
59 switch (token) {
60 case '$':
61 switch (lex()) {
62 case T_IDENT: /* saute la commande inconnue */
63 skip_cmd(/* stderr */);
64 unlex();
65 break;
66 case T_EXIT:
67 return;
68 case T_BOUND:
69 if (bsp->bound.nbr == BOUND_NBR) {
70 fprintf(stderr, "mire: too much bound\n");
71 return;
72 }
73 fscanf_Bound(&(bsp->bound.ptr[bsp->bound.nbr++]));
74 break;
75#ifdef used
76 case T_REMOVE:
77 fscanf_Remove(get_remove());
78 break;
79 case T_VIEW:
80 fscanf_View_parameters(get_view_parameters());
81 set_projection(void);
82 break;
83#endif /* used */
84 default:
85 lexerr("start", "keyword expected", NULL);
86 break;
87 }
88 break;
89 default:
90 lexerr("start", "symbol '$' expected", NULL);
91 break;
92 }
93}
94END_VISP_NAMESPACE
95#endif