From: j8takagi Date: Sun, 24 Apr 2011 22:59:57 +0000 (+0900) Subject: トークンのアセンブルをリファクタリング X-Git-Tag: v0.1p39~4 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b6d89e7273b49e335af425cbb1ecb2258bf15df;p=YACASL2.git トークンのアセンブルをリファクタリング --- diff --git a/src/assemble.c b/src/assemble.c index aff5380..d8d8bc6 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -112,7 +112,7 @@ WORD getliteral(const char *str, PASS pass) /** * アセンブラ命令をメモリに書込 - * 実行に成功した場合はtrue、それ以外の場合はfalseを返す + * アセンブラ命令の場合はtrue、それ以外の場合はfalseを返す */ bool assemblecmd(const CMDLINE *cmdl, PASS pass) { @@ -130,7 +130,7 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) if(strcmp(cmdl->cmd, ascmd[i].cmd) == 0) { if(cmdl->opd->opdc < ascmd[i].opdc_min || cmdl->opd->opdc > ascmd[i].opdc_max) { setcerr(106, NULL); /* operand count mismatch */ - return false; + return true; } cmdid = ascmd[i].cmdid; break; @@ -142,7 +142,7 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) case START: if(cmdl->label == NULL) { setcerr(107, NULL); /* no label in START */ - return false; + return true; } /* プログラム名の設定 */ asptr->prog = strdup_chk(cmdl->label, "asptr.prog"); @@ -183,13 +183,13 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) default: return false; } - return (cerr->num == 0) ? true : false; + return true; } /** * macrocmd - * マクロ命令をメモリに書込 - * 書込に成功した場合はtrue、それ以外の場合はfalseを返す + * マクロ命令をメモリに書込 + * マクロ命令の場合はtrue、それ以外の場合はfalseを返す */ bool macrocmd(const CMDLINE *cmdl, PASS pass) { @@ -209,7 +209,7 @@ bool macrocmd(const CMDLINE *cmdl, PASS pass) cmdl->opd->opdc > macrocmd[i].opdc_max) { setcerr(106, NULL); /* operand count mismatch */ - return false; + return true; } cmdid = macrocmd[i].cmdid; break; @@ -219,19 +219,20 @@ bool macrocmd(const CMDLINE *cmdl, PASS pass) { case IN: writeIN(cmdl->opd->opdv[0], cmdl->opd->opdv[1], pass); - return true; + break; case OUT: writeOUT(cmdl->opd->opdv[0], cmdl->opd->opdv[1], pass); - return true; + break; case RPUSH: writeRPUSH(pass); - return true; + break; case RPOP: writeRPOP(pass); - return true; + break; default: return false; } + return true; } /** @@ -502,32 +503,18 @@ void writeDC(const char *str, PASS pass) */ bool assembletok(const CMDLINE *cmdl, PASS pass) { - bool status = false; - /* 命令がない場合 */ if(cmdl->cmd == NULL){ - ; - } - /* アセンブラ命令の処理 */ - else if(cerr->num == 0 && assemblecmd(cmdl, pass) == true) { - ; - } - /* マクロ命令の書込 */ - else if(cerr->num == 0 && macrocmd(cmdl, pass) == true) { - ; - } - /* 機械語命令の書込 */ - else if(cerr->num == 0 && cometcmd(cmdl, pass) == true) { - ; - } - else if(cerr->num == 0) { - setcerr(113, cmdl->cmd); /* operand too many in COMET II command */ + return true; } - /* エラーが発生していないか確認 */ - if(cerr->num == 0) { - status = true; + /* アセンブラ命令またはマクロ命令の書込 */ + if(assemblecmd(cmdl, pass) == false && macrocmd(cmdl, pass) == false) { + /* COMET II命令の書込 */ + if(cometcmd(cmdl, pass) == false && cerr->num == 0) { + setcerr(113, cmdl->cmd); /* operand too many in COMET II command */ + } } - return status; + return (cerr->num == 0) ? true : false; } /** diff --git a/src/casl2.c b/src/casl2.c index cf44e68..c40a0a7 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -104,7 +104,7 @@ asfin: */ int main(int argc, char *argv[]) { - int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, status; + int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, stat; char *af[argc]; char *objfile = NULL; const char *usage = @@ -190,7 +190,7 @@ int main(int argc, char *argv[]) } casl2fin: shutdown(); /* 仮想マシンCOMET IIのシャットダウン */ - status = (cerr->num == 0) ? 0 : -1; + stat = (cerr->num == 0) ? 0 : -1; freecerr(); /* エラーの解放 */ - return status; + return stat; } diff --git a/src/exec.c b/src/exec.c index d8df852..1bc891e 100644 --- a/src/exec.c +++ b/src/exec.c @@ -54,7 +54,7 @@ void addcerrlist_exec() bool loadassemble(const char *file) { FILE *fp; - bool status = true; + bool stat = true; assert(file != NULL); if((fp = fopen(file, "r")) == NULL) { @@ -66,10 +66,10 @@ bool loadassemble(const char *file) if(execptr->end == sys->memsize) { setcerr(210, file); /* load - memory overflow */ fprintf(stderr, "Load error - %d: %s\n", cerr->num, cerr->msg); - status = false; + stat = false; } fclose(fp); - return status; + return stat; } /**