Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Commit 7c1f8233 authored by snuverink_j's avatar snuverink_j
Browse files

Merge branch '584-parse-error-in-vffa-1-in' into 'master'

Resolve "parse error in VFFA-1.in"

Closes #584

See merge request !418
parents e486cc0b 9397abf2
No related branches found
No related tags found
2 merge requests!424Draft: Resolve "fix compilation error if NDEBUG is defined",!418Resolve "parse error in VFFA-1.in"
// ------------------------------------------------------------------------
// $RCSfile: LineTemplate.cpp,v $
// ------------------------------------------------------------------------
// $Revision: 1.2 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: LineTemplate // Class LineTemplate
// The class for storage of OPAL beam lines with arguments. //
// An ``archetype'' for a OPAL beam line with arguments.
// The model is stored in form of a MacroStream. A call to the macro line
// is expanded by first replacing the arguments, and then parsing the
// resulting stream as a LINE definition.
//
// Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
// //
// ------------------------------------------------------------------------ // All rights reserved
// //
// $Date: 2000/03/29 10:41:39 $ // This file is part of OPAL.
// $Author: opal $ //
// OPAL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
// //
// ------------------------------------------------------------------------
#include "Lines/LineTemplate.h" #include "Lines/LineTemplate.h"
#include "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h" #include "AbstractObjects/OpalData.h"
#include "Lines/Line.h" #include "Lines/Line.h"
#include "Parser/SimpleStatement.h" #include "Parser/SimpleStatement.h"
#include "Utilities/ParseError.h" #include "Utilities/ParseError.h"
#include <vector> #include <vector>
#include <cassert>
// Class LineTemplate
// ------------------------------------------------------------------------
LineTemplate::LineTemplate(): LineTemplate::LineTemplate():
Macro(0, "LINE", Macro(0, "LINE",
...@@ -110,7 +114,8 @@ Object *LineTemplate::makeTemplate(const std::string &, TokenStream &, Statement ...@@ -110,7 +114,8 @@ Object *LineTemplate::makeTemplate(const std::string &, TokenStream &, Statement
void LineTemplate::parseTemplate(TokenStream &, Statement &statement) { void LineTemplate::parseTemplate(TokenStream &, Statement &statement) {
parseFormals(statement); parseFormals(statement);
assert(statement.keyword("LINE")); bool isLine = statement.keyword("LINE");
PAssert(isLine);
// Store the template list. // Store the template list.
Token token = statement.getCurrent(); Token token = statement.getCurrent();
...@@ -128,8 +133,7 @@ void LineTemplate::parseTemplate(TokenStream &, Statement &statement) { ...@@ -128,8 +133,7 @@ void LineTemplate::parseTemplate(TokenStream &, Statement &statement) {
body.append(token); body.append(token);
} }
} else { } else {
throw ParseError("Line::makeTemplate()", throw ParseError("LineTemplate::parseTemplate()",
"Equals sign '=' expected."); "Equals sign '=' expected.");
} }
}
} \ No newline at end of file
#ifndef OPAL_LineTemplate_HH
#define OPAL_LineTemplate_HH
// ------------------------------------------------------------------------
// $RCSfile: LineTemplate.h,v $
// ------------------------------------------------------------------------
// $Revision: 1.2 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: LineTemplate // Class LineTemplate
//
// An ``archetype'' for a OPAL beam line with arguments.
// The model is stored in form of a MacroStream. A call to the macro line
// is expanded by first replacing the arguments, and then parsing the
// resulting stream as a LINE definition.
//
// Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
//
// All rights reserved
// //
// ------------------------------------------------------------------------ // This file is part of OPAL.
// //
// $Date: 2000/03/29 10:41:40 $ // OPAL is free software: you can redistribute it and/or modify
// $Author: opal $ // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// //
// ------------------------------------------------------------------------ // You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
//
#ifndef OPAL_LineTemplate_HH
#define OPAL_LineTemplate_HH
#include "OpalParser/Macro.h" #include "OpalParser/Macro.h"
#include "OpalParser/MacroStream.h" #include "OpalParser/MacroStream.h"
...@@ -25,14 +31,6 @@ class Line; ...@@ -25,14 +31,6 @@ class Line;
class Statement; class Statement;
class TokenStream; class TokenStream;
// Class LineTemplate
// ------------------------------------------------------------------------
/// An ``archetype'' for a OPAL beam line with arguments.
// The model is stored in form of a MacroStream. A call to the macro line
// is expanded by first replacing the arguments, and then parsing the
// resulting stream as a LINE definition.
class LineTemplate: public Macro { class LineTemplate: public Macro {
friend class Line; friend class Line;
...@@ -73,4 +71,4 @@ private: ...@@ -73,4 +71,4 @@ private:
MacroStream body; MacroStream body;
}; };
#endif // OPAL_LineTemplate_HH #endif // OPAL_LineTemplate_HH
\ No newline at end of file
// ------------------------------------------------------------------------
// $RCSfile: SequenceTemplate.cpp,v $
// ------------------------------------------------------------------------
// $Revision: 1.2 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: SequenceTemplate // Class SequenceTemplate
// The class for storage of OPAL beam sequences with arguments.
// //
// ------------------------------------------------------------------------ // An ``archetype'' for a SEQUENCE with arguments.
// The model is stored in form of a MacroStream. A call to the macro
// sequence is expanded by first replacing the arguments, and then parsing
// the resulting stream as a SEQUENCE definition.
// //
// $Date: 2000/03/29 10:41:41 $ // Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
// $Author: opal $
// //
// ------------------------------------------------------------------------ // All rights reserved
//
// This file is part of OPAL.
//
// OPAL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
//
#include "Lines/SequenceTemplate.h" #include "Lines/SequenceTemplate.h"
#include "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h" #include "AbstractObjects/OpalData.h"
#include "Lines/Sequence.h" #include "Lines/Sequence.h"
#include "Lines/SequenceParser.h" #include "Lines/SequenceParser.h"
...@@ -25,7 +34,6 @@ ...@@ -25,7 +34,6 @@
#include "Parser/SimpleStatement.h" #include "Parser/SimpleStatement.h"
#include "Utilities/ParseError.h" #include "Utilities/ParseError.h"
#include <vector> #include <vector>
#include <cassert>
// Class SequenceTemplate // Class SequenceTemplate
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
...@@ -117,7 +125,8 @@ Object *SequenceTemplate::makeTemplate ...@@ -117,7 +125,8 @@ Object *SequenceTemplate::makeTemplate
void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) { void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) {
// Save the formals. // Save the formals.
parseFormals(statement); parseFormals(statement);
assert(statement.keyword("SEQUENCE")); bool isSequence = statement.keyword("SEQUENCE");
PAssert(isSequence);
// Parse the sequence header. // Parse the sequence header.
Object::parse(statement); Object::parse(statement);
...@@ -140,4 +149,4 @@ void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) { ...@@ -140,4 +149,4 @@ void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) {
} }
token = is.readToken(); token = is.readToken();
} }
} }
\ No newline at end of file
#ifndef OPAL_SequenceTemplate_HH
#define OPAL_SequenceTemplate_HH
// ------------------------------------------------------------------------
// $RCSfile: SequenceTemplate.h,v $
// ------------------------------------------------------------------------
// $Revision: 1.2 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: SequenceTemplate // Class SequenceTemplate
//
// An ``archetype'' for a SEQUENCE with arguments.
// The model is stored in form of a MacroStream. A call to the macro
// sequence is expanded by first replacing the arguments, and then parsing
// the resulting stream as a SEQUENCE definition.
//
// Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
//
// All rights reserved
// //
// ------------------------------------------------------------------------ // This file is part of OPAL.
// //
// $Date: 2000/03/29 10:41:42 $ // OPAL is free software: you can redistribute it and/or modify
// $Author: opal $ // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// //
// ------------------------------------------------------------------------ // You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
//
#ifndef OPAL_SequenceTemplate_HH
#define OPAL_SequenceTemplate_HH
#include "OpalParser/Macro.h" #include "OpalParser/Macro.h"
#include "Parser/SimpleStatement.h" #include "Parser/SimpleStatement.h"
...@@ -27,14 +33,6 @@ class Sequence; ...@@ -27,14 +33,6 @@ class Sequence;
class Statement; class Statement;
class TokenStream; class TokenStream;
// Class SequenceTemplate
// ------------------------------------------------------------------------
/// An ``archetype'' for a SEQUENCE with arguments.
// The model is stored in form of a MacroStream. A call to the macro
// sequence is expanded by first replacing the arguments, and then parsing
// the resulting stream as a SEQUENCE definition.
class SequenceTemplate: public Macro { class SequenceTemplate: public Macro {
friend class Sequence; friend class Sequence;
...@@ -74,4 +72,4 @@ private: ...@@ -74,4 +72,4 @@ private:
MacroStream body; MacroStream body;
}; };
#endif // OPAL_SequenceTemplate_HH #endif // OPAL_SequenceTemplate_HH
\ No newline at end of file
// ------------------------------------------------------------------------
// $RCSfile: MacroCmd.cpp,v $
// ------------------------------------------------------------------------
// $Revision: 1.1.1.1 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: MacroCmd // Class MacroCmd
//
// This class parses the MACRO command.
// Encapsulate the buffer for the ``archetypes'' of all macros.
// The macro is stored as a MacroStream. For execution, first the
// parameters are replaced, then the resulting stream is sent to the parser.
//
// Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
//
// All rights reserved
//
// This file is part of OPAL.
// //
// ------------------------------------------------------------------------ // OPAL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// //
// $Date: 2000/03/27 09:33:43 $ // You should have received a copy of the GNU General Public License
// $Author: Andreas Adelmann $ // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
// //
// ------------------------------------------------------------------------
#include "OpalParser/MacroCmd.h" #include "OpalParser/MacroCmd.h"
#include "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h" #include "AbstractObjects/OpalData.h"
#include "OpalParser/OpalParser.h" #include "OpalParser/OpalParser.h"
#include "Parser/Statement.h" #include "Parser/Statement.h"
#include "Utilities/ParseError.h" #include "Utilities/ParseError.h"
#include <vector> #include <vector>
#include <cassert>
// Class MacroCmd
// ------------------------------------------------------------------------
MacroCmd::MacroCmd(): MacroCmd::MacroCmd():
Macro(0u, "MACRO", Macro(0u, "MACRO",
...@@ -99,7 +104,8 @@ Object *MacroCmd::makeTemplate ...@@ -99,7 +104,8 @@ Object *MacroCmd::makeTemplate
macro->parseFormals(statement); macro->parseFormals(statement);
// Parse macro body-> // Parse macro body->
assert(statement.keyword("MACRO")); bool isMacro = statement.keyword("MACRO");
PAssert(isMacro);
Token token; Token token;
if(statement.delimiter('{')) { if(statement.delimiter('{')) {
...@@ -126,4 +132,4 @@ Object *MacroCmd::makeTemplate ...@@ -126,4 +132,4 @@ Object *MacroCmd::makeTemplate
} }
return macro; return macro;
} }
\ No newline at end of file
#ifndef CLASSIC_MacroCmd_HH
#define CLASSIC_MacroCmd_HH
// ------------------------------------------------------------------------
// $RCSfile: MacroCmd.h,v $
// ------------------------------------------------------------------------
// $Revision: 1.1.1.1 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
// //
// Class: MacroCmd // Class MacroCmd
// //
// ------------------------------------------------------------------------ // This class parses the MACRO command.
// Encapsulate the buffer for the ``archetypes'' of all macros.
// The macro is stored as a MacroStream. For execution, first the
// parameters are replaced, then the resulting stream is sent to the parser.
// //
// $Date: 2000/03/27 09:33:43 $ // Copyright (c) 2008 - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
// $Author: Andreas Adelmann $
// //
// ------------------------------------------------------------------------ // All rights reserved
//
// This file is part of OPAL.
//
// OPAL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
//
#ifndef CLASSIC_MacroCmd_HH
#define CLASSIC_MacroCmd_HH
#include "OpalParser/Macro.h" #include "OpalParser/Macro.h"
#include "OpalParser/MacroStream.h" #include "OpalParser/MacroStream.h"
#include "MemoryManagement/Pointer.h" #include "MemoryManagement/Pointer.h"
#include <iosfwd> #include <iosfwd>
#include <string>
// Class MacroCmd // Class MacroCmd
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
/// Encapsulate the buffer for the ``archetypes'' of all macros.
// The macro is stored as a MacroStream. For execution, first the
// parameters are replaced, then the resulting stream is sent to the parser.
class MacroCmd: public Macro { class MacroCmd: public Macro {
...@@ -65,4 +67,4 @@ private: ...@@ -65,4 +67,4 @@ private:
const Parser *itsParser; const Parser *itsParser;
}; };
#endif // CLASSIC_MacroCmd_HH #endif // CLASSIC_MacroCmd_HH
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment