Add missing permission notice in each source file
[babeltrace.git] / formats / ctf / metadata / ctf-lexer.l
index d2151a72e1e9fb2218c027ab99f4c914d2d6ff0e..26aa1bce2322d2571a9b57b24d614484009e3cdc 100644 (file)
@@ -1,13 +1,49 @@
 %{
+/*
+ * ctf-lexer.l
+ *
+ * Common Trace Formal Lexer
+ *
+ * Copyright 2010 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
 #include <stdio.h>
+#include <babeltrace/babeltrace-internal.h>
+#include "ctf-scanner.h"
 #include "ctf-parser.h"
 #include "ctf-ast.h"
 
-extern YYSTYPE yylval;
-extern void setstring(const char *src);
+__attribute__((visibility("hidden")))
+void setstring(struct ctf_scanner *scanner, YYSTYPE *lvalp, const char *src);
+
+static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
+       __attribute__((unused));
+static int input (yyscan_t yyscanner) __attribute__((unused));
+
 %}
 
 %x comment_ml comment_sl string_lit char_const
+%option reentrant yylineno noyywrap bison-bridge
+%option extra-type="struct ctf_scanner *"
+       /* bison-locations */
 INTEGER_SUFFIX                 [ \n\t]*(U|UL|ULL|LU|LLU|Ul|Ull|lU|llU|u|uL|uLL|Lu|LLu|ul|ull|lu|llu)
 DIGIT                          [0-9]
 NONDIGIT                       [a-zA-Z_]
@@ -44,7 +80,7 @@ L\"                           BEGIN(string_lit); return STRING_LITERAL_START;
 
 <char_const,string_lit>ESCSEQ  return ESCSEQ;
 <char_const,string_lit>\n      ; /* ignore */
-<char_const,string_lit>.       return CHAR_STRING_TOKEN;
+<char_const,string_lit>.       setstring(yyextra, yylval, yytext); return CHAR_STRING_TOKEN;
 
 "["                            return LSBRAC;
 "]"                            return RSBRAC;
@@ -65,34 +101,38 @@ L\"                                BEGIN(string_lit); return STRING_LITERAL_START;
 "."                            return DOT;
 =                              return EQUAL;
 ","                            return COMMA;
-const                          return CONST;
-char                           return CHAR;
-double                         return DOUBLE;
-enum                           return ENUM;
-event                          return EVENT;
-floating_point                 return FLOATING_POINT;
-float                          return FLOAT;
-integer                                return INTEGER;
-int                            return INT;
-long                           return LONG;
-short                          return SHORT;
-signed                         return SIGNED;
-stream                         return STREAM;
-string                         return STRING;
-struct                         return STRUCT;
-trace                          return TRACE;
-typealias                      return TYPEALIAS;
-typedef                                return TYPEDEF;
-unsigned                       return UNSIGNED;
-variant                                return VARIANT;
-void                           return VOID;
-_Bool                          return _BOOL;
-_Complex                       return _COMPLEX;
-_Imaginary                     return _IMAGINARY;
-[1-9]{DIGIT}*{INTEGER_SUFFIX}? return DECIMAL_CONSTANT;
-0{OCTALDIGIT}*{INTEGER_SUFFIX}?        return OCTAL_CONSTANT;
-0[xX]{HEXDIGIT}+{INTEGER_SUFFIX}?      return HEXADECIMAL_CONSTANT;
-{IDENTIFIER}                   printf_dbg("<IDENTIFIER %s>\n", yytext); setstring(yytext); if (is_type(yytext)) return ID_TYPE; else return IDENTIFIER;
+align                          setstring(yyextra, yylval, yytext); return TOK_ALIGN;
+const                          setstring(yyextra, yylval, yytext); return CONST;
+char                           setstring(yyextra, yylval, yytext); return CHAR;
+clock                          setstring(yyextra, yylval, yytext); return CLOCK;
+double                         setstring(yyextra, yylval, yytext); return DOUBLE;
+enum                           setstring(yyextra, yylval, yytext); return ENUM;
+env                            setstring(yyextra, yylval, yytext); return ENV;
+event                          setstring(yyextra, yylval, yytext); return EVENT;
+floating_point                 setstring(yyextra, yylval, yytext); return FLOATING_POINT;
+float                          setstring(yyextra, yylval, yytext); return FLOAT;
+integer                                setstring(yyextra, yylval, yytext); return INTEGER;
+int                            setstring(yyextra, yylval, yytext); return INT;
+long                           setstring(yyextra, yylval, yytext); return LONG;
+short                          setstring(yyextra, yylval, yytext); return SHORT;
+signed                         setstring(yyextra, yylval, yytext); return SIGNED;
+stream                         setstring(yyextra, yylval, yytext); return STREAM;
+string                         setstring(yyextra, yylval, yytext); return STRING;
+struct                         setstring(yyextra, yylval, yytext); return STRUCT;
+trace                          setstring(yyextra, yylval, yytext); return TRACE;
+callsite                       setstring(yyextra, yylval, yytext); return CALLSITE;
+typealias                      setstring(yyextra, yylval, yytext); return TYPEALIAS;
+typedef                                setstring(yyextra, yylval, yytext); return TYPEDEF;
+unsigned                       setstring(yyextra, yylval, yytext); return UNSIGNED;
+variant                                setstring(yyextra, yylval, yytext); return VARIANT;
+void                           setstring(yyextra, yylval, yytext); return VOID;
+_Bool                          setstring(yyextra, yylval, yytext); return _BOOL;
+_Complex                       setstring(yyextra, yylval, yytext); return _COMPLEX;
+_Imaginary                     setstring(yyextra, yylval, yytext); return _IMAGINARY;
+[1-9]{DIGIT}*{INTEGER_SUFFIX}? setstring(yyextra, yylval, yytext); return DECIMAL_CONSTANT;
+0{OCTALDIGIT}*{INTEGER_SUFFIX}?        setstring(yyextra, yylval, yytext); return OCTAL_CONSTANT;
+0[xX]{HEXDIGIT}+{INTEGER_SUFFIX}?      setstring(yyextra, yylval, yytext); return HEXADECIMAL_CONSTANT;
+{IDENTIFIER}                   printf_debug("<IDENTIFIER %s>\n", yytext); setstring(yyextra, yylval, yytext); if (is_type(yyextra, yytext)) return ID_TYPE; else return IDENTIFIER;
 [ \t\n]+                       ; /* ignore */
 .                              return ERROR;
 %%
This page took 0.024015 seconds and 4 git commands to generate.