디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

어제 C로 매크로 프로세서 만들던놈인데 C#으로 바꿈

Blazer사마갤로그로 이동합니다. 2011.11.07 00:21:43
조회 113 추천 0 댓글 2

using System;
using System.IO;

class MP{
    static int MNTC=0, MDTC=0;
    static string[] MNT = new string[10];
    static string[,] MDT = new string[10,10];
    static string[,] S_ALA = new string[10,2];
    static string[,] R_ALA = new string[10, 2];
    static char[] delimeter = { \' \', \',\', \'\\t\' };
    static bool MACRO = false;

    private static void PASS1(string buffer, string appendFile){   
        string[] buf = new string[10];
        buf = buffer.Split(delimeter, System.StringSplitOptions.RemoveEmptyEntries);
        if (buf.Length>2 && buf[1] == "MACRO"){
            Create_MNT(buf[0]);
            for (int i = 2; i < buf.Length; i++) Create_ALA(buf[i], i - 1, 0);
            MACRO = true;
        }else if (MACRO){
            Create_MDT(buf);
        }
        else System.IO.File.AppendAllText(appendFile, buffer+"\\n");
    }

    private static void PASS2(string buffer, string appendFile){
            string[] buf = new string[10];
        buf = buffer.Split(delimeter, System.StringSplitOptions.RemoveEmptyEntries);
        int find = Search_MNT(buf[0]);
            if(find!=0){
                    for(int i = 1; i < buf.Length; i++) Create_ALA(buf[i], i, 1); 
                    Expand(appendFile, find);
            }
        else System.IO.File.AppendAllText(appendFile, buffer + "\\n");
    }

    private static void Create_MNT(string name){
        MNT[MNTC++] = name;
    }

    private static void Create_ALA(string buffer, int i, int flag){
        if(flag == 0){
                    S_ALA[i,0] = buffer;
            S_ALA[i,1] = "#"+i;
            }
            else {
                    R_ALA[i,0] = "#"+i;
            R_ALA[i,1] = buffer;
            }
    }

    private static void Create_MDT(string[] buffer){
            for (int i=0; i<buffer.Length; i++){
            Replace(ref buffer[i], S_ALA);
            MDT[MDTC, i] = buffer[i];
            if (MDT[MDTC, i] == "ENDM"){
                MDTC++;
                MACRO = false;
            }
        }
    }

    private static void Replace(ref string name, string[,] ALA){
        for(int i=0; i<ALA.GetLength(0); i++){
            if (ALA[i,0] == name) name = ALA[i,1];
        }
    }
    
    private static int Search_MNT(string name){
            for(int i=0; i<MNT.Length; i++)
            if(MNT[i] == name) return i;
            return 0;
    }

    private static void Expand(string file, int no){
        for (int i=0; i<MDT.GetLength(1); i++){
            string[] temp = MDT[no, i].Split(\' \', \'\\t\');
            for (int j=0; j<temp.Length; j++){
                Replace(ref temp[j], R_ALA);
                System.IO.File.AppendAllText(file, temp[j]+" ");
            }
        }
    }

        public static void Main(String[] args){
                if (args.Length < 2){
                        Console.WriteLine("파일명을 입력해주세요. ex) MP a.asm b.asm");
                        Environment.Exit(0);
                }
                string[] strin = System.IO.File.ReadAllLines(args[0]);
                string strtemp = "temp";
                for (int i=0; i<strin.GetLength(0); i++){
                        PASS1(strin[i], strtemp);
                }
        string[] strtmp = System.IO.File.ReadAllLines(strtemp);
        string strout = args[1];
        for (int i=0; ; i++ ){
            PASS2(strtmp[i], strout);
        }
        }
}


길닼ㅋㅋㅋㅋㅋㅋ

이번에도 댓글 안달리려나 ㅠㅠ

지금문제는... 볼드처리한덴데 교체할때 주소값을 줘야 원본 라인 문장이 바뀌잖아...

근데 나누면서 주소값 넘겨주는게 없더라구..

아는사람 좀 도와줘 ㅠㅠ

단어 하나씩 잘라서 주소값 넘겨줘도 됨...

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
286487 뒤늦은 금요일 벙개 후기 ㅋ [10] 쿄스케갤로그로 이동합니다. 11.11.07 187 0
286486 이거보고 게임 끊음 [8] ㅁㄴㅇㄻㅇㄹ(121.50) 11.11.07 365 0
286485 자료구조 듣는데 dfs bfs 하나 스스로 못짜는 내가 한심하다 [1] 잉드로이드갤로그로 이동합니다. 11.11.07 114 0
286484 횽들아 컴파일러책추천좀...ㅎㅎ 즐쿰갤로그로 이동합니다. 11.11.07 68 0
286482 만약 내가 책쓰면 모든 신자들을 위해 하느님,하나님,판테온의 모든신들까지 [1] 1(118.220) 11.11.07 53 0
286480 뭣이? 종교가 쓸대 없는거? [3] 1(118.220) 11.11.07 63 0
286479 횽들은 비쥬얼베이직 몇버전을 제일 선호해? 2006? [5] Toro갤로그로 이동합니다. 11.11.07 75 0
286478 윤성우 c++ 책 샀는데 개독이 확실 [4] 1(118.220) 11.11.07 202 0
286477 아참 프로페셔널하고 익스프레스하고 무슨차이야? [6] Rocket Queen갤로그로 이동합니다. 11.11.07 76 0
286476 근데 궁금한게 대학교에서는 왜 6.0 써?? [4] Rocket Queen갤로그로 이동합니다. 11.11.07 94 0
286475 근데 비주얼6.0이랑 2005 이후버전들은 인터페이스 너무 틀리지 않냐? 버틸수가없ㅋ다갤로그로 이동합니다. 11.11.07 49 0
286474 아그리구 미안한데 비쥬얼스튜디오 2010 다운받아 쓸수없을까 ㅜㅡ [5] Rocket Queen갤로그로 이동합니다. 11.11.07 104 0
286473 다음 면접 끝 ㅎㄷㄷㄷ [8] [성대아싸]갤로그로 이동합니다. 11.11.07 311 0
286472 ㅎㅇ 늅늅이 인사올림과 덧붙여 비쥬얼스튜디오 질문 헤헤 [13] Rocket Queen갤로그로 이동합니다. 11.11.07 125 0
286470 횽들 자바로 그림판 만들려고 하는데 궁금한게 있어요 학부생(165.229) 11.11.07 77 0
286469 디자인만 보면 맥 키보드가 좋은데 [1] -ㅂ-(210.90) 11.11.07 69 0
286468 리얼포스 색깔 너무 알록달록하지 않아? [2] -ㅂ-(210.90) 11.11.07 64 0
286466 횽들은 어디서 프로그래밍 공부함? [3] 캔버스(211.197) 11.11.07 79 0
286465 형들 혹시 파일처리론 배울때 [5] ㅁㄴㅇㅁ(121.66) 11.11.07 117 0
286464 횽들 질문이요 ~ [2] 치킨맛맛폰갤로그로 이동합니다. 11.11.07 49 0
286462 욕구 불만 한주 시작... [1] 다림줄갤로그로 이동합니다. 11.11.07 68 0
286461 우리들이 정신차리는 법 [3] 분당살람갤로그로 이동합니다. 11.11.07 155 0
286460 리얼포스 지름 후기 [9] McHello갤로그로 이동합니다. 11.11.07 262 0
286459 코드는 거짓말 하지 않는다... 다만 커널이... [4] iljeomobolt갤로그로 이동합니다. 11.11.07 119 0
286458 자바 awt구현 니오늘메시갤로그로 이동합니다. 11.11.07 53 0
286456 프로그래밍 막상 하기전에는 재미있어보였는데 하고나면 재미없지않냐 [4] ㅇㅇ(61.77) 11.11.07 107 0
286454 형들 APP개발하는데 비용 얼마나 걸려요 ?? [2] Tachy갤로그로 이동합니다. 11.11.07 257 0
286453 입갤 46살 몸짱 아줌마로 인사드립니다. [1] 다림줄갤로그로 이동합니다. 11.11.07 130 0
286452 프갤 솜사탕 여러분 [1] ㅁㄴㅇㅁ(121.66) 11.11.07 61 0
286451 위대하신 갤2를 구매했으니 [5] 천회장(221.149) 11.11.07 72 0
286448 한참 밑에 스펙 평가 보고 나도 평가점 [4] dlbo갤로그로 이동합니다. 11.11.07 137 0
286445 오늘도 지식인.kin ?(118.218) 11.11.07 52 0
286443 근데 박팀장은 뭐하는놈이? Adelposs갤로그로 이동합니다. 11.11.07 45 0
286441 우리 회사 문제점이 [2] 123(125.7) 11.11.07 152 0
286440 이거 먼가문제지??? [6] 와메빡체네(112.163) 11.11.07 101 0
286439 정신차릴려면 어떻게 해야되나 [2] Adelposs갤로그로 이동합니다. 11.11.07 81 0
286438 해병대라도 다녀와야하나 Adelposs갤로그로 이동합니다. 11.11.07 47 0
286437 횽들 다 자려나? 여기 어떻게 해야 돼??ㅠ [4] 젠장(180.66) 11.11.07 82 0
286436 11월 맞음? 나 방금 모기 3마리 잡음 [3] 123(125.7) 11.11.07 86 0
286435 붉은별 OS를 잠깐 써봤는데 [4] foriequal0갤로그로 이동합니다. 11.11.07 151 0
286434 =COUNTIF($C$2:$C$15,">=90") 이거랑 [2] 갤로그로 이동합니다. 11.11.07 82 0
286432 다음부터는 조별과제 내주고 혼자하고 싶은사람 손들으라할때 바로들어야지 [3] 허접(125.139) 11.11.07 100 0
286431 조옥같은 개발자 쉐키들..! [9] 이문동쮸쮸바갤로그로 이동합니다. 11.11.07 235 0
286430 실타시러 쓰레드 [1] 돌아이바갤로그로 이동합니다. 11.11.07 53 0
286429 어허, 내 자리를 넘보다니 [4] 땡칠도사갤로그로 이동합니다. 11.11.07 118 0
286427 코딩이 잘 안될땐 뭐다? [3] System32갤로그로 이동합니다. 11.11.07 149 0
286426 여긴 걍 개발자들이 쉬는데 맞는거 같음 [1] 꼬꼬월드갤로그로 이동합니다. 11.11.07 98 0
286425 자바 코딩중 막힘.......... 길잡이좀 해주세요..코딩 부탁 xㅠㅠ [14] 한숨만(112.163) 11.11.07 160 0
286423 여기좋음?! ㅇㅇ(222.107) 11.11.07 32 0
286421 내일 정형외과 다녀와야겠다 [1] 허접(125.139) 11.11.07 47 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2