diff --git a/.gitignore b/.gitignore index c355e96..27e48a7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ .cache/ .idea/ build/ +builddir/ # Ignore all subdirectories (and their contents) under 'subprojects/' subprojects/*/ # Optional: Ignore Meson's internal download tracking file (if unwanted) subprojects/*.cache subprojects/packagecache +.vscode/ \ No newline at end of file diff --git a/src/faust-lib/parser/faustLexer.cpp b/src/faust-lib/parser/faustLexer.cpp index e96edbe..150ff4e 100644 --- a/src/faust-lib/parser/faustLexer.cpp +++ b/src/faust-lib/parser/faustLexer.cpp @@ -18,12 +18,20 @@ FaustLexer::FaustLexer() : lexer(TK_EOF) { lexer.addToken(u"->", TK_ARROW); lexer.addToken(u":", TK_COLON); lexer.addToken(u";", TK_SEMICOLON); + lexer.addToken(u"\\*", TK_ASTERISK); lexer.addToken(u"\\/\\/[^\\r\\n]*", TK_COMMENT); lexer.addToken(u"\\/\\*[\\s\\S]*?\\*\\/", TK_MULTILINE_COMMENT); lexer.addToken(u"\\bfn\\b", TK_FN); lexer.addToken(u"\\bconst\\b", TK_CONST); lexer.addToken(u"\\bmut\\b", TK_MUT); lexer.addToken(u"\\bimport\\b", TK_IMPORT); + lexer.addToken(u"\\bfrom\\b", TK_FROM); + lexer.addToken(u"\\bexternal\\b", TK_EXTERNAL); + lexer.addToken(u"\\bcheck\\b", TK_CHECK); + lexer.addToken(u"\\bforce\\b", TK_FORCE); + lexer.addToken(u"\\bwhile\\b", TK_WHILE); + lexer.addToken(u"\\bif\\b", TK_IF); + lexer.addToken(u"\\belse\\b", TK_ELSE); lexer.addToken(u"\\b[a-zA-Z][a-zA-Z0-9_]*\\b", TK_IDENTIFIER); } diff --git a/src/faust-lib/parser/faustLexer.h b/src/faust-lib/parser/faustLexer.h index 2bf622c..a7480fc 100644 --- a/src/faust-lib/parser/faustLexer.h +++ b/src/faust-lib/parser/faustLexer.h @@ -23,12 +23,20 @@ enum FaustTokens { TK_ARROW, TK_COLON, TK_SEMICOLON, + TK_ASTERISK, TK_COMMENT, TK_MULTILINE_COMMENT, TK_FN, TK_CONST, TK_MUT, TK_IMPORT, + TK_FROM, + TK_EXTERNAL, + TK_WHILE, + TK_IF, + TK_ELSE, + TK_CHECK, + TK_FORCE, TK_IDENTIFIER, }; diff --git a/tests/mainTest.cpp b/tests/mainTest.cpp index e69de29..0a1b55b 100644 --- a/tests/mainTest.cpp +++ b/tests/mainTest.cpp @@ -0,0 +1,11 @@ +#include + +#include "faust-lib/parser/faustLexer.h" + +// Simple test case without fixture +TEST(TokenTest, NoError) { + icu::UnicodeString text = "import \"test\";"; + faust::FaustLexer lexer; + auto lexemes = lexer.lex(text); + EXPECT_EQ(lexemes[0].token, faust::TK_IMPORT); +} \ No newline at end of file diff --git a/tests/meson.build b/tests/meson.build index b9fc872..722d7ee 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,3 +1,5 @@ test_exe = executable('test_gtest', 'mainTest.cpp', - dependencies: [gmock_main_dep, gtest_dep, gmock_dep]) + dependencies: [gmock_main_dep, gtest_dep, gmock_dep, icu_dep, icu_i18_dep, icu_data_dep], + link_with: faust_parser_lib, + include_directories: faust_src_root_include) test('GTest Suite', test_exe)