SphinxBase 5prealpha
_jsgf_scanner.l
1/* -*- mode: text -*- */
2/* ====================================================================
3 * Copyright (c) 2007 Carnegie Mellon University. All rights
4 * reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 *
18 * This work was supported in part by funding from the Defense Advanced
19 * Research Projects Agency and the National Science Foundation of the
20 * United States of America, and the CMU Sphinx Speech Consortium.
21 *
22 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
23 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
26 * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 * ====================================================================
35 *
36 */
37/* YOU MUST USE FLEX 2.6.1 OR NEWER TO PROCESS THIS FILE!!! */
38%{
39
40#include "jsgf_internal.h"
41#include "jsgf_parser.h"
42
Internal definitions for JSGF grammar compiler.
43%}
44
45%option 8bit reentrant bison-bridge noyywrap yylineno never-interactive nounput nounistd
46%option header-file="jsgf_scanner.h"
47%s COMMENT
48%s DECL
49%s DECLCOMMENT
50
51ws [ \t\r\n]
52rulename <[^<>]+>
53tag \{(\\.|[^\}]+)*\}
54weight \/[0-9]*(\.[0-9]+)?(e-)?[0-9]*\/
55token [^ \t\r\n=;|*+<>()\[\]{}*/]+
56qstring \"(\\.|[^"]+)*\"
57bom [\xEF][\xBB][\xBF]
58
59%%
60
61{ws} ; /* ignore whitespace */
62<INITIAL>\/\/.*\n ; /* single-line comments */
63<INITIAL>\/\* { BEGIN(COMMENT); } /* C-style comments */
64<COMMENT>\*\/ { BEGIN(INITIAL); }
65<COMMENT>. ; /* Ignore stuff in comment mode */
66
67<DECL>\/\/.*\n ; /* single-line comments inside decl */
68<DECL>\/\* { BEGIN(DECLCOMMENT); } /* C-style comments inside decl */
69<DECLCOMMENT>\*\/ { BEGIN(DECL); }
70<DECLCOMMENT>. ; /* Ignore stuff in comment mode */
71
72<INITIAL>{bom}?#JSGF {BEGIN(DECL); return HEADER;}
73<INITIAL>grammar {BEGIN(DECL); return GRAMMAR;}
74<INITIAL>import {BEGIN(DECL); return IMPORT;}
75<INITIAL>public {BEGIN(DECL); return PUBLIC;}
76
77<INITIAL>{rulename} { BEGIN(DECL); yylval->name = strdup(yytext); return RULENAME; }
78<DECL>{rulename} { yylval->name = strdup(yytext); return RULENAME; }
79
80<DECL>{tag} { yylval->name = strdup(yytext); return TAG; }
81<DECL>{token} { yylval->name = strdup(yytext); return TOKEN; }
82<DECL>; { BEGIN(INITIAL); return yytext[0]; }
83<DECL>{qstring} { yylval->name = strdup(yytext); return TOKEN; }
84<DECL>{weight} { yylval->weight = atof_c(yytext+1); return WEIGHT; }
SPHINXBASE_EXPORT double atof_c(char const *str)
Locale independent version of atof().
Definition: strfuncs.c:55
85<DECL>. return yytext[0]; /* Single-character tokens */
86
87%%