diff --git a/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.cpp b/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.cpp
index 518d74703..6b9f22706 100644
--- a/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.cpp
+++ b/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.cpp
@@ -53,7 +53,7 @@
#include "bison_parser.h"
// Second part of user prologue.
-#line 85 "parser.yy"
+#line 84 "parser.yy"
#include "driver.h"
#include "scanner.h"
@@ -302,7 +302,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
// User destructor.
switch (yysym.kind()) {
case symbol_kind::S_STRING: // "string"
-#line 79 "parser.yy"
+#line 78 "parser.yy"
{
delete (yysym.value.stringVal);
}
@@ -310,7 +310,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_add_se2: // add_se2
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -318,7 +318,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_add_se3: // add_se3
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -326,7 +326,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_fix_node: // fix_node
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -334,7 +334,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_solve_state: // solve_state
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -342,7 +342,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_query_state: // query_state
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -350,7 +350,7 @@ void Parser::yy_destroy_(const char* yymsg, basic_symbol& yysym) const {
break;
case symbol_kind::S_command: // command
-#line 80 "parser.yy"
+#line 79 "parser.yy"
{
delete (yysym.value.commandNode);
}
@@ -431,6 +431,7 @@ int Parser::parse() {
int yylen = 0;
// Error handling.
+ int yynerrs_ = 0;
int yyerrstatus_ = 0;
/// The lookahead symbol.
@@ -449,7 +450,7 @@ int Parser::parse() {
YYCDEBUG << "Starting parse\n";
// User initialization code.
-#line 38 "parser.yy"
+#line 37 "parser.yy"
{
// initialize the initial location object
yyla.location.begin.filename = yyla.location.end.filename =
@@ -577,7 +578,7 @@ int Parser::parse() {
{
switch (yyn) {
case 2: // int_list: "integer"
-#line 104 "parser.yy"
+#line 103 "parser.yy"
{
(yylhs.value.intList) = new std::vector;
(yylhs.value.intList)->push_back((yystack_[0].value.integerVal));
@@ -586,7 +587,7 @@ int Parser::parse() {
break;
case 3: // int_list: int_list "integer"
-#line 109 "parser.yy"
+#line 108 "parser.yy"
{
(yystack_[1].value.intList)
->push_back((yystack_[0].value.integerVal));
@@ -596,7 +597,7 @@ int Parser::parse() {
break;
case 4: // NUMBER: "integer"
-#line 115 "parser.yy"
+#line 114 "parser.yy"
{
(yylhs.value.doubleVal) = (yystack_[0].value.integerVal);
}
@@ -604,7 +605,7 @@ int Parser::parse() {
break;
case 5: // NUMBER: "double"
-#line 119 "parser.yy"
+#line 118 "parser.yy"
{
(yylhs.value.doubleVal) = (yystack_[0].value.doubleVal);
}
@@ -612,7 +613,7 @@ int Parser::parse() {
break;
case 6: // add_se2: "ADD" "Vertex SE2" "integer"
-#line 124 "parser.yy"
+#line 123 "parser.yy"
{
(yylhs.value.commandNode) =
new AddNode(*(yystack_[1].value.stringVal),
@@ -623,7 +624,7 @@ int Parser::parse() {
break;
case 7: // add_se2: "ADD" "Vertex SE2" "integer" NUMBER NUMBER NUMBER
-#line 129 "parser.yy"
+#line 128 "parser.yy"
{
std::vector values;
values.push_back((yystack_[2].value.doubleVal));
@@ -640,7 +641,7 @@ int Parser::parse() {
case 8: // add_se2: "ADD" "Edge SE2" "integer" "integer" "integer"
// NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
// NUMBER
-#line 138 "parser.yy"
+#line 137 "parser.yy"
{
std::vector values;
values.push_back((yystack_[8].value.doubleVal));
@@ -664,7 +665,7 @@ int Parser::parse() {
break;
case 9: // add_se3: "ADD" "Vertex SE3" "integer"
-#line 155 "parser.yy"
+#line 154 "parser.yy"
{
(yylhs.value.commandNode) =
new AddNode(*(yystack_[1].value.stringVal),
@@ -676,7 +677,7 @@ int Parser::parse() {
case 10: // add_se3: "ADD" "Vertex SE3" "integer" NUMBER NUMBER
// NUMBER NUMBER NUMBER NUMBER
-#line 160 "parser.yy"
+#line 159 "parser.yy"
{
(yylhs.value.commandNode) =
new AddNode(*(yystack_[7].value.stringVal),
@@ -691,7 +692,7 @@ int Parser::parse() {
// NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
// NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
// NUMBER NUMBER NUMBER
-#line 165 "parser.yy"
+#line 164 "parser.yy"
{
std::vector values;
values.push_back((yystack_[26].value.doubleVal));
@@ -733,7 +734,7 @@ int Parser::parse() {
break;
case 12: // fix_node: "Fix" "integer"
-#line 200 "parser.yy"
+#line 199 "parser.yy"
{
std::vector values;
values.push_back((yystack_[0].value.integerVal));
@@ -743,7 +744,7 @@ int Parser::parse() {
break;
case 13: // solve_state: "Solve State"
-#line 207 "parser.yy"
+#line 206 "parser.yy"
{
(yylhs.value.commandNode) = new SolveSate("SOLVE_STATE");
}
@@ -751,7 +752,7 @@ int Parser::parse() {
break;
case 14: // query_state: "Query State"
-#line 212 "parser.yy"
+#line 211 "parser.yy"
{
(yylhs.value.commandNode) = new QueryState("QUERY_STATE");
}
@@ -759,7 +760,7 @@ int Parser::parse() {
break;
case 15: // query_state: "Query State" int_list
-#line 216 "parser.yy"
+#line 215 "parser.yy"
{
(yylhs.value.commandNode) =
new QueryState("QUERY_STATE", *(yystack_[0].value.intList));
@@ -769,7 +770,7 @@ int Parser::parse() {
break;
case 16: // command: add_se2
-#line 222 "parser.yy"
+#line 221 "parser.yy"
{
(yylhs.value.commandNode) = (yystack_[0].value.commandNode);
}
@@ -777,7 +778,7 @@ int Parser::parse() {
break;
case 17: // command: add_se3
-#line 226 "parser.yy"
+#line 225 "parser.yy"
{
(yylhs.value.commandNode) = (yystack_[0].value.commandNode);
}
@@ -785,7 +786,7 @@ int Parser::parse() {
break;
case 18: // command: fix_node
-#line 230 "parser.yy"
+#line 229 "parser.yy"
{
(yylhs.value.commandNode) = (yystack_[0].value.commandNode);
}
@@ -793,7 +794,7 @@ int Parser::parse() {
break;
case 19: // command: solve_state
-#line 234 "parser.yy"
+#line 233 "parser.yy"
{
(yylhs.value.commandNode) = (yystack_[0].value.commandNode);
}
@@ -801,7 +802,7 @@ int Parser::parse() {
break;
case 20: // command: query_state
-#line 238 "parser.yy"
+#line 237 "parser.yy"
{
(yylhs.value.commandNode) = (yystack_[0].value.commandNode);
}
@@ -809,7 +810,7 @@ int Parser::parse() {
break;
case 23: // start: start command ';'
-#line 245 "parser.yy"
+#line 244 "parser.yy"
{
driver.slamContext.process((yystack_[1].value.commandNode));
delete (yystack_[1].value.commandNode);
@@ -845,6 +846,7 @@ int Parser::parse() {
yyerrlab:
// If not already recovering from an error, report this error.
if (!yyerrstatus_) {
+ ++yynerrs_;
context yyctx(*this, yyla);
std::string msg = yysyntax_error_(yyctx);
error(yyla.location, YY_MOVE(msg));
@@ -1199,8 +1201,8 @@ const char* const Parser::yytname_[] = {"\"end of file\"",
#if SLAMPARSERDEBUG
const unsigned char Parser::yyrline_[] = {
- 0, 103, 103, 108, 114, 118, 123, 128, 137, 154, 159, 164,
- 199, 206, 211, 215, 221, 225, 229, 233, 237, 242, 243, 244};
+ 0, 102, 102, 107, 113, 117, 122, 127, 136, 153, 158, 163,
+ 198, 205, 210, 214, 220, 224, 228, 232, 236, 241, 242, 243};
void Parser::yy_stack_print_() const {
*yycdebug_ << "Stack now";
@@ -1252,7 +1254,7 @@ Parser::symbol_kind_type Parser::yytranslate_(int t) YY_NOEXCEPT {
} // namespace SlamParser
#line 1458 "bison_parser.cpp"
-#line 252 "parser.yy"
+#line 251 "parser.yy"
/*** Additional Code ***/
void SlamParser::Parser::error(const Parser::location_type& l,
diff --git a/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.h b/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.h
index a9a38c086..5e033cff0 100644
--- a/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.h
+++ b/g2o/examples/interactive_slam/slam_parser/parser/bison_parser.h
@@ -195,7 +195,7 @@ class Parser {
#else
/// Symbol semantic values.
union value_type {
-#line 53 "parser.yy"
+#line 52 "parser.yy"
int integerVal;
double doubleVal;