mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-14 08:47:57 -05:00
Implement sequence matcher and parser magic
This commit is contained in:
@ -3,6 +3,7 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "Impl/HeaderLexer.h"
|
||||
#include "Impl/HeaderParser.h"
|
||||
#include "Parsing/ParsingException.h"
|
||||
#include "Parsing/Impl/CommentRemovingStreamProxy.h"
|
||||
#include "Parsing/Impl/DefinesStreamProxy.h"
|
||||
@ -53,100 +54,8 @@ bool HeaderFileReader::ReadHeaderFile(IDataRepository* repository)
|
||||
|
||||
SetupStreamProxies();
|
||||
|
||||
auto lexer = std::make_unique<HeaderLexer>(m_stream);
|
||||
const auto lexer = std::make_unique<HeaderLexer>(m_stream);
|
||||
const auto parser = std::make_unique<HeaderParser>(lexer.get(), repository);
|
||||
|
||||
try
|
||||
{
|
||||
/*while (true)
|
||||
{
|
||||
auto line = m_stream->NextLine();
|
||||
|
||||
if (line.IsEof())
|
||||
break;
|
||||
|
||||
std::cout << "Line " << line.m_filename.get() << ":" << line.m_line_number << ": " << line.m_line << "\n";
|
||||
}*/
|
||||
|
||||
auto eof = false;
|
||||
while (!eof)
|
||||
{
|
||||
const auto& token = lexer->GetToken(0);
|
||||
|
||||
switch (token.m_type)
|
||||
{
|
||||
case HeaderParserValueType::END_OF_FILE:
|
||||
case HeaderParserValueType::INVALID:
|
||||
eof = true;
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::CHARACTER:
|
||||
std::cout << "Token " << token.CharacterValue() << "\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::IDENTIFIER:
|
||||
std::cout << "Token IDENTIFIER \"" << token.IdentifierValue() << "\"\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::STRING:
|
||||
std::cout << "Token STRING \"" << token.StringValue() << "\"\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::INTEGER:
|
||||
std::cout << "Token INTEGER " << token.IntegerValue() << "\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::FLOATING_POINT:
|
||||
std::cout << "Token FLOATINGPOINT " << token.FloatingPointValue() << "\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::DECLSPEC:
|
||||
std::cout << "Token DECLSPEC\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::ALIGN:
|
||||
std::cout << "Token ALIGN\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::ALIGNAS:
|
||||
std::cout << "Token ALIGNAS\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::CONST:
|
||||
std::cout << "Token CONST\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::ENUM:
|
||||
std::cout << "Token ENUM\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::NAMESPACE:
|
||||
std::cout << "Token NAMESPACE\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::STRUCT:
|
||||
std::cout << "Token STRUCT\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::TYPEDEF:
|
||||
std::cout << "Token TYPEDEF\n";
|
||||
break;
|
||||
|
||||
case HeaderParserValueType::UNION:
|
||||
std::cout << "Token UNION\n";
|
||||
break;
|
||||
|
||||
default:
|
||||
std::cout << "Token UNKNOWN\n";
|
||||
break;
|
||||
}
|
||||
|
||||
lexer->PopTokens(1);
|
||||
}
|
||||
}
|
||||
catch (const ParsingException& e)
|
||||
{
|
||||
std::cout << "Error: " << e.FullMessage() << std::endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
return parser->Parse();
|
||||
}
|
||||
|
Reference in New Issue
Block a user