CS153/hw4/hw4programs/regex.oat
jmug b24a264f7e Update hw4 to a newer version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:01:32 -08:00

34 lines
846 B
Text

int reg_match(int[] str, int[] reg, int p1, int p2, int last) {
if (str[p1] == 0 & reg[p2] == 0) {
return 1;
}
if (str[p1] == 0 & reg[p2] != 0) {
return 0;
}
if (str[p1] != 0 & reg[p2] == 0) {
return 0;
}
if (reg[p2+1] == 42) {
return reg_match(str, reg, p1, p2+1, reg[p2]);
}
if (reg[p2] == 42) {
var result = reg_match(str, reg, p1, p2+1, 0);
if (result == 1) {
return 1;
}
if (str[p1] == last | last == 46) {
return reg_match(str, reg, p1+1, p2, last);
}
return 0;
}
if (str[p1] == reg[p2] | reg[p2] == 46) {
return reg_match(str, reg, p1+1, p2+1, 0);
}
return 0;
}
int program(int argc, string[] argv) {
var str = new int[]{97, 98, 99, 99, 99, 99, 99, 100, 101, 102, 0};
var reg = new int[]{97, 103, 42, 46, 99, 42, 99, 42, 100, 101, 42, 102, 0};
return reg_match(str, reg, 0, 0, 0);
}