#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %string (255) s, a, b
_imp_string255 S;
_imp_string255 A;
_imp_string255 B;
// 3
// 4 s = "A string with xxx in the middle"
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("A string with xxx in the middle");
(void *)&tmp;
}),
/*max:*/ 255);
// 5
// 6 s -> a.("xxx").b
if (!_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &A, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &B))
_imp_signal(7, 1, 0, "string resolution fails");
// 7
// 8 newline
_imp_NEWLINE();
// 9
// 10 %if s -> a.("xxx").b %start
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &A, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &B)))
goto L_0001;
// 11 newline
_imp_NEWLINE();
// 12 %finish
L_0001:;
// 13
// 14 s -> ("xxx").b
if (!_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
0 /*NULL*/, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &B))
_imp_signal(7, 1, 0, "string resolution fails");
// 15
// 16 newline
_imp_NEWLINE();
// 17
// 18 %if s -> ("xxx").b %start
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
0 /*NULL*/, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &B)))
goto L_0002;
// 19 newline
_imp_NEWLINE();
// 20 %finish
L_0002:;
// 21
// 22 s -> a.("xxx")
if (!_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &A, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
0 /*NULL*/))
_imp_signal(7, 1, 0, "string resolution fails");
// 23
// 24 newline
_imp_NEWLINE();
// 25
// 26 %if s -> a.("xxx") %start
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &A, *({
_imp_string tmp = _imp_str_literal("xxx");
(_imp_string255 *)&tmp;
}),
0 /*NULL*/)))
goto L_0003;
// 27 newline
_imp_NEWLINE();
// 28 %finish
L_0003:;
// 29
// 30 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}