Line 69... |
Line 69... |
return '\n';
|
return '\n';
|
}
|
}
|
"#line"[ \t]+[0-9]+[ \t]*$ { yylineno = atoi(&yytext[6]); return '\n';}
|
"#line"[ \t]+[0-9]+[ \t]*$ { yylineno = atoi(&yytext[6]); return '\n';}
|
^"#line".*$ { printf("WARNING: Unmatched #line: %s\n", yytext); return '\n'; }
|
^"#line".*$ { printf("WARNING: Unmatched #line: %s\n", yytext); return '\n'; }
|
"#line".*$ { printf("WARNING: Unmatched #line, not at beginnning: %s\n", yytext); return '\n'; }
|
"#line".*$ { printf("WARNING: Unmatched #line, not at beginnning: %s\n", yytext); return '\n'; }
|
[uU][rR]1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(26+yytext[3]-'0');return REG; }
|
(?i:ur)1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(26+yytext[3]-'0');return REG; }
|
[sS][rR]1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(10+yytext[3]-'0');return REG; }
|
(?i:sr)1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(10+yytext[3]-'0');return REG; }
|
[rR]1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(10+yytext[2]-'0');return REG; }
|
[rR]1[0-5] { yylval.u_reg=(ZPARSER::ZIPREG)(10+yytext[2]-'0');return REG; }
|
[uU][rR][0-9] { yylval.u_reg=(ZPARSER::ZIPREG)(16+yytext[2]-'0');return REG; }
|
(?i:ur)[0-9] { yylval.u_reg=(ZPARSER::ZIPREG)(16+yytext[2]-'0');return REG; }
|
[sS][rR][0-9] { yylval.u_reg=(ZPARSER::ZIPREG)( yytext[2]-'0');return REG; }
|
(?i:sr)[0-9] { yylval.u_reg=(ZPARSER::ZIPREG)( yytext[2]-'0');return REG; }
|
[rR][0-9] { yylval.u_reg=(ZPARSER::ZIPREG)( yytext[1]-'0');return REG; }
|
[rR][0-9] { yylval.u_reg=(ZPARSER::ZIPREG)( yytext[1]-'0');return REG; }
|
(?i:upc) { yylval.u_reg = ZPARSER::ZIP_uPC; return REG; }
|
(?i:upc) { yylval.u_reg = ZPARSER::ZIP_uPC; return REG; }
|
(?i:spc) { yylval.u_reg = ZPARSER::ZIP_PC; return REG; }
|
(?i:spc) { yylval.u_reg = ZPARSER::ZIP_PC; return REG; }
|
(?i:pc) { yylval.u_reg = ZPARSER::ZIP_PC; return REG; }
|
(?i:pc) { yylval.u_reg = ZPARSER::ZIP_PC; return REG; }
|
(?i:ucc) { yylval.u_reg = ZPARSER::ZIP_uCC; return REG; }
|
(?i:ucc) { yylval.u_reg = ZPARSER::ZIP_uCC; return REG; }
|
(?i:scc) { yylval.u_reg = ZPARSER::ZIP_CC; return REG; }
|
(?i:scc) { yylval.u_reg = ZPARSER::ZIP_CC; return REG; }
|
(?i:cc) { yylval.u_reg = ZPARSER::ZIP_CC; return REG; }
|
(?i:cc) { yylval.u_reg = ZPARSER::ZIP_CC; return REG; }
|
(?i:usp) { yylval.u_reg = ZPARSER::ZIP_uSP; return REG; }
|
(?i:usp) { yylval.u_reg = ZPARSER::ZIP_uSP; return REG; }
|
(?i:ssp) { yylval.u_reg = ZPARSER::ZIP_SP; return REG; }
|
(?i:ssp) { yylval.u_reg = ZPARSER::ZIP_SP; return REG; }
|
(?i:sp) { yylval.u_reg = ZPARSER::ZIP_SP; return REG; }
|
(?i:sp) { yylval.u_reg = ZPARSER::ZIP_SP; return REG; }
|
[bB][rR][aA] { yylval.u_op = OP_BRA; return BRANCHOP; }
|
(?i:gbl) { yylval.u_reg = ZPARSER::ZIP_R12; return REG; }
|
[bB][rR][zZ] { yylval.u_op = OP_BZ; return BRANCHOP; }
|
(?i:bra) { yylval.u_op = OP_BRA; return BRANCHOP; }
|
[bB][zZ] { yylval.u_op = OP_BZ; return BRANCHOP; }
|
(?i:brz) { yylval.u_op = OP_BZ; return BRANCHOP; }
|
[bB][nN][zZ] { yylval.u_op = OP_BNZ; return BRANCHOP; }
|
(?i:bz) { yylval.u_op = OP_BZ; return BRANCHOP; }
|
[bB][nN][eE] { yylval.u_op = OP_BNZ; return BRANCHOP; }
|
(?i:bnz) { yylval.u_op = OP_BNZ; return BRANCHOP; }
|
[bB][gG][eE] { yylval.u_op = OP_BGE; return BRANCHOP; }
|
(?i:bne) { yylval.u_op = OP_BNZ; return BRANCHOP; }
|
[bB][gG][tT] { yylval.u_op = OP_BGT; return BRANCHOP; }
|
(?i:bge) { yylval.u_op = OP_BGE; return BRANCHOP; }
|
[bB][gG] { yylval.u_op = OP_BGT; return BRANCHOP; }
|
(?i:bgt) { yylval.u_op = OP_BGT; return BRANCHOP; }
|
[bB][lL][tT] { yylval.u_op = OP_BLT; return BRANCHOP; }
|
(?i:bg) { yylval.u_op = OP_BGT; return BRANCHOP; }
|
[bB][nN] { yylval.u_op = OP_BLT; return BRANCHOP; }
|
(?i:blt) { yylval.u_op = OP_BLT; return BRANCHOP; }
|
[bB][rR][cC] { yylval.u_op = OP_BRC; return BRANCHOP; }
|
(?i:bn) { yylval.u_op = OP_BLT; return BRANCHOP; }
|
[bB][cC] { yylval.u_op = OP_BRC; return BRANCHOP; }
|
(?i:brc) { yylval.u_op = OP_BRC; return BRANCHOP; }
|
[bB][rR][vV] { yylval.u_op = OP_BRV; return BRANCHOP; }
|
(?i:bc) { yylval.u_op = OP_BRC; return BRANCHOP; }
|
[bB][vV] { yylval.u_op = OP_BRV; return BRANCHOP; }
|
(?i:brv) { yylval.u_op = OP_BRV; return BRANCHOP; }
|
|
(?i:bv) { yylval.u_op = OP_BRV; return BRANCHOP; }
|
(?i:clr) { yylval.u_op = OP_CLR; return SINGLOP; }
|
(?i:clr) { yylval.u_op = OP_CLR; return SINGLOP; }
|
(?i:clrf) {yylval.u_op = OP_CLRF;return SINGLOP; }
|
(?i:clrf) {yylval.u_op = OP_CLRF;return SINGLOP; }
|
(?i:int) { yylval.u_op = OP_TRAP;return SINGLOP; }
|
(?i:int) { yylval.u_op = OP_TRAP;return SINGLOP; }
|
(?i:trap) {yylval.u_op = OP_TRAP;return SINGLOP; }
|
(?i:trap) {yylval.u_op = OP_TRAP;return SINGLOP; }
|
(?i:jmp) { yylval.u_op = OP_JMP; return SINGLOP; }
|
(?i:jmp) { yylval.u_op = OP_JMP; return SINGLOP; }
|
[lL][jJ][mM][pP] {yylval.u_op = OP_LJMP;return SINGLOP; }
|
(?i:ljmp) { yylval.u_op = OP_LJMP;return SINGLOP; }
|
(?i:neg) { yylval.u_op = OP_NEG; return SINGLOP; }
|
(?i:neg) { yylval.u_op = OP_NEG; return SINGLOP; }
|
(?i:not) { yylval.u_op = OP_NOT; return SINGLOP; }
|
(?i:not) { yylval.u_op = OP_NOT; return SINGLOP; }
|
(?i:cmp) { yylval.u_op = OP_CMP; return DUALOP; }
|
(?i:cmp) { yylval.u_op = OP_CMP; return DUALOP; }
|
(?i:tst) { yylval.u_op = OP_TST; return DUALOP; }
|
(?i:tst) { yylval.u_op = OP_TST; return DUALOP; }
|
(?i:mov) { yylval.u_op = OP_MOV; return DUALOP; }
|
(?i:mov) { yylval.u_op = OP_MOV; return DUALOP; }
|
(?i:ldi) { yylval.u_op = OP_LDI; return LDIOP; }
|
(?i:ldi) { yylval.u_op = OP_LDI; return LDIOP; }
|
[lL][dD][iI][hH][iI] { yylval.u_op =OP_LDIHI; return LDHLOP; }
|
(?i:ldihi) { yylval.u_op =OP_LDIHI; return LDHLOP; }
|
[lL][dD][iI][lL][oO] { yylval.u_op =OP_LDILO; return LDHLOP; }
|
(?i:lhi) { yylval.u_op =OP_LDIHI; return LDHLOP; }
|
|
(?i:ldilo) { yylval.u_op =OP_LDILO; return LDHLOP; }
|
|
(?i:llo) { yylval.u_op =OP_LDILO; return LDHLOP; }
|
(?i:mpyu) { yylval.u_op = OP_MPYU; return DUALOP; }
|
(?i:mpyu) { yylval.u_op = OP_MPYU; return DUALOP; }
|
(?i:mpys) { yylval.u_op = OP_MPYS; return DUALOP; }
|
(?i:mpys) { yylval.u_op = OP_MPYS; return DUALOP; }
|
(?i:rol) { yylval.u_op = OP_ROL; return DUALOP; }
|
(?i:rol) { yylval.u_op = OP_ROL; return DUALOP; }
|
(?i:sub) { yylval.u_op = OP_SUB; return DUALOP; }
|
(?i:sub) { yylval.u_op = OP_SUB; return DUALOP; }
|
(?i:and) { yylval.u_op = OP_AND; return DUALOP; }
|
(?i:and) { yylval.u_op = OP_AND; return DUALOP; }
|
Line 128... |
Line 131... |
(?i:lod) { yylval.u_op = OP_LOD; return LOADOP; }
|
(?i:lod) { yylval.u_op = OP_LOD; return LOADOP; }
|
(?i:sto) { yylval.u_op = OP_STO; return STOROP; }
|
(?i:sto) { yylval.u_op = OP_STO; return STOROP; }
|
(?i:halt) { yylval.u_op = OP_HALT; return BAREOP; }
|
(?i:halt) { yylval.u_op = OP_HALT; return BAREOP; }
|
(?i:wait) { yylval.u_op = OP_HALT; return BAREOP; }
|
(?i:wait) { yylval.u_op = OP_HALT; return BAREOP; }
|
(?i:rtu) { yylval.u_op = OP_RTU; return BAREOP; }
|
(?i:rtu) { yylval.u_op = OP_RTU; return BAREOP; }
|
|
(?i:retn) { yylval.u_op = OP_RETN; return BAREOP; }
|
|
(?i:ret) { yylval.u_op = OP_RETN; return BAREOP; }
|
(?i:nop) { yylval.u_op = OP_NOOP; return BAREOP; }
|
(?i:nop) { yylval.u_op = OP_NOOP; return BAREOP; }
|
(?i:noop) { yylval.u_op = OP_NOOP; return BAREOP; }
|
(?i:noop) { yylval.u_op = OP_NOOP; return BAREOP; }
|
(?i:break) { yylval.u_op = OP_BREAK; return BAREOP; }
|
(?i:break) { yylval.u_op = OP_BREAK; return BAREOP; }
|
(?i:brk) { yylval.u_op = OP_BREAK; return BAREOP; }
|
(?i:brk) { yylval.u_op = OP_BREAK; return BAREOP; }
|
(?i:busy) { yylval.u_op = OP_BUSY; return BAREOP; }
|
(?i:busy) { yylval.u_op = OP_BUSY; return BAREOP; }
|
Line 153... |
Line 158... |
"$"?[-]?0[xX][0-9A-Fa-f]+ { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL,16);return INT;}
|
"$"?[-]?0[xX][0-9A-Fa-f]+ { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL,16);return INT;}
|
"$"?[-]?0[0-7]+ { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL, 8);return INT;}
|
"$"?[-]?0[0-7]+ { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL, 8);return INT;}
|
"$"?[-]?[1-9][0-9]* { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL,10);return INT;}
|
"$"?[-]?[1-9][0-9]* { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL,10);return INT;}
|
"$"?[-]?[1-9A-Fa-f][0-9A-Fa-f]*h {yylval.u_ival=strtoul(yytext+(((*yytext)=='$')?1:0),NULL,16); return INT;}
|
"$"?[-]?[1-9A-Fa-f][0-9A-Fa-f]*h {yylval.u_ival=strtoul(yytext+(((*yytext)=='$')?1:0),NULL,16); return INT;}
|
"$"?[-]?[0-7]+o { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL, 8);return INT;}
|
"$"?[-]?[0-7]+o { yylval.u_ival = strtoul(yytext+(((*yytext)=='$')?1:0),NULL, 8);return INT;}
|
"\'"[^\\\']"\'" { printf("Match char, %s\n", yytext); yylval.u_ival = yytext[1]&0x0ff; return INT; }
|
"\'"[^\\\']"\'" { yylval.u_ival = yytext[1]&0x0ff; return INT; }
|
"\'\\"[abnr\\]"\'" {
|
"\'\\"[abnr\\\'\"]"\'" {
|
yylval.u_ival = yytext[2];
|
yylval.u_ival = yytext[2];
|
if (yytext[2] == 'a') yylval.u_ival = '\a';
|
if (yytext[2] == 'a') yylval.u_ival = '\a';
|
else if (yytext[2] == 'b') yylval.u_ival = '\b';
|
else if (yytext[2] == 'b') yylval.u_ival = '\b';
|
else if (yytext[2] == 'f') yylval.u_ival = '\f';
|
else if (yytext[2] == 'f') yylval.u_ival = '\f';
|
else if (yytext[2] == 'n') yylval.u_ival = '\n';
|
else if (yytext[2] == 'n') yylval.u_ival = '\n';
|
else if (yytext[2] == 'r') yylval.u_ival = '\r';
|
else if (yytext[2] == 'r') yylval.u_ival = '\r';
|
else if (yytext[2] == 't') yylval.u_ival = '\t';
|
else if (yytext[2] == 't') yylval.u_ival = '\t';
|
else if (yytext[2] == 'v') yylval.u_ival = '\v';
|
else if (yytext[2] == 'v') yylval.u_ival = '\v';
|
else if (yytext[2] == '0') yylval.u_ival = '\0';
|
else if (yytext[2] == '0') yylval.u_ival = '\0';
|
else if (yytext[2] == '\\') yylval.u_ival = '\\';
|
else if (yytext[2] == '\\') yylval.u_ival = '\\';
|
|
else if (yytext[2] == '\'') yylval.u_ival = '\'';
|
|
else if (yytext[2] == '\"') yylval.u_ival = '\"';
|
return INT; }
|
return INT; }
|
"\'"[^\\\'][^\\\']"\'" { yylval.u_ival = ((yytext[1]&0x0ff)<<8)+(yytext[2]&0x0ff); return INT; }
|
"\'"[^\\\'][^\\\']"\'" { yylval.u_ival = ((yytext[1]&0x0ff)<<8)+(yytext[2]&0x0ff); return INT; }
|
"\'"[^\\\'][^\\\'][^\\\']"\'" { yylval.u_ival = ((yytext[1]&0x0ff)<<16)
|
"\'"[^\\\'][^\\\'][^\\\']"\'" { yylval.u_ival = ((yytext[1]&0x0ff)<<16)
|
+((yytext[2]&0x0ff)<<8)
|
+((yytext[2]&0x0ff)<<8)
|
+(yytext[3]&0x0ff); return INT; }
|
+(yytext[3]&0x0ff); return INT; }
|