게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

2번 parser 입니다

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2009년10월28일 12:55    주제: 2번 parser 입니다 인용과 함께 답변

http://mimosa.snucse.org/~compwhiz/run.exe
http://mimosa.snucse.org/~compwhiz/test.code

첫번째가 실행파일이고 두번째가 syntax 예시 코드입니다.

리눅스 머신에 적당히 집어넣고 ./run.exe test.code 와 같이 실행하면 됩니다.

제시한 예시 코드의 경우

Seq [Assign("a",Const 1);Assign("b",Const 2);Print [Binop(Var "a",Plus,Var "b")];Print [Var "a";Var "b"];Assign("c",Const 3);Assign("a",Binop(Binop(Var "a",Plus,Var "b"),Plus,Var "c"));Assign("d",Const 0);Print [If(Var "d",Var "a",Var "b")];Print [If(Var "a",Var "a",Var "b")];Print [Var "a";Var "b";Var "c"];Assign("a",Binop(Var "a",Plus,Binop(Var "b",Times,Var "c")));Print [Var "a"];Assign("d",If(Var "d",Var "a",Var "b"));Print [Var "d"]]
result :
3
1,2
2
6
6,2,3
12
2

이런 출력이 나옵니다.

result : 윗 부분 인터프리터 환경에다가 그대로 복붙 입력하시면 stm 타입의 값을 만들어낼 수 있고

(예를 들면 인터프리터에 직접 짠 코드를 얹은 후
intp (복붙, []) 을 하면 결과를 얻을 수 있습니다)

아랫 부분은 실행 결과입니다.


인터프리터를 거치지 않고 바로 code를 넣으면

각자 작성한 코드 위에서 실행결과를 출력할 수 있도록 만들수도 있긴 한데

그렇게 하려면 간단한 스켈레톤 코드를 올려야 하기 때문에..

조교님이 허락하신다면 올릴 수도 있구요.

module 정의만 들어있는 코드로..

////////////////////////////////

토큰과 문법 정의입니다.

토큰 -
INT : [0-9]+ | "~"[0-9]+
ID : [a-zA-Z]([a-zA-Z\'0-9_])*
나머지는 연산자와 예약어 그대로.
( LPAREN
) RPAREN
; SEMI
+ PLUS
- MINUS
* TIMES
/ DIV
:= ASSIGN

문법 -
program -> stm EOF

stm ->
ID ASSIGN exp
| PRINT expseq
| LPAREN stmseq RPAREN

stmseq ->
stm
| stm SEMI stmseq

exp ->
ID
| num
| exp PLUS exp
| exp MINUS exp
| exp TIMES exp
| exp DIV exp
| IF exp THEN exp ELSE exp
| LPAREN exp RPAREN

expseq ->
exp
| exp COMMA expseq

우선순위 -
TIMES, DIV > PLUS, MINUS > IF THEN ELSE > COMMA > ASSIGN > SEMI

PLUS, MINUS, TIMES, DIV는 왼쪽 우선.
COMMA, SEMI는 오른쪽 우선.
_________________
TA
위로
사용자 정보 보기 비밀 메시지 보내기
신희제



가입: 2009년 10월 28일
올린 글: 11

올리기올려짐: 2009년10월28일 15:51    주제: 인용과 함께 답변

메일로 파서 코드를 보내주시면 검토후에 올리도록 하겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2009년10월28일 21:07    주제: re 인용과 함께 답변

swjang at ropas.snu.ac.kr

으로 구현해야할 코드 부분을 지워서 보냈습니다.
_________________
TA
위로
사용자 정보 보기 비밀 메시지 보내기
신희제



가입: 2009년 10월 28일
올린 글: 11

올리기올려짐: 2009년10월29일 17:24    주제: 인용과 함께 답변

윤용호씨가 제공한 코드를 올렸습니다.

http://ropas.snu.ac.kr/~ta/4190.210/09/hw4_2_skeleton.zip

약간의 수정이 있었습니다.
과제 수행에 필수적인 부분이 아니라고 생각되는 부분을 삭제하였습니다.

파서를 제공해 주신 윤용호씨께 감사드립니다.


신희제 가 2009년10월29일 19:18에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2009년10월29일 18:40    주제: re 인용과 함께 답변

요청이 거부됨!!!!!!!

권한설정에 문제가 있는 모양입니다.
_________________
TA
위로
사용자 정보 보기 비밀 메시지 보내기
신희제



가입: 2009년 10월 28일
올린 글: 11

올리기올려짐: 2009년10월29일 19:18    주제: 인용과 함께 답변

수정하였습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
김학봉



가입: 2008년 9월 5일
올린 글: 70

올리기올려짐: 2009년10월30일 17:53    주제: , 인용과 함께 답변

http://ropas.snu.ac.kr/~ta/4190.210/09/hw4_2_skeleton.tar

접근하면 "-test차단" 이라고 뜨는데요;
위로
사용자 정보 보기 비밀 메시지 보내기
신기정



가입: 2009년 9월 15일
올린 글: 83

올리기올려짐: 2009년10월31일 8:21    주제: 저...죠교님이나.. 윤용호님 인용과 함께 답변

이게 뭐하는거고 왜필요한건지좀 설명해주시면 안될까요?

뭐가 뭔지 잘 모르겠어서요 ㅜㅜ
위로
사용자 정보 보기 비밀 메시지 보내기
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2009년10월31일 11:57    주제: Re: 저...죠교님이나.. 윤용호님 인용과 함께 답변

신기정 씀:
이게 뭐하는거고 왜필요한건지좀 설명해주시면 안될까요?

뭐가 뭔지 잘 모르겠어서요 ㅜㅜ


필수적인건 아니고 테스트 해보는데 많은 도움이 되는 프로그램입니다.

(a:=1;b:=2;print (a+b);print a,b;c:=3;a:=a+b+c;d:=0;print if d then a else b;print if a then a else b;print a,b,c;a:=a+b*c;print a;d:=if d then a else b;print d)

Seq [Assign("a",Const 1);Assign("b",Const 2);Print [Binop(Var "a",Plus,Var "b")];Print [Var "a";Var "b"];Assign("c",Const 3);Assign("a",Binop(Binop(Var "a",Plus,Var "b"),Plus,Var "c"));Assign("d",Const 0);Print [If(Var "d",Var "a",Var "b")];Print [If(Var "a",Var "a",Var "b")];Print [Var "a";Var "b";Var "c"];Assign("a",Binop(Var "a",Plus,Binop(Var "b",Times,Var "c")));Print [Var "a"];Assign("d",If(Var "d",Var "a",Var "b"));Print [Var "d"]]

첫번째것이 그냥 일반적인 코드처럼 작성한 것이고
두번째것이 그것을 파싱해서 ocaml interpreter에게 인식시켜줄 수 있는 형태입니다.
당연히 첫번째것으로 만드는것이 테스트 할때 훨씬 편하겠지요. 저 수많은 괄호들........
_________________
TA
위로
사용자 정보 보기 비밀 메시지 보내기
장수원



가입: 2008년 9월 26일
올린 글: 167

올리기올려짐: 2009년11월1일 22:38    주제: Re: , 인용과 함께 답변

김학봉 씀:
http://ropas.snu.ac.kr/~ta/4190.210/09/hw4_2_skeleton.tar

접근하면 "-test차단" 이라고 뜨는데요;


http://ropas.snu.ac.kr/~ta/4190.210/09/hw4_2_skeleton.zip 링크를 추가하였습니다. 학교 바깥에서 tar 파일에 접근이 안되는 듯 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2009년11월2일 0:55    주제: 덧 인용과 함께 답변

http://mimosa.snucse.org/~compwhiz/hw4_2_skeleton.tar.gz

자꾸 링크가 막히는듯 하여 올려주신 zip 파일 받아서 tar.gz로 압축하고 제 계정에 다시 올렸습니다.

explorer에서 받으려고 하니 잘 안되고

서버에서 wget 으로 받으니 받아지더군요.
_________________
TA
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay