summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Parser/grammar.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/Parser/grammar.c b/Parser/grammar.c
index 57ff347..3e31b07 100644
--- a/Parser/grammar.c
+++ b/Parser/grammar.c
@@ -212,21 +212,30 @@ translabel(g, lb)
if (p)
*p = '\0';
}
- else {
- if (lb->lb_str[2] == lb->lb_str[0]) {
- int type = (int) tok_1char(lb->lb_str[1]);
- if (type != OP) {
- lb->lb_type = type;
- lb->lb_str = NULL;
- }
- else
- printf("Unknown OP label %s\n",
- lb->lb_str);
+ else if (lb->lb_str[2] == lb->lb_str[0]) {
+ int type = (int) tok_1char(lb->lb_str[1]);
+ if (type != OP) {
+ lb->lb_type = type;
+ lb->lb_str = NULL;
+ }
+ else
+ printf("Unknown OP label %s\n",
+ lb->lb_str);
+ }
+ else if (lb->lb_str[2] && lb->lb_str[3] == lb->lb_str[0]) {
+ int type = (int) tok_2char(lb->lb_str[1],
+ lb->lb_str[2]);
+ if (type != OP) {
+ lb->lb_type = type;
+ lb->lb_str = NULL;
}
else
- printf("Can't translate STRING label %s\n",
+ printf("Unknown OP label %s\n",
lb->lb_str);
}
+ else
+ printf("Can't translate STRING label %s\n",
+ lb->lb_str);
}
else
printf("Can't translate label '%s'\n", labelrepr(lb));