diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2022-05-25 12:45:04 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-25 12:45:04 -0700 |
commit | 7476d64271354d42d864e1ed21f87f514949bc64 (patch) | |
tree | 70162f169c2d7f928828eb31a332290240e35d0e /test/gtest/wat-parser.cpp | |
parent | 65301697b3603ec8d21615e50f0cf5b9a2a2b02f (diff) | |
download | binaryen-7476d64271354d42d864e1ed21f87f514949bc64.tar.gz binaryen-7476d64271354d42d864e1ed21f87f514949bc64.tar.bz2 binaryen-7476d64271354d42d864e1ed21f87f514949bc64.zip |
[Parser] Lex keywords (#4688)
Also include reserved words that look like keywords to avoid having to find and
enumerate all the valid keywords. Invalid keywords will be rejected at a higher
level in the parser instead.
Diffstat (limited to 'test/gtest/wat-parser.cpp')
-rw-r--r-- | test/gtest/wat-parser.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/gtest/wat-parser.cpp b/test/gtest/wat-parser.cpp index be6d76eac..a48efd894 100644 --- a/test/gtest/wat-parser.cpp +++ b/test/gtest/wat-parser.cpp @@ -469,3 +469,32 @@ TEST(ParserTest, LexString) { ASSERT_EQ(lexer, lexer.end()); } } + +TEST(ParserTest, LexKeywords) { + Token module{"module"sv, KeywordTok{}}; + Token type{"type"sv, KeywordTok{}}; + Token func{"func"sv, KeywordTok{}}; + Token import{"import"sv, KeywordTok{}}; + Token reserved{"rEsErVeD"sv, KeywordTok{}}; + + Lexer lexer("module type func import rEsErVeD"); + + auto it = lexer.begin(); + ASSERT_NE(it, lexer.end()); + Token t1 = *it++; + ASSERT_NE(it, lexer.end()); + Token t2 = *it++; + ASSERT_NE(it, lexer.end()); + Token t3 = *it++; + ASSERT_NE(it, lexer.end()); + Token t4 = *it++; + ASSERT_NE(it, lexer.end()); + Token t5 = *it++; + EXPECT_EQ(it, lexer.end()); + + EXPECT_EQ(t1, module); + EXPECT_EQ(t2, type); + EXPECT_EQ(t3, func); + EXPECT_EQ(t4, import); + EXPECT_EQ(t5, reserved); +} |