assemble.hとtoken.hを分割
authorj8takagi <j8takagi@nifty.com>
Fri, 15 Feb 2019 15:15:07 +0000 (00:15 +0900)
committerj8takagi <j8takagi@nifty.com>
Fri, 15 Feb 2019 15:15:07 +0000 (00:15 +0900)
include/assemble.h
include/monitor.h
include/token.h [new file with mode: 0644]

index 78f5b8a..f8faf81 100644 (file)
 #include "hash.h"
 #include "struct.h"
 #include "word.h"
-
-/**
- * @brief CASL IIの仕様
- */
-enum {
-    LABELSIZE = 8,         /**<ラベルの最大文字数 */
-    OPDSIZE = 40,          /**<オペラントの最大数。CASL IIシミュレータの制限 */
-};
-
-/**
- * @brief YACASL2の制限
- */
-enum {
-    LINESIZE = 1024,       /**<行の最大文字数 */
-    TOKENSIZE = 256,       /**<トークンの最大文字数 */
-};
+#include "token.h"
 
 /**
  * @brief アセンブルモードを表すデータ型
@@ -135,39 +120,6 @@ void printlabel();
  */
 void freelabel();
 
-/**
- * @brief オペランドを表すデータ型
- */
-typedef struct {
-    int opdc;                   /**<オペランド数 */
-    char *opdv[OPDSIZE];        /**<オペランド配列 */
-} OPD;
-
-/**
- * @brief 命令行を表すデータ型
- */
-typedef struct {
-    char *label;                /**<ラベル */
-    char *cmd;                  /**<コマンド */
-    OPD *opd;                   /**<オペランド */
-} CMDLINE;
-
-/**
- * @brief トークン取得のエラーを追加する
- *
- * @return なし
- */
-void addcerrlist_tok();
-
-/**
- * @brief 行から、ラベル・コマンド・オペランドを取得する
- *
- * @return ラベル・コマンド・オペランド
- *
- * @param *line 行
- */
-CMDLINE *linetok(const char *line);
-
 /**
  * @brief アセンブルエラーをエラーリストに追加する
  *
index b2f648e..566230e 100644 (file)
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
+#include "token.h"
 #include "assemble.h"
 #include "hash.h"
 #include "cmem.h"
diff --git a/include/token.h b/include/token.h
new file mode 100644 (file)
index 0000000..32b1fd7
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef TOKEN_INCLUDE
+#define TOKEN_INCLUDE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+#include <ctype.h>
+#include <assert.h>
+#include <errno.h>
+#include "cerr.h"
+#include "cmem.h"
+
+/**
+ * @brief CASL IIの仕様
+ */
+enum {
+    LABELSIZE = 8,         /**<ラベルの最大文字数 */
+    OPDSIZE = 40,          /**<オペラントの最大数。CASL IIシミュレータの制限 */
+};
+
+/**
+ * @brief YACASL2の制限
+ */
+enum {
+    LINESIZE = 1024,       /**<行の最大文字数 */
+    TOKENSIZE = 256,       /**<トークンの最大文字数 */
+};
+
+/**
+ * @brief オペランドを表すデータ型
+ */
+typedef struct {
+    int opdc;                   /**<オペランド数 */
+    char *opdv[OPDSIZE];        /**<オペランド配列 */
+} OPD;
+
+/**
+ * @brief 命令行を表すデータ型
+ */
+typedef struct {
+    char *label;                /**<ラベル */
+    char *cmd;                  /**<コマンド */
+    OPD *opd;                   /**<オペランド */
+} CMDLINE;
+
+/**
+ * @brief トークン取得のエラーを追加する
+ *
+ * @return なし
+ */
+void addcerrlist_tok();
+
+/**
+ * @brief 文字列から「'」以降の文字列をCASL IIのコメントとして削除する。「''」の場合は除く
+ *
+ * @return コメントを削除した文字列
+ *
+ * @param s 文字列
+ */
+char *strip_casl2_comment(char *s);
+
+/**
+ * @brief 行から、ラベル・コマンド・オペランドを取得する
+ *
+ * @return ラベル・コマンド・オペランド
+ *
+ * @param *line 行
+ */
+CMDLINE *linetok(const char *line);
+
+#endif        /* end of TOKEN_INCLUDE */