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