27 #ifndef SCHNEK_PARSERTOKEN_HPP_ 28 #define SCHNEK_PARSERTOKEN_HPP_ 30 #include "parsercontext.hpp" 31 #include "tokenlist.hpp" 32 #include "../variables/types.hpp" 33 #include "../variables/expression.hpp" 35 #include "../exception.hpp" 37 #pragma GCC diagnostic push 38 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 40 #include <boost/variant/apply_visitor.hpp> 42 #pragma GCC diagnostic pop 52 typedef std::shared_ptr<ParserToken> pParserToken;
61 std::string getFilename() {
return atomToken.
getFilename(); }
62 int getLine() {
return atomToken.
getLine(); }
70 deck, blocklist, block, statementlist, statement,
71 expression, expressionlist, value, int_type, float_type, string_type, atom, none
79 TokenType getType()
const;
80 std::string getString()
const {
return atomTok.getString(); }
90 template<
template<
class>
class OpType>
93 template<
template<
class>
class OpType>
96 void makeExpressionList();
103 void updateVariable();
114 ExpressionVariant data;
117 pParserToken chainedToken;
121 inline std::string toString(ParserToken::TokenType type)
125 case ParserToken::deck:
127 case ParserToken::blocklist:
129 case ParserToken::block:
131 case ParserToken::statementlist:
132 return "statementlist";
133 case ParserToken::statement:
135 case ParserToken::expression:
137 case ParserToken::expressionlist:
138 return "expressionlist";
139 case ParserToken::value:
141 case ParserToken::int_type:
143 case ParserToken::float_type:
145 case ParserToken::string_type:
146 return "string_type";
147 case ParserToken::atom:
149 case ParserToken::none:
152 return "[Unknown ParserToken::TokenType]";
163 ExpressionVariant result1;
164 ExpressionVariant result2;
167 template<
class ExpressionPo
inter1,
class ExpressionPo
inter2>
168 void operator()(ExpressionPointer1 e1, ExpressionPointer2 e2);
170 template<
class ExpressionPo
inter>
171 void operator()(ExpressionPointer e1, ExpressionPointer e2);
173 const ExpressionVariant &getResultA() {
return result1; }
174 const ExpressionVariant &getResultB() {
return result2; }
183 template<
class ExpressionPo
inter1,
class ExpressionPo
inter2>
184 ExpressionVariant operator()(ExpressionPointer1, ExpressionPointer2 e2);
186 template<
class ExpressionPo
inter>
187 ExpressionVariant operator()(ExpressionPointer, ExpressionPointer e2);
191 #include "parsertoken.t" 195 #endif // SCHNEK_PARSERTOKEN_HPP_ Definition: parsertoken.hpp:66
std::string getFilename() const
Returns the name of the file from which the token was read.
Definition: tokenlist.hpp:70
Definition: parsertoken.hpp:55
Definition: parsercontext.hpp:39
int getLine() const
Returns the line number where the token was encountered.
Definition: tokenlist.hpp:76
Definition: tokenlist.hpp:43
Definition: exception.hpp:33