diff options
Diffstat (limited to '')
-rw-r--r-- | tests/test/cpp/lex2.scm | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/test/cpp/lex2.scm b/tests/test/cpp/lex2.scm new file mode 100644 index 00000000..0342e25c --- /dev/null +++ b/tests/test/cpp/lex2.scm @@ -0,0 +1,64 @@ +(define-module (test cpp lex2) + :use-module (srfi srfi-64) + :use-module (srfi srfi-88) + :use-module (ice-9 peg) + :use-module (c lex2)) + + +(test-equal "Integer literal" + '(preprocessing-token (pp-number "10")) + (lex "10")) + +(test-equal "String literal" + '(preprocessing-token (string-literal "Hello")) + (lex "\"Hello\"")) + + +(test-equal "Mulitple tokens, including whitespace" + '((whitespace " ") + (preprocessing-token (pp-number "10")) + (whitespace " ")) + (lex " 10 ")) + +(test-equal "Char literal" + '(preprocessing-token (character-constant "a")) + (lex "'a'")) + + + +(test-equal "Comment inside string" + '(preprocessing-token (string-literal "Hel/*lo")) + (lex "\"Hel/*lo\"")) + +(test-equal "#define line" + '((preprocessing-token (punctuator "#")) + (preprocessing-token (identifier "define")) + (whitespace " ") + (preprocessing-token (identifier "f")) + (preprocessing-token (punctuator "(")) + (preprocessing-token (identifier "x")) + (preprocessing-token (punctuator ")")) + (whitespace " ") + (preprocessing-token (pp-number "10"))) + (lex "#define f(x) 10")) + + + +(test-equal "Nested parenthesis" + '((preprocessing-token (identifier "f")) + (preprocessing-token (punctuator "(")) + (preprocessing-token (pp-number "1")) + (preprocessing-token (punctuator ",")) + (whitespace " ") + (preprocessing-token (punctuator "(")) + (preprocessing-token (pp-number "2")) + (preprocessing-token (punctuator ",")) + (whitespace " ") + (preprocessing-token (pp-number "3")) + (preprocessing-token (punctuator ")")) + (preprocessing-token (punctuator ",")) + (whitespace " ") + (preprocessing-token (pp-number "4")) + (preprocessing-token (punctuator ")"))) + (lex "f(1, (2, 3), 4)")) + |