aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/grt/grt-vpi.adb13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/grt/grt-vpi.adb b/src/grt/grt-vpi.adb
index d5cb85e91..ddb337f87 100644
--- a/src/grt/grt-vpi.adb
+++ b/src/grt/grt-vpi.adb
@@ -1559,6 +1559,7 @@ package body Grt.Vpi is
Err : AvhpiErrorT;
Prop : Integer;
Res : vpiHandle;
+ Escaped : Boolean;
begin
-- Extract the start point.
if Scope = null then
@@ -1578,9 +1579,19 @@ package body Grt.Vpi is
C : Character;
begin
E := B;
+ Escaped := Name (E) = '\';
loop
C := Name (E + 1);
- exit when C = NUL or C = '.';
+
+ -- '.' is a separator when not inside extended identifiers.
+ exit when C = NUL or (C = '.' and not Escaped);
+
+ if C = '\' then
+ -- Start or end of extended identifiers.
+ -- '\' within an extended identifier is doubled, so like
+ -- if there were two extended identifiers.
+ Escaped := not Escaped;
+ end if;
E := E + 1;
end loop;
end;