The document discusses internal and external domain-specific languages (DSLs). It explains that internal DSLs are implemented using features of the host language, while external DSLs use a custom language. Parser combinators are introduced as a way to implement the parsing behavior of external DSLs by composing simple parsing functions. Several examples are provided, including JSON, CSV, and expression parsing using parser combinators in Haskell, Parsec, and Scala.
This document discusses three different approaches to parsing XML documents: SAX, DOM, and JDOM. SAX is an event-based parser that works by invoking methods as it reads the XML document and encounters different components. DOM parses the entire XML document into a tree structure that can be manipulated in memory. JDOM is a Java library that provides an API for parsing XML into Java objects similar to DOM. The document then provides code examples demonstrating how to use each of these XML parsing approaches to search for a book by ISBN in a sample XML book catalog.
The document discusses internal and external domain-specific languages (DSLs). It explains that internal DSLs are implemented using features of the host language, while external DSLs use a custom language. Parser combinators are introduced as a way to implement the parsing behavior of external DSLs by composing simple parsing functions. Several examples are provided, including JSON, CSV, and expression parsing using parser combinators in Haskell, Parsec, and Scala.
This document discusses three different approaches to parsing XML documents: SAX, DOM, and JDOM. SAX is an event-based parser that works by invoking methods as it reads the XML document and encounters different components. DOM parses the entire XML document into a tree structure that can be manipulated in memory. JDOM is a Java library that provides an API for parsing XML into Java objects similar to DOM. The document then provides code examples demonstrating how to use each of these XML parsing approaches to search for a book by ISBN in a sample XML book catalog.
AgitarOne은 Java로 개발중인 Eclipse 프로젝트에 자동화된 단위 테스트의 환경을 제공하여 테스트 시간을 대폭 단축 시켜 개발 비용을 절감하게 하며, 작성된 소스 코드들이 실질적으로 수행되는지 명확히 파악할 수 있도록 하여 소스 코드의 품질을 향상시켜 줄 수 있는 Java 개발자의 단위 테스트 자동화 솔루션 입니다.
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...Kay Kim
MIGS 2004에서, Noel Llopis가 발표한 "애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World)의 한글 슬라이드
http://betterways.tistory.com/139 참조.
AgitarOne은 Java로 개발중인 Eclipse 프로젝트에 자동화된 단위 테스트의 환경을 제공하여 테스트 시간을 대폭 단축 시켜 개발 비용을 절감하게 하며, 작성된 소스 코드들이 실질적으로 수행되는지 명확히 파악할 수 있도록 하여 소스 코드의 품질을 향상시켜 줄 수 있는 Java 개발자의 단위 테스트 자동화 솔루션 입니다.
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...Kay Kim
MIGS 2004에서, Noel Llopis가 발표한 "애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World)의 한글 슬라이드
http://betterways.tistory.com/139 참조.
3. 1. 팀원
SUM Project Team
201001587 서동현
계산기 알고리즘 작성
디바이스 드라이버 총괄 통합
계산기 알고리즘과 디바이스 드라이버 통합
201001637 전지성
CLCD 연구 및 테스트
Key Button 연구 및 테스트
201001647 지강일
Dot Matrix 연구 및 테스트
Button 연구 및 테스트
201001653 최보영
FND 연구 및 테스트
LED 연구 및 테스트
6. 3. 기간 및 목표
2014. 5. 23. ~ 2014. 6. 13. (약 3주)
1주차 설계 및 디바이스 드라이버 코드 분석 5/23, 5/27, 5/28, 5/30
2주차
계산기 알고리즘 작성 및 디바이스 드라이버 코드 수
정
6/2, 6/3, 6/5
3주차 계산기 알고리즘과 디바이스 드라이버 코드를 통합 6/9, 6/10, 6/11
8. 4. 개발 방향
ListBaseStack : 스택의 활용 부분
InfixToPostfix: 후위 표기법의 수식으로 변환
PostCalculator : 후위 표기법의 수식을 계산
InfixCalculaotr: 중위 표기법의 수식을 계산
Calculator : 계산기 알고리즘의 응용 부분
HisOpen, HisSave,
HisNum : 계산기의 히스토리 부분
계산기 알고리즘
Clcd
fnd
Key button
Dot
Led
btn
디바이스 드라이버
9. 5. 발생한 문제점 및 해결 방안
History 기능 struct history{
int id;
char exp[E_MAX_N];
char res[R_MAX_N];
};
if((fread(&record,sizeof(record),1,fp)>0)&&(record.id!=0))
구조체
파일 포인터
History.txt
1 128+(10+28) 166.0
2 30+50/10 35.0
3 99+1-50*10 -400.0
4 4/4*4/4 1
10. 5. 발생한 문제점 및 해결 방안
소수점 + 한 자리 숫자 이상의 계산
double EvalRPNExp(char exp[LEN]){
·
·
else if(flag_d==1&&flag_dot!=1){
Double digit=SPop(&stack);
SPush(&stack,(digit*10)+tok-
'0');
}
else if(flag_d==1&&flag_dot==1){
double digit=SPop(&stack);
double dot=tok-'0';
for(j=0;j<cnt_dot;j++){
dot/=10;
}
SPush(&stack,digit+dot);
}
11. 5. 발생한 문제점 및 해결 방안
CLCD 두 줄 따로 출력하기
static void string_out(char*str){
·
·
if(*s=='n'){
udelay(100);
*((volatileunsignedchar*)(mem_base_wr))=0xC0;
continue;
}
12. 5. 발생한 문제점 및 해결 방안
Button과 Key Button의 충돌
int main(int ac,char *av[]){
·
·
/* Init Thread */
pthread_mutex_init(&mutx,NULL);
pthread_create(&t_id,NULL,handle_btn,
(void*)&btnFd);
·
·
void * handle_btn(void *arg){
switch(buf){
/* Exit Key */
case1:
pthread_mutex_lock(&mutx);
btn_flag[0]=1;
pthread_mutex_unlock(&mutx);
break;