am 7e8586fc: Merge "Convert to C++ Bison output"
* commit '7e8586fc1e40e7d860b05757882c3617df968fb8':
Convert to C++ Bison output
diff --git a/tools/aidl/aidl_language.cpp b/tools/aidl/aidl_language.cpp
index 5252920..e2540658 100644
--- a/tools/aidl/aidl_language.cpp
+++ b/tools/aidl/aidl_language.cpp
@@ -1,4 +1,5 @@
#include "aidl_language.h"
+#include "aidl_language_y.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string>
@@ -74,7 +75,7 @@
}
int ParseState::RunParser() {
- int ret = yyparse(this);
+ int ret = yy::parser(this).parse();
free((void *)g_currentPackage);
g_currentPackage = NULL;
diff --git a/tools/aidl/aidl_language_l.l b/tools/aidl/aidl_language_l.l
index 953e370..b8e53a8 100644
--- a/tools/aidl/aidl_language_l.l
+++ b/tools/aidl/aidl_language_l.l
@@ -1,6 +1,6 @@
%{
#include "aidl_language.h"
-#include "aidl_language_y.h"
+#include "aidl_language_y.hpp"
#include "search_path.h"
#include <string.h>
#include <stdlib.h>
@@ -39,6 +39,7 @@
%option noyywrap
%option reentrant
%option bison-bridge
+%option bison-locations
%x COPYING LONG_COMMENT
@@ -65,13 +66,13 @@
<LONG_COMMENT>\**\/ { BEGIN(INITIAL); }
^{whitespace}?import{whitespace}[^ \t\r\n]+{whitespace}?; {
- SET_BUFFER(IMPORT);
- return IMPORT;
+ SET_BUFFER(yy::parser::token::IMPORT);
+ return yy::parser::token::IMPORT;
}
^{whitespace}?package{whitespace}[^ \t\r\n]+{whitespace}?; {
do_package_statement(yytext);
- SET_BUFFER(PACKAGE);
- return PACKAGE;
+ SET_BUFFER(yy::parser::token::PACKAGE);
+ return yy::parser::token::PACKAGE;
}
<<EOF>> { yyterminate(); }
@@ -90,25 +91,25 @@
= { SET_BUFFER('='); return '='; }
/* keywords */
-parcelable { SET_BUFFER(PARCELABLE); return PARCELABLE; }
-interface { SET_BUFFER(INTERFACE); return INTERFACE; }
-in { SET_BUFFER(IN); return IN; }
-out { SET_BUFFER(OUT); return OUT; }
-inout { SET_BUFFER(INOUT); return INOUT; }
-oneway { SET_BUFFER(ONEWAY); return ONEWAY; }
+parcelable { SET_BUFFER(yy::parser::token::PARCELABLE); return yy::parser::token::PARCELABLE; }
+interface { SET_BUFFER(yy::parser::token::INTERFACE); return yy::parser::token::INTERFACE; }
+in { SET_BUFFER(yy::parser::token::IN); return yy::parser::token::IN; }
+out { SET_BUFFER(yy::parser::token::OUT); return yy::parser::token::OUT; }
+inout { SET_BUFFER(yy::parser::token::INOUT); return yy::parser::token::INOUT; }
+oneway { SET_BUFFER(yy::parser::token::ONEWAY); return yy::parser::token::ONEWAY; }
-{brackets}+ { SET_BUFFER(ARRAY); return ARRAY; }
-{idvalue} { SET_BUFFER(IDVALUE); return IDVALUE; }
-{identifier} { SET_BUFFER(IDENTIFIER); return IDENTIFIER; }
+{brackets}+ { SET_BUFFER(yy::parser::token::ARRAY); return yy::parser::token::ARRAY; }
+{idvalue} { SET_BUFFER(yy::parser::token::IDVALUE); return yy::parser::token::IDVALUE; }
+{identifier} { SET_BUFFER(yy::parser::token::IDENTIFIER); return yy::parser::token::IDENTIFIER; }
{identifier}\<{whitespace}*{identifier}({whitespace}*,{whitespace}*{identifier})*{whitespace}*\> {
- SET_BUFFER(GENERIC); return GENERIC; }
+ SET_BUFFER(yy::parser::token::GENERIC); return yy::parser::token::GENERIC; }
/* syntax error! */
. { printf("UNKNOWN(%s)", yytext);
yylval->buffer.lineno = yylineno;
- yylval->buffer.token = IDENTIFIER;
+ yylval->buffer.token = yy::parser::token::IDENTIFIER;
yylval->buffer.data = strdup(yytext);
- return IDENTIFIER;
+ return yy::parser::token::IDENTIFIER;
}
%%
diff --git a/tools/aidl/aidl_language_y.y b/tools/aidl/aidl_language_y.y
index 90fd58c..7a2b785 100644
--- a/tools/aidl/aidl_language_y.y
+++ b/tools/aidl/aidl_language_y.y
@@ -1,26 +1,23 @@
%{
#include "aidl_language.h"
+#include "aidl_language_y.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-int yyerror(ParseState* ps, char* errstr)
-{
- ps->ReportError(errstr);
- return 1;
-}
-
-int yylex(lexer_type *, void *);
+int yylex(lexer_type *, yy::parser::location_type *l, void *);
static int count_brackets(const char*);
-#define YYLEX_PARAM ps->Scanner()
+#define lex_scanner ps->Scanner()
%}
%parse-param { ParseState* ps }
+%lex-param { void *lex_scanner }
%pure-parser
+%skeleton "glr.cc"
%token IMPORT
%token PACKAGE
@@ -339,3 +336,8 @@
}
return n;
}
+
+void yy::parser::error(const yy::parser::location_type& l, const std::string& errstr)
+{
+ ps->ReportError(errstr);
+}