Abraham.DLXChecker.DP C# (CSharp) 메소드

DP() 개인적인 메소드

private DP ( ) : void
리턴 void
        void DP()
        {
            string word = null;

            if (cur_token != '.')
            {
                run_to_data_content = true;//如果是标签,表明到达了数据区
                word = get_word();

                if (char.IsDigit(word[0]))
                {
                    error("标签只能以$或_或字母开头");
                }
            #if debug
                Debug("got label :" + word);
            #endif
                skip_space();
                if (cur_token != ':')
                {
                    error("语法错误,期望分号(:)");
                }

                string upper_word = word.ToUpper();
                if (extern_symbol_tmp.ContainsKey(upper_word))
                    error(string.Format("符号{0}已被声明为Extern,不能被定义", word));

                if (dataTable.Contains(upper_word))
                    error(string.Format("符号{0}出现重定义", word));
                dataTable.Add(upper_word);

                format_line.Append(AppendSpace(upper_word + " :"));

                if (global_symbol_tmp.ContainsKey(upper_word))
                {
                    global_symbol_tmp.Remove(upper_word);
                }

                get_src_token();
                skip_space();
                if (cur_token != '.')
                    error("语法错误,期望点号(.)");
            }
            else
            {
                format_line.Append(AppendSpace());
            }
            get_src_token();
            word = get_word();
            format_line.Append(AppendSpace('.'+word.ToUpper(),SPACENUM2 ));
            skip_space();
            switch (word.ToLower())
            {
                case "global":
                    PGlobal();
                    break;
                case "extern":
                    PExtern();
                    break;
                case "word":
                    PWord();
                    break;
                case "byte":
                    PByte();
                    break;
                case "space":
                    PSpace();
                    break;
                case "align":
                    PAlign();
                    break;
                case "ascii":
                    PAscii();
                    break;
                case "asciiz":
                    PAsciiz();
                    break;
                case "text":
                    PText();
                    break;
                default:
                    error("不支持的伪指令:" + word);
                    break;
            }
        }