한 종류의 구문을 다른 구문 내부에 포함시킵니다 : Kludge가 영리합니까?

StackOverflow https://stackoverflow.com/questions/509689

문제

배경: 최근 "구조화 된 텍스트 편집기"를 보면서 Python/Perl/C ++/Java et al. XML을 해당 언어의 주석에 몰래 넣음으로써 "구조화 된"개요로.

나는이 트릭을 Windows Bat 파일 내부에서 한 번 본 것을 기억했다. BAT 파일의 REM 문은 일부 Perl 코드를 "숨기기"하는 데 사용되었습니다.

의문: 누군가가 프로그래밍 또는 마크 업 언어의 주석을 사용하여 완전히 다른 언어의 구문을 포함시키는 인스턴스를 본 적이 있습니까? 그렇다면 예, 예제에 대한 링크를 제공하거나 그것이 무엇인지 설명 할 수 있습니까?

그렇지 않은 경우 여기에 예입니다.

의문: 이런 종류의 "트릭"은 영리하고 유용한 아이디어입니까? 그렇다면이 트릭을 사용한 특별 사례를 열거 할 수 있습니까? 그렇지 않다면 왜 그것이 나쁜 생각이라고 생각하는지 설명 할 수 있습니까?

도움이 되었습니까?

해결책

당신은 말하고 있습니다 폴리 글롯, 컴퓨터 프로그래밍의 절대적으로 매혹적인 측면과 일부 스크립팅/프로그래밍 언어의 모호한 특성에서 멋진 운동. 가장 흥미로운 개념이지만, 그들은 참신의 경기장 밖에서 거의 볼 수 없습니다. 그러나 코더의 관점에서 말하면, 여러 가지 다른 환경에서 작업을 수행하는 것이 가장 위업 일 것입니다. 그러나 Polyglots는 일반적으로 의견을 통해 모든 종류의 해킹 및 작업 계약에 의존하는 것으로 보면 거의 항상 타당성의 영역을 벗어납니다. 그래도 그들이 할 수있는 일을 보지 못했다면 확실히 볼만한 가치가 있습니다. 추천하겠습니다 이 하나.

믿거 나 말거나, 그 단일 파일은 15 개의 별도 언어로 올바르게 컴파일됩니다 (어떤 방식으로, 모양 또는 형태).

  1. HTML
  2. 세게 때리다
  3. ZSH
  4. C89
  5. C99
  6. C ++
  7. Makefile
  8. 루비
  9. TCL
  10. Haskell
  11. 파이썬
  12. 자바 스크립트
  13. Brainfuck
  14. 공백

다른 팁

나는 당신에게 완전한 답을 줄 수는 없지만 Netbean은 Java 생성 코드와 함께이 트릭을 사용하는 것을 좋아합니다.

문제는 Java 소스 코드가 응용 프로그램 사이의 매체 여야한다는 것입니다. 특정 의견에 의미를 추가함으로써 NetBeans 만 고수해야합니다. 확실히 다른 프로그램에서 의견을 무시할 수 있지만 이러한 의견이 이동하거나 변경되면 어떻게됩니까? 나는 NetBeans에서 그렇게했고 NetBeans에 파일을 다시로드하려고 할 때 약간의 펑크가 발생했습니다. 나는 나에게 보이지 않는다고 가정 한 구문 (의견!)을 고치는 데 시간이 걸렸다.

개인적으로, 나는 하나 이상의 비 국한 수정이 필요하다면 기존 파일에 더 많은 의미를 추가하지 않을 것입니다 (의미, 하나의 의견 내에 의미를 갖는 것은 괜찮지 만,이 의견에서 그 의견에 대한 의미가 없습니다). 대부분의 경우 필요한 메타 데이터가 포함 된 다른 파일을 확실히 추가 할 것입니다.

이 공포는 유효한 xhtml, html 및 pre-html3.2 tagsoup '숨기기'마크 업을 CSS에 포함시킵니다.

<style type="text/css"><!--/*--><![CDATA[/*><!--*/
    ...
/*]]>*/--></style>

나는 그것이 실제로 사용되는 것을보기 시작했을 때 죽었다. 그것은 단지 운동 일뿐입니다. 죄송합니다.

나는 편집자로 접고, 다양한 도구의 문서 마크 업, 모델링 도구에서 왕복 작업을 위해 빵 부스러기를 남겨 두는 데 사용되는이 트릭 (주석에 물건을 숨기는 것)을 보았습니다.

내가 본 다른 용도는 장부, 코드 생성기. 주석 내부에 파이썬을 작성한 다음 Cog는 코드를 생성하기 위해 Python을 실행합니다. 요점은 생성 된 코드를 수정할 필요가 없거나 수정할 필요가 없기 때문에 흥미 롭습니다. 예를 들어 '폴드'주석을 실수로 엉망으로 만들 때 접는 편집기와 같은 동일한 성가심 세트에 들어 가지 않기 때문입니다. 다른 편집자에서.

Visual Studio는 T4라는 형태를 가지고 있습니다. 불행히도, 문서는 일종의 스케치입니다.

파이썬 문서에 사용되는 가장 좋아하는 마크 업은입니다 구조 조정 된 텍스트. Markdown 또는 Textile과 같은 일반적인 단순화 된 마크 업 언어이지만 좋은 문서 구조를 만들고 HTML 또는 PDF 문서를 쉽게 생성하는 데 사용될 수 있습니다.

Donald Knuth의 웹 및 CWEB는 TEX 내부에 Pascal (웹) 및 C (CWEB)를 포함합니다. 다음은 Metafont 소스 코드의 예입니다.

@ The following system-independent code makes the |xord| array contain a
suitable inverse to the information in |xchr|. Note that if |xchr[i]=xchr[j]|
where |i<j<@'177|, the value of |xord[xchr[i]]| will turn out to be
|j| or more; hence, standard ASCII code numbers will be used instead of
codes below @'40 in case there is a coincidence.

@<Set init...@>=
for i:=first_text_char to last_text_char do xord[chr(i)]:=@'177;
for i:=@'200 to @'377 do xord[xchr[i]]:=i;
for i:=0 to @'176 do xord[xchr[i]]:=i;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top