16 { 104,
"label length is too long" },
17 { 105,
"no command in the line" },
24 { 117,
"operand too many in DC" },
25 { 118,
"operand length too long" },
26 { 121,
"cannot get operand token" },
27 { 123,
"unclosed quote" },
33 char *tok, *p, sepc =
',';
34 int i = 0, cnt_quote = 0;
55 if(p[i+1] !=
'\'' && (quoting ==
false || p[i-1] !=
'\'')) {
71 i += strcspn(p + i,
", ");
99 char *tok = NULL, *p = NULL;
104 if(!line[0] || line[0] ==
'\n') {
120 if((i = strcspn(p,
" \t")) == 0) {
136 p += strspn(p,
" \t");
147 i = strcspn(p,
" \t");
154 p += strspn(p,
" \t");
void addcerrlist(int cerrc, CERR cerrv[])
エラーリストを作成・追加する
void setcerr(int num, const char *str)
現在のエラーを設定する
char * strndup_chk(const char *s, size_t len, const char *tag)
malloc_chkを実行してメモリを確保し、コピーした文字列の指定した長さの部分を返す
#define FREE(ptr)
メモリを解放するマクロ
void strip_end(char *s)
文字列の末尾から、改行と空白とタブを削除する
char * strdup_chk(const char *s, const char *tag)
malloc_chkを実行してメモリを確保し、コピーした文字列を返す
void strip_casl2_comment(char *s)
文字列から「'」以降の文字列をCASL IIのコメントとして削除する。「''」の場合は除く
#define ARRAYSIZE(array)
配列のサイズを返すマクロ
void * malloc_chk(size_t size, const char *tag)
mallocを実行し、0で初期化する
void addcerrlist_tok()
トークン取得のエラーを追加する
static CERR cerr_opdtok[]
オペランドトークン取得のエラー定義
OPD * opdtok(const char *str)
「,」区切りの文字列から、オペランドのトークンを取得
CERR cerr_linetok[]
行トークン取得のエラー定義
CMDLINE * linetok(const char *line)
行から、ラベル・コマンド・オペランドを取得する