diff --git a/meson.build b/meson.build index c0fdc5f..f9620c3 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,6 @@ project('oak', ['cpp'], version: '0.1.0', + default_options : ['cpp_std=c++20'], ) add_project_arguments('-fPIC', language: 'cpp') diff --git a/src/faust-lib/parser/faustLexer.h b/src/faust-lib/parser/faustLexer.h index a7480fc..c3cb8f2 100644 --- a/src/faust-lib/parser/faustLexer.h +++ b/src/faust-lib/parser/faustLexer.h @@ -51,4 +51,6 @@ private: protected: }; +typedef Lexer::Lexeme FaustLexeme; + } // namespace faust diff --git a/src/faust-lib/parser/lexer.h b/src/faust-lib/parser/lexer.h index 1e3ea8d..e10a2e3 100644 --- a/src/faust-lib/parser/lexer.h +++ b/src/faust-lib/parser/lexer.h @@ -6,10 +6,11 @@ #include #include "unicode/regex.h" +#include "unicode/utypes.h" + #include "faust-lib/common/core.h" #include "faust-lib/common/vector.h" -#include "unicode/utypes.h" namespace faust { diff --git a/src/faust-lib/parser/parser.cpp b/src/faust-lib/parser/parser.cpp index 2112112..db9efed 100644 --- a/src/faust-lib/parser/parser.cpp +++ b/src/faust-lib/parser/parser.cpp @@ -1,5 +1,10 @@ #include "parser.h" -faust::Parser::Parser(String input) { - // TODO: Implement +faust::AstNodePtr faust::parseFaustProgram(const std::vector &tokens) { + auto filteredTokens = tokens; + std::erase_if(filteredTokens, [](const faust::FaustLexeme &lexeme) { + return lexeme.token == faust::FaustTokens::TK_COMMENT || lexeme.token == faust::FaustTokens::TK_MULTILINE_COMMENT; + }); + + return nullptr; } diff --git a/src/faust-lib/parser/parser.h b/src/faust-lib/parser/parser.h index 37d5da4..2f6eef2 100644 --- a/src/faust-lib/parser/parser.h +++ b/src/faust-lib/parser/parser.h @@ -1,15 +1,15 @@ #pragma once -#include "faust-lib/common/string.h" +#include + +#include "faust-lib/common/core.h" +#include "faust-lib/parser/faustLexer.h" namespace faust { -class Parser { -public: - Parser(String input); +class AstNode; +typedef std::shared_ptr AstNodePtr; -private: -protected: -}; +AstNodePtr parseFaustProgram(const Vector &tokens); } // namespace faust