Add backslash escape codes - close #19
This commit is contained in:
1 parent
1d1590dfda
commit
5b2cbe53e6
5 files changed
+132
No files matched your search
@@ -768,6 +768,89 @@ EOF
|
||||
expect(results.stderr).to eq ""
|
||||
expect(results.status).to eq 0
|
||||
end
|
||||
|
||||
it "matches backslash escape sequences" do
|
||||
case language
|
||||
when "c"
|
||||
write_grammar <<EOF
|
||||
<<
|
||||
#include <stdio.h>
|
||||
>>
|
||||
tokenid t;
|
||||
/\\a/ <<
|
||||
printf("A\\n");
|
||||
>>
|
||||
/\\b/ <<
|
||||
printf("B\\n");
|
||||
>>
|
||||
/\\t/ <<
|
||||
printf("T\\n");
|
||||
>>
|
||||
/\\n/ <<
|
||||
printf("N\\n");
|
||||
>>
|
||||
/\\v/ <<
|
||||
printf("V\\n");
|
||||
>>
|
||||
/\\f/ <<
|
||||
printf("F\\n");
|
||||
>>
|
||||
/\\r/ <<
|
||||
printf("R\\n");
|
||||
>>
|
||||
/t/ <<
|
||||
return $token(t);
|
||||
>>
|
||||
Start -> t;
|
||||
EOF
|
||||
when "d"
|
||||
write_grammar <<EOF
|
||||
<<
|
||||
import std.stdio;
|
||||
>>
|
||||
tokenid t;
|
||||
/\\a/ <<
|
||||
writeln("A");
|
||||
>>
|
||||
/\\b/ <<
|
||||
writeln("B");
|
||||
>>
|
||||
/\\t/ <<
|
||||
writeln("T");
|
||||
>>
|
||||
/\\n/ <<
|
||||
writeln("N");
|
||||
>>
|
||||
/\\v/ <<
|
||||
writeln("V");
|
||||
>>
|
||||
/\\f/ <<
|
||||
writeln("F");
|
||||
>>
|
||||
/\\r/ <<
|
||||
writeln("R");
|
||||
>>
|
||||
/t/ <<
|
||||
return $token(t);
|
||||
>>
|
||||
Start -> t;
|
||||
EOF
|
||||
end
|
||||
build_parser(language: language)
|
||||
compile("spec/test_match_backslashes.#{language}", language: language)
|
||||
results = run
|
||||
expect(results.stderr).to eq ""
|
||||
expect(results.status).to eq 0
|
||||
verify_lines(results.stdout, [
|
||||
"A",
|
||||
"B",
|
||||
"T",
|
||||
"N",
|
||||
"V",
|
||||
"F",
|
||||
"R",
|
||||
])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
#include "testparser.h"
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
char const * input = "\a\b\t\n\v\f\rt";
|
||||
p_context_t context;
|
||||
p_context_init(&context, (uint8_t const *)input, strlen(input));
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import testparser;
|
||||
import std.stdio;
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
string input = "\a\b\t\n\v\f\rt";
|
||||
p_context_t context;
|
||||
p_context_init(&context, input);
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
}
|
||||
Reference in new issue
Block a user