컴포넌트 파스칼

Component Pascal
컴포넌트 파스칼
패러다임명령형, 구조형, 모듈형, 객체 지향형
가족워스 오베론
개발자오베론 마이크로시스템즈
처음 등장한1997년; 25년 전(1997년)
타이핑 분야강력, 정전기
범위어휘
웹 사이트blackboxframework.org
영향을 받다
파스칼, 오베론, 오베론-2

컴포넌트 파스칼은 Niklaus Wirth의 파스칼,[1] Modula-2[3][4], [2]Oberon 및 [5]Oberon-2의 전통에 있는 프로그래밍 언어입니다.파스칼이라는 이름을 가지고 있고 그 유산을 보존하고 있지만 파스칼과는 양립할 수 없다.대신, Oberon-2의 마이너 바리안트이자 개량형으로 보다 표현력이 풍부한 타입 시스템과 내장 스트링 서포트를 갖추고 있습니다.컴포넌트 Pascal은 원래 Oberon/L로 명명되었으며 Oberon 마이크로시스템즈라는 소규모 ETH 취리히 스핀오프 회사에서 설계 및 지원되었습니다.그들은 BlackBox Component Builder라는 이름통합 개발 환경(IDE)을 개발했습니다.2014년부터 개발 및 지원은 소규모 자원봉사자 그룹에 의해 인계되었습니다.IDE의 첫 번째 버전은 1994년에 Oberon/F로 출시되었습니다.당시에는 편집 가능한 폼에 기초한 그래피컬 사용자 인터페이스(GUI) 구축에 대한 새로운 접근 방식을 제시했는데, 여기서 필드 및 명령 버튼은 내보낸 변수 및 실행 가능한 프로시저에 링크됩니다.이 어프로치는, Microsoft 로 사용되고 있는 코드 이면 방식과 어느 정도 유사합니다.2008년에 출시Extensible Application Markup Language(XAML) 코드에 액세스하기 위한 NET 3.0.

에는 컴포넌트 Pascal의 오픈 소스 소프트웨어 구현이 있습니다.호주 퀸즐랜드 공과대학교의 John Gough를 중심으로 한 Gardens Point 팀의 NET 및 Java 가상 머신(JVM) 플랫폼.

2004년 6월 23일, 오베론 마이크로시스템즈는 BlackBox Component Builder가 무료 다운로드로 제공되었으며 오픈 소스 버전이 예정되어 있다고 발표했습니다.베타 오픈 소스 버전은 2004년 12월에 처음 출시되었으며 2005년 12월에 최종 v1.5 릴리스로 업데이트되었습니다.IDE, 컴파일러, 디버거, 소스 분석기, 프로파일러 및 인터페이스 라이브러리의 완전한 소스 코드가 포함되어 있으며 웹 사이트에서 다운로드할 수도 있습니다.2009-2011년에는 v1.6의 여러 릴리스 후보가 등장했으며, 2011년에는 Oberon 마이크로시스템즈 웹 페이지에 최신 버전(1.6rc6)이 등장했습니다.2013년 말, 오베론 마이크로시스템즈는 최종 릴리스 1.6을 발표했습니다.그것은 아마도 그들이 번들한 마지막 출시일 것이다.소규모 커뮤니티가 진행 중인 개발을 이어받았다.

BlackBox 구성 요소 Pascal은 원본 파일과 같은 문서 파일에는 .odc(Oberon 문서) 확장자를 사용하고 기호 파일에는 .osf(Oberon 기호 파일)를 사용하는 반면 Gardens Point 구성 요소 Pascal은 원본 파일에는 .cp, 기호 파일에는 .cps를 사용합니다.BlackBox 구성 요소 Pascal에는 고유한 실행 파일 및 로드 가능한 개체 형식 .ocf(Oberon 코드 파일)가 있으며, 이 형식에 대한 런타임 링크 로더가 포함되어 있습니다.문서 형식(.odc)은 서식 지정을 허용하고 조건부 접기를 지원하며 원본 텍스트에 활성 내용을 포함할 수 있는 리치 텍스트 바이너리 형식입니다.또한 편집 가능한 형태로 사용자 인터페이스 요소를 처리합니다.이것은 Oberon 텍스트 [6]형식의 전통입니다.

구문

언어 보고서에 제시된 CP의 전체 구문은 다음과 같습니다.확장된 배커스-나우르 형식에서는 오베론-2보다 1개 많은 34개의 문법적 제작이 필요하지만 더 발전된 언어이다.

모듈= 모듈 식별";"             [Import List(임포트 리스트)] 데크세크            [BEGIN 스테이트먼트Seq]             [CLOSE 스테이트먼트Seq]           END 식별".".  Import List(임포트 리스트)= 수입품[식별하다":="] 식별하다{"," [식별하다":="] 식별하다} ";".  데크세크= { 계속{ConstDecl";" }              유형{TypeDecl(유형선언)";"}              VAR{VarDecl";"}}            { ProcDecl";"   ForwardDecl";"}.  ConstDecl= Identify Def(식별 정의)"=" ConstExpr.  TypeDecl(유형선언)= Identify Def(식별 정의)"=" 유형.  VarDecl= 식별 리스트":" 유형.  ProcDecl= 절차.[리시버] Identify Def(식별 정의)[포멀파스] MetAttributes(메트 속성)            [";" 데크세크[BEGIN 스테이트먼트Seq]             END 식별].  MetAttributes(메트 속성)= ["," 신규] ["," (추상적인    확장 가능한)].  ForwardDecl= 절차."^" [리시버] Identify Def(식별 정의)[포멀파스] MetAttributes(메트 속성).  포멀파스= "(" [동작{";" 동작}] ")" [":" 유형].  동작= [VAR  입력  나가.] 식별하다{"," 식별하다} ":" 유형.  리시버= "(" [VAR  입력] 식별하다":" 식별하다")".  유형= 적격       어레이[ConstExpr{"," ConstExpr}] OF 타입       [추상적인  확장 가능한  한정되어 있다] 기록.["("적격")"] 필드 리스트{";" 필드 리스트} 끝.       유형 포인터       절차.[포멀파스].  필드 리스트= [식별 리스트":" 유형].  스테이트먼트Seq= 진술{";" 진술}.  진술= [ 지정자":=" 익스프레르       지정자["(" [Expr List(익스프레 리스트)] ")"]       IF Expr THEN 스테이트먼트Seq         {ELSIF Expr THEN 스테이트먼트Seq}         [ELSE 스테이트먼트Seq]        끝.       케이스 유효기간         사례.{" " 사례.}         [ELSE 스테이트먼트Seq]        끝.       WHIN EXPr DO 스테이트먼트Seq END       만료될 때까지 스테이트먼트Seq를 반복합니다.       식별을 위해":=" Expr to Expr[ConstExpr 기준] DO 스테이트먼트Seq END       LOUP 문Seq END       와 함께[ 가드 DO 스테이트먼트Seq]         {" " [ 가드 DO 스테이트먼트Seq] }         [ELSE 스테이트먼트Seq]        끝.       퇴장       돌아가다[익스프레르]     ].  사례.= [케이스 라벨{"," 케이스 라벨} ":" 스테이트먼트Seq].  케이스 라벨= ConstExpr[".." ConstExpr].  가드= 적격":" 적격.  ConstExpr= 익스프레르.  익스프레르= 심플 익스프레스[관계 SimpleExpr].  심플 익스프레스= ["+"   "-"] 용어{Add Op 용어}.  용어= 요인{MulOp 계수}.  요인= 지정자  번호  성격  스트링  없음  세트  "(" 익스프레르")"   " ~ " 요인.  세트= "{" [요소{"," 요소}] "}".  요소= 익스프레르[".." 익스프레르].  관계.= "="   "#"   "<"   "<="   ">"   ">="   입력  IS.  추가 조작= "+"   "-"   또는.  멀티롭= "*"   "/"   DIV  모드  "&".  지정자= 적격{"." 식별하다                "[" Expr List(익스프레 리스트)"]"                 "^"                 "(" 적격")"                 "(" [Expr List(익스프레 리스트)] ")"} [ "$" ].  Expr List(익스프레 리스트)= 익스프레르{"," 익스프레르}.  식별 리스트= Identify Def(식별 정의){"," Identify Def(식별 정의)}.  적격= [식별하다"."] 식별하다.  Identify Def(식별 정의)= 식별하다["*"   "-"]. 

레퍼런스

  1. ^ Jensen, Kathleen; Wirth, Niklaus (1974–1991). Pascal: User Manual And Report. Springer Verlag. ISBN 978-0-387-97649-5.
  2. ^ Wirth, Niklaus (1982–1985). Programming in Modula-2. Springer Verlag. ISBN 978-3-540-15078-7.
  3. ^ Reiser, Martin; Wirth, Niklaus (1 June 1992). Programming in Oberon: Steps Beyond Pascal and Modula. Addison-Wesley. ISBN 978-0201565430. PDF (334KB)2012년 6월 3일 Wayback Machine에서 아카이브 완료
  4. ^ Wirth, Niklaus; Gutknecht, Jürg (1 November 1992). Project Oberon: The Design of an Operating System and Compiler. Addison-Wesley. ISBN 978-0201544282. PDF (4'398KB)2012년 7월 10일 Wayback Machine에서 아카이브 완료
  5. ^ Mössenböck, Hans-Peter; Wirth, Niklaus (1991). "The Programming Language Oberon-2" (PDF). Structured Programming. 12: 179–195.
  6. ^ Mössenböck, H.; Koskimies, K. (1996). "Active Text for Structuring and Understanding Source Code". Software: Practice and Experience. 26: 833–850. doi:10.1002/(SICI)1097-024X(199607)26:7<833::AID-SPE34>3.0.CO;2-Q.

추가 정보

외부 링크