*창*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 8
검색어 입력폼
  • [컴파일러]LEX로 구현한 Java 어휘분석기(scanner)
    /*************************************************************************** * * Lex로 구현한 Java 어휘 분석기 * * 컴파일 방법 : * 1) LINUX * flex scanner.l * gcc lex.yy.c -lfl -oscanner * * 2) UNIX * lex scanner.l * cc lex.yy.c -ll -oscanner * * 실행 방법 : * ./scanner< source.java(입력 파일은 `<` 입력리다이렉션으로) * cat tokenlist.txt(결과 파일) * ***************************************************************************/%{#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#define MAX_ID_LENGTH255// Max Length of Identifier#define NUM_KEYWORD47// Number of keywordsenum tsymbol {teof, tident,tint,tfloat,tdouble,tchar,tstring,tslparen,tsrparen,tmlparen,tmrparen,tblparen,tbrparen,tsemicolon, tcomma,tdot,tplus,tminus,ttimes,tdiv,tmod,tassign,tpass,tmass,ttass,tdass,tmodass,tinc,tdec,tOR,tAND,tNOT,tques,tcolon,tequal, tnequal,tless,tgreat,tlesse,tgreate,tand,tor,txor,tls,trs,tunsignedrs,tnot,tlsass,trsass,tunsignedrsass, tandass,torass,txorass,// keywordabstractsym,booleansym,breaksym, bytesym,casesym,catchsym,charsym,classsym,constsym,continuesym,defaultsym,dosym,doublesym,elsesym,extendssym, finalsym,finallysym,floatsym,forsym,gotosym,ifsym, implementssym,importsym,instanceofsym,intsym,interfacesym,longsym, nativesym,newsym,packagesym, privatesym,protectedsym,publicsym, returnsym,shortsym,staticsym, supersym,switchsym,synchronizedsym, thissym,throwsym,throwssym,transientsym,trysym,voidsym, volatilesym,whilesym};
    프로그램소스| 2004.07.19| 5페이지| 2,000원| 조회(1,689)
    미리보기
  • [컴파일러]컴파일러 8장 연습문제 풀이 평가A+최고예요
    8.10 다음 문법을 보고 물음에 답하시오.S → aAb | bSA → aA | ε(1) C0을 구성하시오.추가된 생성 규칙 :0. S' → S1. S → aAb2. S → bS3. A → aA4. A → εC0 :I0 : CLOSURE({[S'→.S]}) = {[S'→.S], [S→.aAb], [S→.bS]}GOTO(I0, S) = I1 = {[S'→S.]}GOTO(I0, a) = I2 = { [S→a.Ab], [A→.aA], [A→.] }GOTO(I0, b) = I3 = { [S→b.S], [S→.aAb], [S→.bS] }GOTO(I2, A) = I4 = { [S→aA.b] }GOTO(I2, a) = I5 = { [A→a.A], [A→.aA], [A→.] }GOTO(I3, S) = I6 = { [S→bS.] }GOTO(I3, a) = { [S→a.Ab], [A→.aA], [A→.] } = I2GOTO(I3, b) = { [S→b.S], [S→.aAb], [S→.bS] } = I3GOTO(I4, b) = I7 = { [S→aAb.] }GOTO(I5, A) = I8 = { [A→aA.] }GOTO(I5, a) = { [A→a.A], [A→.aA], [A→.] } = I5(2) SLR 파싱 테이블을 작성하시오.. FOLLOW 계산FOLLOW(S) = {$}FOLLOW(A) = {b}{상태ACTION 테이블GOTO 테이블ab$SA0s2s311acc2s5r443s2s364s75s5r486r27r18r3(3) 스트링 baab를 파싱 테이블에 의해 구문 분석하고 그 결과로 파스 트리를 구성하시오.{단계스택입력 심벌구문 분석 내용출력00baab$shift 310b3aab$shift 220b3a2ab$shift 530b3a2a5b$reduce 4440b3a2a5Ab$GOTO 850b3a2a5A8b$reduce 3360b3a2Ab$GOTO 470b3a2A4b$shift 780b3a2A4b7$reduce 1190b3S$GOTO 6100b3S6$reduce 22110S$GOTO 1120S1$accept∴ baab는 올바른 문장이다.. 파스 트리{8.15 다음과 같은 문법이 주어졌을 때, 물음에 답하시오.S → E = E | fE → E + T | TT → T * f | f(1) C0을 구성하시오.추가된 생성규칙0. S' → S1. S → E = E2. S → f3. E → E + T4. E → T5. T → T * f6. T → fC0 :I0 : CLOSURE({[S'→.S]}) = { [S'→.S], [S→.E=E], [S→.f], [E→.E+T],[E→.T], [T→.T*f], [T→.f] }GOTO(I0, S) = { [S'→S.] } = I1GOTO(I0, E) = { [S→E.=E], [E→E.+T] } = I2GOTO(I0, T) = { [E→T.], [T→T.*f] } = I3GOTO(I0, f) = { [S→f.], [T→f.] } = I4GOTO(I2, =) = { [S→E=.E], [E→.E+T], [E→.T], [T→.T*f], [T→.f] } = I5GOTO(I2, +) = { [E→E+.T], [T→.T*f], [T→.f] } = I6GOTO(I3, *) = { [T→T*.f] } = I7GOTO(I5, E) = { [S→E=E.], [E→E.+T] } = I8GOTO(I5, T) = { [E→T.], [T→T.*f] } = I3GOTO(I5, f) = { [T→f.] } = I9GOTO(I6, T) = { [E→E+T.], [T→T.*f] } = I10GOTO(I6, f) = { [T→f.] } = I9GOTO(I7, f) = { [T→T*f.] } = I11GOTO(I8, +) = { [E→E+.T], [T→.T*f], [T→.f] } = I6GOTO(I10, *) = { [T→T*.f] } = I7(2) 각 reduce 아이템의 lookahead를 구하시오.LA(I1, [S'→S.]) = {$}LA(I3, [E→T.]) = LA(I0, [S→.E=E]) ∪ LA(I0, [E→.E+T]) = { =, + }LA(I4, [S→f.]) = LA(I0, [S'→.S] ) = {$}[T→f.] [T→.T*f] [E→.T] [E→.E+T] [S→.E=E]로 올라가면LA(I4, [T→f.]) = { *, +, = }[S→E=E.] [S'→.S]LA(I8, [S→E=E.]) = LA(I0, [S´→.S]) = {$}I5, I6 두가지 경우에서 내려오게 된다.[T→f.] [E→.T] [S→E=.E], [E→.E+T], [T→.T*f], [S→.E=E]LA(I9, [T→f.]) = { $, +, *, = }[E→E+T.] [E→.E+T] [S→.E=E] [S'→.S]LA(I10, [E→E+T.]) = { +, =, $ }[T→T*f.] [T→.T*f]LA(I11, [T→T*f.]) = { *, +, = }(3) LALR 파싱 테이블을 구성하시오.{상태ACTION 테이블GOTO 테이블f+=*$SET0s41231acc2s6s53r4r4s74r6r6r6r25s9836s9107s118s6r19r6r6r6r610r3r3s7r611r5r5r5(4) 위 문법이 LALR(1) 문법이라는 것을 보이시오.LALR(1) 문법이 되려면 두 개의 우문장 형태 αβω와 αβy에서 현재 보고 있는입력 심벌 ω의 처음 1개와 y의 처음 1개가 같고A→β가 우측 유도 과정으로 αβω를 유도하기 위해 사용된 생성 규칙이라면,A→β가 αβy를 αAy로 reduce하기 위하여 적용된 생성규칙이어야한다.다음과 같은 두 개의 우문장 형태에 대해서E = T + f -- (1)E = T * f -- (2)(1)의 현재보고 있는 처음 입력심볼 1개는 + 이고, (2)는 * 이다. +, *은 같지 않다.E = E + f에서 (1)로 유도하기 위해 사용된 생성규칙 E → T으로(2)를 E = E * f 로 reduce할 수 없다.즉, 현재 보고 있는 입력 심벌의 처음 1개가 다르면, 다른 생성규칙으로 reduce된다.따라서 이 문법은 LALR(1)문법이다.(5) 스트링 f*f = f+f의 구문 분석 과정을 보이고 우파스를 구하시오.{단계스택입력 심벌구문분석내용출력00f*f=f+f$shift 410f4*f=f+f$reduce 6620T*f=f+f$GOTO 330T3*f=f+f$shift 740T3*7f=f+f$shift 1150T3*7f11=f+f$reduce 5560T=f+f$GOTO 370T3=f+f$reduce 4480E=f+f$GOTO 290E2=f+f$shift 5100E2=5f+f$shift 9110E2=5f9+f$reduce 66120E2=5T+f$GOTO 3130E2=5T3+f$reduce 44140E2=5E+f$GOTO 8150E2=5E8+f$shift 6160E2=5E8+6f$shift 9170E2=5E8+6f9$reduce 66180E2=5E8+6T$GOTO 10190E2=5E8+6T10$reduce 33200E2=5E$GOTO 8210E2=5E8$reduce 11220S$GOTO 1230S1$accept∴ f*f = f+f는 올바른 문장이다.. 우파스 : 654646310
    공학/기술| 2005.11.22| 6페이지| 1,000원| 조회(5,107)
    미리보기
  • [컴파일러]컴파일러 7장 연습문제 풀이
    7.5 다음 문법이 LL(1) 문법인지를 검사하시오.(1) S → aAa | εA → abS | c1. NULLABLE = {S}2. FIRST(S) = {a,ε} FIRST(A) = {a,c}3. FOLLOW(S) = {$} FOLLOW(A) = {a}A → abSFOLLOW(S) = FOLLOW(S) ∪ FOLLOW(A) = {$} ∪ {a} = {$,a}FOLLOW(S) = {$,a}FOLLOW(A) = {a}4. LL조건 테스트S → aAa | εFIRST(aAa) ∩ FOLLOW(S) = {a} ∩ {$,a} = {a}A → abS | cFIRST(abS) ∩ FIRST(c) = {a} ∩ {c} = Φ모든 택일 생성 규칙에 대하여 교집합 한 것이 공집합이 아니므로 LL조건을만족하지 않는다. 따라서 이 문법은 LL(1) 문법이 아니다.(2) A → Bb | CdB → aB | εC → cC | ε1. NULLABLE = {B,C}2. FIRST(A) = ΦFIRST(B) = {a,ε}FIRST(C) = {c,ε}FIRST(A) = FIRST(A) ∪ (FIRST(Bb) ∪ FIRST(Cd))= FIRST(A) ∪ ((FIRST(B) ? FIRST(b)) ∪ (FIRST(C) ? FIRST(d)))= Φ ∪ (({a,ε} ? {b}) ∪ ({c,ε} ? {d}))= Φ ∪ ({a,b} ∪ {c,d}) = Φ ∪ {a,b,c,d}= {a,b,c,d}FIRST(A) = {a,b,c,d}FIRST(B) = {a,ε}FIRST(C) = {c,ε}3. FOLLOW(A) = {$}FOLLOW(B) = {b}FOLLOW(C) = {d}4. LL조건 테스트A → Bb | CdFIRST(Bb) ∩ FIRST(Cd)= (FIRST(B) ? FIRST(b)) ∩ (FIRST(C) ? FIRST(d))= ({a,ε} ? {b}) ∩ ({c,ε} ? {d})= {a,b} ∩ {c,d}= ΦB → aB | εFIRST(aB) ∩ FOLLOW(B)= (FIRST(a) ? FIRST(B)) ∩ FOLLOW(B)= ({a} ? {a,ε}) ∩ {b}= {a} ∩ {b}= ΦC → cC | εFIRST(cC) ∩ FOLLOW(C)= (FIRST(c) ? FIRST(C)) ∩ FOLLOW(C)= ({c} ? {c,ε}) ∩ {d}= {c} ∩ {d}= Φ모든 택일 생성 규칙에 대하여 교집합 한 것이 공집합이므로 LL조건을 만족한다.따라서 이 문법은 LL(1) 문법이다.7.6 아래와 같이 문법이 주어졌을 때, 다음을 계산하시오.A → aB | BbB → aB | ε(1) FIRST(A) ? FOLLOW(B)FIRST(A) = {a}FIRST(B) = {a,ε}FIRST(A) = FIRST(A) ∪(FIRST(B) ? FIRST(b))= {a} ∪ ({a,ε} ? {b})= {a} ∪ {a,b}= {a,b}FIRST(A) = {a,b}FIRST(B) = {a,ε}FOLLOW(A) = {$}FOLLOW(B) = {b}A → aBFOLLOW(B) = FOLLOW(B) ∪ FOLLOW(A) = {b} ∪ {$} = {b,$}FOLLOW(A) = {$}FOLLOW(B) = {b,$}∴ FIRST(A) ? FOLLOW(B) = {a,b} ? {b,$} = {a,b}(2) LOOKAHEAD(A→Bb)FIRST(B) ? FIRST(b) ? FOLLOW(A)= {a,ε} ? {b} ? {$} = {a,b}7.13 다음과 같은 문법이 주어졌을 때, 물음에 답하시오.A → aABc | cB → bB | ε(1) Recursive-descent parsing :① 각 nonterminal의 FIRST와 FOLLOW를 구하시오.FIRST(A) = {a,c}FIRST(B) = {b,ε}FOLLOW(A) = {$}FOLLOW(A) = FOLLOW(A) U FIRST(Bc)= { $ } U FIRST(B) ? FIRST(c)= { $ } U { b, ε } ? {c} = {$, b, c}FOLLOW(B) = {c}② 각 생성규칙의 LOOKAHEAD를 구하시오.LOOKAHEAD(A->aABc) = {a}LOOKAHEAD(A->c) = {c}LOOKAHEAD(B->bB) = {b}LOOKAHEAD(B->ε) = {c}③ Main routine이 있는 recursive-descent 파서를 작성하시오.pA(){if (nextSymbol == qa){// A → aABc 의 LOOKAHEAD 는 aGet_nextSymbol();pA();pB();if(nextSymbol == qc)Get_nextSymbol();else error();}else if(nextSymbol == qc)// A → c 는 cGet_nextSymbol();else error();}pB(){if(nextSymbol == qb){// B → bB 의 LOOKAHEAD는 bGet_nextSymbol();pB();}else if(nextSymbol == qc)// B → ε 는 c;// ε 이므로 아무짓도 안함, 다음심볼 읽으면 안됨. 그냥 통과else error();}main(){Get_nextSymbol();pA();if(nextSymbol == q$)accept();else error();}④ 스트링 acbc에 대한 파싱 과정을 호출 순서로 쓰시오.pA → pA → pB → pB → accept(2) Predictive parsing :① Predictive 파싱 테이블을 구하시오.1. A->aABcFIRST(aABc) = {a}2. A->c FIRST(c) = {c}3. B->bB FIRST(bB) = {b}4. B->E FOLLOW(B) = {c}VTVNabc$A12B34② 파싱테이블을 이용하여 스트링 acbc에 대한 파싱 과정을 보이고 그 결과로좌파스를 구하시오.스 택입 력구문분석행동파 스$A$cBAa$cBA$cBc$cB$cBb$cB$c$acbc$acbc$cbc$cbc$bc$bc$c$c$$expand 1popexpand 2popexpand 3popexpand 4popaccept*************234123412347.14 다음과 같은 문법이 주어졌을 때,CS → b SL eSL → SL ; s | s(1) LL(1) 문법이 되도록 고치시오.SL → SL ; s | s
    공학/기술| 2005.11.22| 6페이지| 1,000원| 조회(2,396)
    미리보기
  • [알고리즘]백트래킹(backtracking) 방법으로 푼 0-1 Knapsack 문제 평가A좋아요
    프로그램 1▣ 개 요▲ 입력 1. 아이템 4개, 배낭의 용량 16,{아이템번호값어치무게1*************105▲ 입력 2. 아이템 5개. weight와 profit는 5∼50사이의 임의의 수. InitItem() - 아이템 생성 함수아이템 5개 생성후 profit/weight 가 작은 순으로 정렬▲ 알고리즘. knapsack()- 중량초과하지 않고, 현재의 profit이 이전에 구한 maxprofit보다 크다면현재의 profit이 maxprofit이 되고, 현재 아이템 셋은 bestset이 된다.- 현재의 아이템이 유망한가를 검사하여 유망하면그 다음 아이템(트리에서 자식노드)을 포함했을 때와 안 했을 때를 검사함.- 다음 아이템(자식 노드)에 관해 knapsack()함수를 재귀호출하여 최종 solution을 구한다.. promising()중량초과 하지 않고, 현 상태에서 구한 bound값이 이전에 구한 maxprofit보다 크다면(앞으로 더 좋아질 가능성이 있다면) 유망함▲ 출 력. 전역변수 bestset, maxprofit에 저장된 값을 출력. 자식 노드가 확장될 때마다 selected[]에 기록하여 검사한 노드의 번호를 출력함▣ 소스코드#include#include#include#include// for floor()#define MAX 5int numbest, maxprofit, W, n;int w[MAX+1] = {0};// item weightint p[MAX+1] = {0};// item profitint include[MAX+1] = {0};int bestset[MAX+1] = {0};int selected[MAX+1] = {0};// 출력용 : 자식노드 개수 저장void InitItem();// 아이템 생성void knapsack(int, int, int);// 배낭채우기int promising(int, int, int);// promisingint main(){int i;scanf("%d",&i);if(i==1) {w[1] = 2;p[1] = 40;w[2] = 5;p[2] = 30;w[3] = 10;p[3] = 50;w[4] = 5;p[4] = 10;W = 16;n = 4;}else {n = 5;InitItem();// Item random 생성}numbest = 0;maxprofit = 0;knapsack(0,0,0);// Output...printf("nprofit = %dn",maxprofit);// maxprofit 출력printf("Best set : ");// best set 출력for(i=1; i
    공학/기술| 2004.07.19| 9페이지| 2,000원| 조회(3,943)
    미리보기
  • [컴파일러] C로 짠 Java 어휘분석기(scanner)
    #include#include#include#include#define ID_LENGTH 30#define NUMKEYWORD 47struct _Tokentype{int number; // 토큰 번호union {char id[ID_LENGTH+1];int num;} value; // 토큰 값};typedef struct _Tokentype Tokentype;// 구분자char *delimiter = "(){}[];,.";// 연산자char *Operator[] = {"+", "-", "*", "/", "%","=", "+=", "-=", "*=", "/=", "%=","++", "--","&&", "||", "!","?", ":","==", "!=", "", "=","&", "|", "^", "", ">>>", "~","=", ">>>=", "&=", "|=", "^="};// 키워드char *keyword[]={"abstract", "boolean", "break", "byte", "case","catch", "char", "class", "const", "continue","default", "do", "double", "else", "extends","final", "finally", "float", "for", "goto","if", "implements", "import", "instanceof", "int","interface", "long", "native", "new", "package","private","protected","public","return","short","static", "super", "switch", "synchronized", "this","throw", "throws","transient","try","void","volatile","while"};enum tsymbol{tnull=-1,tident, // 명칭// 리터럴(literal) 정수, 실수(고정, 부동), 문자, 문자열tint, // 리터럴 정수tchar, // 리터럴 문자tstring, // 리터럴 문자열// 구분자 () {} [] ; , .tslparen, tsrparen, tmlparen, tmrparen, tblparen, tbrparen, tsemicolon, tcomma, tdot,// 연산자 + - * / %tplus, tminus, ttimes, tdiv, tmod,// 대입 연산자 = += -= *= /= %=tassign, tpass, tmass, ttass, tdass, tmodass,// 증감 ++ --tinc, tdec,// 조건 연산자 && || !tOR, tAND, tNOT,// 조건 3항 연산자 ? :tques, tcolon,// 비교 연산자 == != < > =tequal, tnequal, tless, tgreat, tlesse, tgreate,// 비트연산자 & | ^ < >> >>> ~tand, tor, txor, tls, trs, trs0, tnot,// 비트연산 대입 49// >>= &= |= ^=tlsass, trsass, trs0ass, tandass, torass, txorass,teof,// keyword.. 47개abstractsym, booleansym, breaksym, bytesym, casesym,catchsym, charsym, classsym, constsym, continuesym,defaultsym, dosym, doublesym, elsesym, extendssym,finalsym, finallysym, floatsym, forsym, gotosym,ifsym, implementssym, importsym, instanceofsym, intsym,interfacesym, longsym, nativesym, newsym, packagesym,privatesym,protectedsym,publicsym,returnsym,shortsym,staticsym, supersym, switchsym, synchronizedsym, thissym,throwsym, throwssym,transientsym,trysym,voidsym,volatilesym,whilesym};enum tsymbol tnum[] ={abstractsym, booleansym, breaksym, bytesym, casesym,catchsym, charsym, classsym, constsym, continuesym,defaultsym, dosym, doublesym, elsesym, extendssym,finalsym, finallysym, floatsym, forsym, gotosym,ifsym, implementssym, importsym, instanceofsym, intsym,interfacesym, longsym, nativesym, newsym, packagesym,privatesym, protectedsym, publicsym, returnsym, shortsym,staticsym, supersym, switchsym, synchronizedsym, thissym,throwsym, throwssym, transientsym, trysym, voidsym,volatilesym, whilesym};Tokentype scanner(FILE *fp);int main(int argc, char *argv[]){FILE *fp;Tokentype t;if(argc==1)fp = fopen("Identifier.java","r");elsefp = fopen(argv[1],"r");while(1){t = scanner(fp);if(t.number==tident) // identifierprintf("[I] %s , %dn",t.value.id, t.number);else if(t.number==tint) // integerprintf("[N] %d , %dn",t.value.num, t.number);else if(t.number>=abstractsym) // keywordprintf("[K] %s , %dn",t.value.id, t.number);else if(t.number==tstring) // stringprintf("[S] %s , %dn",t.value.id, t.number);else if(t.number==tchar) // characterprintf("[C] %c , %dn",t.value.num, t.number);else if(t.number>=4 && t.number=13 && t.number
    공학/기술| 2004.07.16| 8페이지| 2,000원| 조회(1,296)
    미리보기
전체보기
받은후기 12
12개 리뷰 평점
  • A+최고예요
    6
  • A좋아요
    3
  • B괜찮아요
    1
  • C아쉬워요
    1
  • D별로예요
    1
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 06월 03일 수요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
3:39 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감