Add raw templater

This commit is contained in:
Jan
2022-09-05 23:25:11 +02:00
parent 4ef38264c8
commit 1464329245
21 changed files with 996 additions and 7 deletions

View File

@ -8,7 +8,7 @@ DefinesExpressionMatchers::DefinesExpressionMatchers()
}
DefinesExpressionMatchers::DefinesExpressionMatchers(const DefinesDirectiveParsingState* state)
: SimpleExpressionMatchers(false, false, true, true, false),
: SimpleExpressionMatchers(true, false, true, true, false),
m_state(state)
{
}

View File

@ -281,13 +281,13 @@ bool DefinesStreamProxy::MatchUndefDirective(const ParserLine& line, const unsig
std::unique_ptr<ISimpleExpression> DefinesStreamProxy::ParseExpression(const std::string& expressionString) const
{
std::istringstream ss(expressionString);
ParserSingleInputStream inputStream(ss, "#if expression");
ParserSingleInputStream inputStream(ss, "defines directive expression");
SimpleLexer::Config lexerConfig;
lexerConfig.m_emit_new_line_tokens = false;
lexerConfig.m_read_integer_numbers = true;
lexerConfig.m_read_floating_point_numbers = true;
lexerConfig.m_read_strings = false;
lexerConfig.m_read_strings = true;
SimpleExpressionMatchers().ApplyTokensToLexerConfig(lexerConfig);
SimpleLexer lexer(&inputStream, std::move(lexerConfig));

View File

@ -77,7 +77,6 @@ private:
static void ExtractParametersFromDefineUsage(const ParserLine& line, unsigned parameterStart, unsigned& parameterEnd, std::vector<std::string>& parameterValues);
bool FindDefineForWord(const ParserLine& line, unsigned wordStart, unsigned wordEnd, Define*& value);
void ExpandDefines(ParserLine& line);
public:
explicit DefinesStreamProxy(IParserLineStream* stream);
@ -85,6 +84,8 @@ public:
void AddDefine(Define define);
void Undefine(const std::string& name);
void ExpandDefines(ParserLine& line);
_NODISCARD std::unique_ptr<ISimpleExpression> ParseExpression(const std::string& expressionString) const;
ParserLine NextLine() override;

View File

@ -61,5 +61,5 @@ bool ParserSingleInputStream::IsOpen() const
bool ParserSingleInputStream::Eof() const
{
return !m_stream.eof();
return m_stream.eof();
}