Print error on invalid token
[babeltrace.git] / formats / ctf / metadata / ctf-lexer.l
index bedda4ada67198883724b5ab1cd10b9a7134eebb..c79b6c83b5491cc0df9ecd023cd824c715c7c10e 100644 (file)
  *
  * 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>
@@ -23,7 +31,7 @@
 #include "ctf-parser.h"
 #include "ctf-ast.h"
 
-__attribute__((visibility("hidden")))
+BT_HIDDEN
 void setstring(struct ctf_scanner *scanner, YYSTYPE *lvalp, const char *src);
 
 static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
@@ -56,11 +64,11 @@ ESCSEQ                              \\(\'|\"|\?|\\|a|b|f|n|r|t|v|{OCTALDIGIT}{1,3}|u{HEXDIGIT}{4}|U{HEXDIG
 "/*"                           BEGIN(comment_ml);
 <comment_ml>[^*\n]*            /* eat anything that's not a '*' */
 <comment_ml>"*"+[^*/\n]*       /* eat up '*'s not followed by '/'s */
-<comment_ml>\n                 ++yylineno;
+<comment_ml>\n
 <comment_ml>"*"+"/"            BEGIN(INITIAL);
 
 "//"                           BEGIN(comment_sl);
-<comment_sl>[^\n]*\n           ++yylineno; BEGIN(INITIAL);
+<comment_sl>[^\n]*\n           BEGIN(INITIAL);
 
 L\'                            BEGIN(char_const); return CHARACTER_CONSTANT_START;
 \'                             BEGIN(char_const); return CHARACTER_CONSTANT_START;
@@ -112,6 +120,7 @@ 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;
@@ -124,6 +133,6 @@ _Imaginary                  setstring(yyextra, yylval, yytext); return _IMAGINARY;
 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;
+[ \t\r\n]                      ; /* ignore */
+.                              printfl_error(yylineno, "invalid character '0x%02X'", yytext[0]);  return ERROR;
 %%
This page took 0.023732 seconds and 4 git commands to generate.