Commit 7c1f8233 authored by snuverink_j's avatar snuverink_j

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
// ------------------------------------------------------------------------
// $RCSfile: LineTemplate.cpp,v $
// ------------------------------------------------------------------------
// $Revision: 1.2 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
//
// Class: LineTemplate
// The class for storage of OPAL beam lines with arguments.
// 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
//
// $Date: 2000/03/29 10:41:39 $
// $Author: opal $
// 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/LineTemplate.h"
#include "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h"
#include "Lines/Line.h"
#include "Parser/SimpleStatement.h"
#include "Utilities/ParseError.h"
#include <vector>
#include <cassert>
// Class LineTemplate
// ------------------------------------------------------------------------
LineTemplate::LineTemplate():
Macro(0, "LINE",
......@@ -110,7 +114,8 @@ Object *LineTemplate::makeTemplate(const std::string &, TokenStream &, Statement
void LineTemplate::parseTemplate(TokenStream &, Statement &statement) {
parseFormals(statement);
assert(statement.keyword("LINE"));
bool isLine = statement.keyword("LINE");
PAssert(isLine);
// Store the template list.
Token token = statement.getCurrent();
......@@ -128,8 +133,7 @@ void LineTemplate::parseTemplate(TokenStream &, Statement &statement) {
body.append(token);
}
} else {
throw ParseError("Line::makeTemplate()",
throw ParseError("LineTemplate::parseTemplate()",
"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 $
// $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/>.
//
#ifndef OPAL_LineTemplate_HH
#define OPAL_LineTemplate_HH
#include "OpalParser/Macro.h"
#include "OpalParser/MacroStream.h"
......@@ -25,14 +31,6 @@ class Line;
class Statement;
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 {
friend class Line;
......@@ -73,4 +71,4 @@ private:
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
// The class for storage of OPAL beam sequences with arguments.
// 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.
//
// $Date: 2000/03/29 10:41:41 $
// $Author: opal $
// 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.
//
// 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 "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h"
#include "Lines/Sequence.h"
#include "Lines/SequenceParser.h"
......@@ -25,7 +34,6 @@
#include "Parser/SimpleStatement.h"
#include "Utilities/ParseError.h"
#include <vector>
#include <cassert>
// Class SequenceTemplate
// ------------------------------------------------------------------------
......@@ -117,7 +125,8 @@ Object *SequenceTemplate::makeTemplate
void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) {
// Save the formals.
parseFormals(statement);
assert(statement.keyword("SEQUENCE"));
bool isSequence = statement.keyword("SEQUENCE");
PAssert(isSequence);
// Parse the sequence header.
Object::parse(statement);
......@@ -140,4 +149,4 @@ void SequenceTemplate::parseTemplate(TokenStream &is, Statement &statement) {
}
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 $
// $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/>.
//
#ifndef OPAL_SequenceTemplate_HH
#define OPAL_SequenceTemplate_HH
#include "OpalParser/Macro.h"
#include "Parser/SimpleStatement.h"
......@@ -27,14 +33,6 @@ class Sequence;
class Statement;
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 {
friend class Sequence;
......@@ -74,4 +72,4 @@ private:
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 $
// $Author: Andreas Adelmann $
// You should have received a copy of the GNU General Public License
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
//
// ------------------------------------------------------------------------
#include "OpalParser/MacroCmd.h"
#include "Utility/PAssert.h"
#include "AbstractObjects/OpalData.h"
#include "OpalParser/OpalParser.h"
#include "Parser/Statement.h"
#include "Utilities/ParseError.h"
#include <vector>
#include <cassert>
// Class MacroCmd
// ------------------------------------------------------------------------
MacroCmd::MacroCmd():
Macro(0u, "MACRO",
......@@ -99,7 +104,8 @@ Object *MacroCmd::makeTemplate
macro->parseFormals(statement);
// Parse macro body->
assert(statement.keyword("MACRO"));
bool isMacro = statement.keyword("MACRO");
PAssert(isMacro);
Token token;
if(statement.delimiter('{')) {
......@@ -126,4 +132,4 @@ Object *MacroCmd::makeTemplate
}
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 $
// $Author: Andreas Adelmann $
// 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.
//
// 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/MacroStream.h"
#include "MemoryManagement/Pointer.h"
#include <iosfwd>
#include <string>
// 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 {
......@@ -65,4 +67,4 @@ private:
const Parser *itsParser;
};
#endif // CLASSIC_MacroCmd_HH
#endif // CLASSIC_MacroCmd_HH
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment