• 제목/요약/키워드: AST(Abstract Syntax Tree)

검색결과 17건 처리시간 0.022초

닷넷 프레임워크에서 클래스 최적화를 위한 추상구조트리 생성 및 크로스커팅 위빙 메커니즘 (AST Creating and Crosscutting Concern Weaving Mechanism for Class Optimization in .NET Framework)

  • 이승형;박제연;송영재
    • 한국콘텐츠학회논문지
    • /
    • 제10권2호
    • /
    • pp.89-98
    • /
    • 2010
  • 엔터프라이즈 시스템은 점점 복잡해지고 대형화되고 있다. 시대적 흐름에 따라 재사용에 초점을 맞춘 객체지향 프로그래밍 방법으로 시스템을 개발하고 있다. 하지만, 객체지향 방법에서는 core class에 중복되는 코드가 삽입되기 때문에, 생산성 저하, 새로운 요구사항을 적용하기 어려운 문제가 발생한다. 이 단점을 해결하기 위하여, 메타데이터와 크로스커팅 개념을 적용하는 위빙 메카니즘을 제안한다. 클래스 최적화와 다른 언어사이의 통합을 위하여 다음의 방법을 사용한다. 리플렉션을 이용한 메타데이타 생성, 추상구조트리로의 변환, 그리고 XML로 명세된 크로스커팅 정보를 통한 매핑을 이용한다. 제안하는 방법을 이용하여, 기능의 분산과 코드의 혼란을 해결함으로서 클래스를 최적화 할 수 있다.

객체지향 컴파일러의 심벌 테이블 검증을 위한 선언문 복원 기법 (The Declarations Reconstruction Technique for the Symbol Table Verification of the Object-oriented Compiler)

  • 손민성;권혁주;김영근;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 추계학술발표대회
    • /
    • pp.669-672
    • /
    • 2006
  • 본 연구팀은 유비쿼터스 게임 플랫폼을 위한 Embedded C++ 컴파일러를 개발하였으며, 컴파일러 개발 과정에서 객체지향언어인 C++과 Java 언어를 모두 수용할 수 있는 심벌 테이블을 설계하였다. 심벌 테이블은 컴파일러의 어휘 분석과 구문 분석 과정을 거친 후 SDT(syntax-directed translation)에 의해 생성된 AST(Abstract Syntax Tree)를 분석하여 인식된 명칭(identifier)과 그 속성(attribute)들을 수집하여 저장하는 자료구조로써, 심벌 테이블에 저장된 속성들은 의미 분석(semantic analysis) 단계에서 수집된 속성과 참조된 명칭의 사용이 타당한지를 검사하고, 코드 생성(code generation) 단계에서 올바른 코드가 생성되도록 하는 중요한 요소이다. 따라서 심벌 테이블의 설계가 올바른지와 입력된 속성이 정확한지에 대한 검증과 분석은 필수 불가결하다. 본 논문에서는 컴파일러 개발과정에서 설계한 심벌 테이블을 검증하고 분석하기 위한 목적으로써 심벌 테이블을 이용하여 선언문을 복원시키는 역번역기(detranslator)에 대하여 기술한다. 구현된 역번역기는 C++ 컴파일러와 Java 컴파일러의 선언문 처리 과정에서 심벌 테이블에 입력된 속성들을 본래의 입력 프로그램으로 역번역한다. 따라서 역번역기를 통하여 심벌 테이블의 완전성과 심벌 테이블에 입력된 속성 정보의 정확성을 쉽게 검증할 수 있으며, 역번역과 함께 출력되는 디버그 정보를 이용하여 효율적으로 컴파일러의 개발과 수정을 할 수 있다.

  • PDF

DTV 콘텐츠 검증 시스템을 위한 Java 컴파일러의 개발 (Development of a Java Compiler for Verification System of DTV Contents)

  • 손민성;박진기;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2007년도 춘계학술발표대회
    • /
    • pp.1487-1490
    • /
    • 2007
  • 디지털 위성방송의 시작과 더불어 본격적인 데이터 방송의 시대가 열렸다. 데이터방송이 시작 되면서 데이터방송용 양방향 콘텐츠에 대한 수요가 급속하게 증가하고 있다. 하지만 양방향 콘텐츠 개발에 필요한 저작 도구 및 검증 시스템은 아주 초보적인 수준에 머물러 있는 것이 현실이다. 그러나 방송의 특성상 콘텐츠 상에서의 오류는 방송 사고에까지 이를 수 있는 심각한 상황이 연출 될 수 있다. 본 연구 팀은 이러한 DTV 콘텐츠 개발 요구에 부응하여, 개발자의 콘텐츠 개발 및 사업자 또는 기관에서의 콘텐츠 검증이 원활이 이루어 질수 있도록 하는 양방향 콘텐츠 검증 시스템을 개발 중이다. 양방향 콘텐츠 검증 시스템은 Java 컴파일러, 디버거, 미들웨어, 가상머신, 그리고 IDE 등으로 구성된다. 본 논문에서 제시한 자바 컴파일러는 양방향 콘텐츠 검증 시스템에서 데이터 방송용 자바 애플리케이션(Xlet)을 컴파일하여 에뮬레이팅 하거나 런타임 상에서 디버깅이 가능하도록 하는 바이너리형태의 class 파일을 생성한다. 이를 위해 Java 컴파일러는 *.java 파일을 입력으로 받아 어휘 분석과 구문 분석 과정을 거친 후 SDT(syntax-directed translation)에 의해 AST(Abstract Syntax Tree)를 생성한다. 클래스링커는 생성된 AST를 탐색하여 동적으로 로딩 되는 파일들을 연결하여 AST를 확장한다. 의미 분석과정에서는 확장된 AST를 입력으로 받아 참조된 명칭의 사용이 타당한지 등을 검사하고 코드 생성이 용이하도록 AST를 변형하고 부가적인 정보를 삽입하여 ST(Semantic Tree)를 생성한다. 코드 생성 단계에서는 ST를 입력으로 받아 이미 정해 놓은 패턴에 맞추어 Bytecode를 출력한다.ovoids에서도 각각의 점들에 대한 선량을 측정하였다. SAS와 SSAS의 직장에 미치는 선량차이는 실제 임상에서의 관심 점들과 가장 가까운 25 mm(R2)와 30 mm(R3)거리에서 각각 8.0% 6.0%였고 SAS와 FWAS의 직장에 미치는 선량차이는 25 mm(R2) 와 30 mm(R3)거리에서 각각 25.0% 23.0%로 나타났다. SAS와 SSAS의 방광에 미치는 선량차이는 20 m(Bl)와 30 mm(B2)거리에서 각각 8.0% 3.0%였고 SAS와 FWAS의 방광에 미치는 선량차이는 20 mm(Bl)와 30 mm(B2)거리에서 각각 23.0%, 17.0%로 나타났다. SAS를 SSAS나 FWAS로 대체하였을 때 직장에 미치는 선량은 SSAS는 최대 8.0 %, FWAS는 최대 26.0 %까지 감소되고 방광에 미치는 선량은 SSAS는 최대 8.0 % FWAS는 최대 23.0%까지 감소됨을 알 수 있었고 FWAS가 SSAS 보다 차폐효과가 더 좋은 것으로 나타났으며 이 두 종류의 shielded applicator set는 부인암의 근접치료시 직장과 방광으로 가는 선량을 감소시켜 환자치료의 최적화를 이룰 수 있을 것으로 생각된다.)한 항균(抗菌) 효과(效果)를 나타내었다. 이상(以上)의 결과(結果)로 보아 선방활명음(仙方活命飮)의 항균(抗菌) 효능(效能)은 군약(君藥)인 대황(大黃)의 성분(成分) 중(中)의 하나인 stilbene 계열(系列)의 화합물(化合物)인 Rhapontigenin과 Rhaponticin의 작용(作用)에 의(依)한 것이며, 이는 한의학(韓醫學) 방제(方劑) 원리(原理)인 군신좌사(君臣佐使) 이론(理論)에서 군약(君藥)이 주증(主症)에 주(主)로 작용(作用)하는 약물(藥物)이라는 것을 밝혀주는 것이라고

  • PDF

이해와 구현이 용이한 C 언어 시퀀스 포인트 모델 (Comprehensive and Algorithmical Sequence Point Model for C)

  • 전웅;한동수
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2005년도 가을 학술발표논문집 Vol.32 No.2 (2)
    • /
    • pp.958-960
    • /
    • 2005
  • 이식성과 성능 사이의 타협을 위해 수식 평가 순서를 부분적으로 정의할 수 밖에 없는 C 언어는 표준이 사용하는 일반 영어의 모호성으로 일부 복잡한 수식의 유효성(validity)을 판별하기 어려운 문제를 안고 있다. 그동안 의존 관계나 언어 형식화(formalization)를 이용해 일관되게 유효성을 판별하려는 시도가 있었으나 이해와 구현 모두가 용이해야 한다는 표준의 요구를 만족하지 못했다. 본 연구에서는 구현을 고려해 AST(Abstract Syntax Tree)에 변수의 참조$\cdot$수정 정보를 덧붙여 수식 부작용(side effect)과 관련된 시퀀스 포인트(sequence point) 문제를 해결하는 효율적인 모델을 제안한다.

  • PDF

연어 관계 분석을 통한 Java API 패턴 추출 및 추천 방법 (Java API Pattern Extraction and Recommendation using Collocation Analysis)

  • 권찬우;황상원;남영광
    • 정보과학회 논문지
    • /
    • 제44권11호
    • /
    • pp.1165-1177
    • /
    • 2017
  • 소프트웨어 개발 진행 시 개발자는 다양한 방법으로 API의 사용 방법을 검색하지만, 원하는 검색 결과를 얻지 못하는 경우가 많다. 이러한 문제를 해결하기 위해, 본 연구에서는 추상구문트리의 연어 관계를 이용하여 API 패턴을 추출하고 이를 추천하는 시스템 JACE(Java AST Collocation-pattern Extractor)를 개발하였다. JACE는 자바 추상구문트리를 분석하여 API 호출 노드를 추출한 후, 노드 간 연어 관계를 분석하고 연어 관계 사전을 구축한다. 구축된 연어 관계 사전을 이용하여 연어 관계 리스트를 생성하고 이것을 패턴으로 정의한다. 정의된 패턴은 이클립스 플러그인으로 제작된 테스트 프로그램을 통하여 사용자 요청 시 추천된다. 실험을 위해 794개의 오픈소스 프로젝트를 분석하였고, 약 1천 5백만개의 API 호출 노드를 추출하여 실험하였다. 결과적으로, 기존 검색 시스템들보다 더 유용한 예제 코드 및 사용법을 제시하였다.

CFE를 사용한 IDL 중간 표현 생성 (Generating Intermediate Representation of IDL Using the CFE)

  • 박찬모;송기범;홍성표;이혁;이정기;이준
    • 한국정보통신학회:학술대회논문집
    • /
    • 한국해양정보통신학회 1999년도 춘계종합학술대회
    • /
    • pp.192-197
    • /
    • 1999
  • 분산 프로그램을 작성하는 프로그래머들은 시스템 통신 코드를 작성할 때 딜레마에 빠지게 된다. 코드를 직접 흑은 부분적으로 직접 작성하면 응용 프로그램의 속도는 최대화될 수 있지만, 응용 프로그램을 구현하고 유지하는데 많은 노력이 필요하게 된다. 반면에 코드를 CORBA IDL 컴파일러를 사용하여 생성하는 경우 프로그래머의 노력은 감소되지만 응용 프로그램의 수행성은 나빠진다. 그래서 우리는 CORBA IDL 컴파일러에 의해 생성된 코드를 최적화할 필요가 있다. 우리는 전형적인 프로그래밍 언어에서 사용되고 있는 기법들을 IDL 컴파일을 하는데 도입한다 우리는 IDL 컴파일의 단계를 세단계로 분리한다. 첫 번째 단계는 전단계로 IDL의 파싱 및 스코프 관리와 AST 생성을 한다. 두 번째 단계는 최적화 단계를 구현한다. 세 번째는 이것을 타켓 언어의 코드로 생성하는 단계이다. 본 논문은 첫 번째 단계에 초점을 맞춘다. 우리는 이 단계에서 AST에서 인터페이스와 메시지 표현을 분리하여 표현한다. 이것은 최적화 단계에서 분리된 최적화를 지원한다.

  • PDF

OCL을 이용한 자동화된 코드스멜 탐지와 리팩토링 (Automated Code Smell Detection and Refactoring using OCL)

  • 김태웅;김태공
    • 정보처리학회논문지D
    • /
    • 제15D권6호
    • /
    • pp.825-840
    • /
    • 2008
  • 리팩토링은 내부적으로는 시스템의 품질을 개선하고, 외부적으로는 시스템의 기능을 유지하는 일종의 소프트웨어를 변경하는 과정이다. 이러한 리팩토링을 적용하여 기존 소스코드를 개선하기 위해서는 개선할 사항이 무엇인지를 아는 것이 우선이다. 이를 위해 Martin Fowler와 Kent Beck은 코드속의 나쁜 냄새(코드스멜)를 식별할 수 있는 방법을 제시 하였다. 또한 코드스멜을 탐지하고 어디에 어떤 리팩토링을 적용할 것인가를 결정하는 문제와 관련된 몇몇 연구가 발표되었다. 그러나 이러한 연구들은 코드스멜에 대한 명확한 표현이 부족하거나 한정된 코드스멜만을 탐지하는 단점이 있다. 그리고 리팩토링을 적용할 경우 행위보존을 위한 선행조건들의 표현방법이 리팩토링 절차에 포함되어 있거나 정형화되지 않아 행위보존의 모호함이 발생되는 단점을 가지고 있다. 이에 본 논문에서는 OCL을 이용하여 코드스멜의 정보를 정확히 명세화하고, OCL 번역기를 통해 코드스멜을 자동으로 탐지하여 리팩토링하는 프레임워크를 제안한다. 또한 적용사례를 통하여 자바소스코드속의 코드스멜을 OCL로 명세화하여 자동탐지하고, 리팩토링을 적용해 봄으로써 활용성과 효용성을 검증해본다.