Skip to content

Commit a587a30

Browse files
author
Daniel Kroening
committed
support universal characters
1 parent 75718fc commit a587a30

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

regression/ansi-c/Universal_characters1/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
KNOWNBUG
1+
CORE
22
main.c
33

44
^EXIT=0$

src/ansi-c/literals/convert_string_literal.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ void convert_one_string_literal(
3434
std::basic_string<unsigned int> &value)
3535
{
3636
assert(src.size()>=2);
37-
37+
3838
if(src[0]=='u' && src[1]=='8')
3939
{
4040
assert(src[src.size()-1]=='"');
@@ -63,6 +63,14 @@ void convert_one_string_literal(
6363
assert(src[src.size()-1]=='"');
6464

6565
unescape_wide_string(std::string(src, 1, src.size()-2), value);
66+
67+
// turn into utf-8
68+
std::string utf8_value=utf32_to_utf8(value);
69+
70+
// pad into wide string
71+
value.resize(utf8_value.size());
72+
for(unsigned i=0; i<utf8_value.size(); i++)
73+
value[i]=utf8_value[i];
6674
}
6775
}
6876

src/ansi-c/scanner.l

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ digit [0-9]
150150
bindigit [01]
151151
octdigit [0-7]
152152
hexdigit [0-9a-fA-F]
153-
identifier (({letter}|"_"|"$")({letter}|{digit}|"_"|"$")*)
153+
utf8letter [\x80-\xff]
154+
identifier (({letter}|"_"|"$"|{utf8letter})({letter}|{digit}|"_"|"$"|{utf8letter})*)
154155
integer {digit}+
155156
binary {bindigit}+
156157
msiw_suffix ([iI]("8"|"16"|"32"|"64"|"128"))

0 commit comments

Comments
 (0)