Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix some dead assignments reported by clang scan-build
[simgrid.git] / src / xbt / automaton / parserPromela.lex
1 /* Copyright (c) 2012, 2014. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 %option noyywrap
8
9 %{
10
11 #include "simgrid_config.h"
12 #ifndef HAVE_UNISTD_H
13 #define YY_NO_UNISTD_H /* hello Windows */
14
15 #ifdef _MSC_VER
16 # include <io.h>
17 # include <process.h>
18 # define _CRT_SECURE_NO_WARNINGS
19 # define _CRT_NONSTDC_NO_WARNINGS
20 #endif
21 #endif
22
23 #include <stdio.h>
24 #include "parserPromela.tab.hacc"
25   
26   extern YYSTYPE yylval;
27  
28 %}
29
30 blancs       [ \t]+
31 espace       [ ]+
32 nouv_ligne   [ \n]
33
34 chiffre      [0-9]
35 entier       {chiffre}+
36 reel         {entier}("."{entier})
37 caractere    [a-zA-Z0-9_]
38
39 numl         \n
40
41 chaine       \"({caractere}*|\n|\\|\"|{espace}*)*\"
42
43 commentaire  "/*"([^\*\/]*{nouv_ligne}*[^\*\/]*)*"*/"
44
45 %%
46
47 "never"      { return (NEVER); }
48 "if"         { return (IF); }
49 "fi"         { return (FI); }
50 "->"         { return (IMPLIES); }
51 "goto"       { return (GOTO); }
52 "&&"         { return (AND); }
53 "||"         { return (OR); }
54 "!"          { return (NOT); }
55 "("          { return (LEFT_PAR); }
56 ")"          { return (RIGHT_PAR); }
57 "::"         { return (CASE); }
58 ":"          { return (COLON); }
59 ";"          { return (SEMI_COLON); }
60 "1"          { return (CASE_TRUE); }
61 "{"          { return (LEFT_BRACE); }
62 "}"          { return (RIGHT_BRACE); }
63
64
65 {commentaire}             { }
66
67 {blancs}                  { }
68
69
70 {reel}                    { sscanf(yytext,"%lf",&yylval.real); 
71                             return (LITT_REEL); }
72
73 {entier}                  { sscanf(yytext,"%d",&yylval.integer); 
74                             return (LITT_ENT); }
75
76 {chaine}                  { yylval.string=(char *)malloc(strlen(yytext)+1);
77                             sscanf(yytext,"%s",yylval.string); 
78                             return (LITT_CHAINE); }
79
80 [a-zA-Z]{caractere}*      { yylval.string=(char *)malloc(strlen(yytext)+1);
81                             sscanf(yytext,"%s",yylval.string);
82                                               return (ID); }
83                    
84 {numl}                    { }
85
86 .                         { }
87
88 %%
89
90