예를 들어, 프로그래밍 언어 나 스크립팅 언어를 만들 사람에게 돈을 지불하고 싶다고 가정 해 보겠습니다. 내가 원하는 것이 무엇인지 완전히 이해하려면 어떤 종류의 문서가 필요할까요?
새로운 프로그래밍 / 스크립트 언어를 설명하는 표준 문서가 있습니까?
예를 들어, 프로그래밍 언어 나 스크립팅 언어를 만들 사람에게 돈을 지불하고 싶다고 가정 해 보겠습니다. 내가 원하는 것이 무엇인지 완전히 이해하려면 어떤 종류의 문서가 필요할까요?
새로운 프로그래밍 / 스크립트 언어를 설명하는 표준 문서가 있습니까?
답변:
작성해야하는 것을 언어 사양 이라고합니다 .
언어 문법 ( 확장 된 Backus-Naur-Form )과 그 의미에 대한 설명을 포함해야합니다 .
후자의 경우 자신의 말로 설명을 작성하거나 (정확하게주의를 기울여) 공식적인 의미론 을 작성할 수 있습니다 .
다음이 필요합니다.
언어가 어떻게 다릅니 까? 그것의 임무는 무엇입니까? 기능적입니까? 객체 지향입니까? 메타 언어입니까? 독특한 기능은 무엇입니까? 존재하지 않는 (또는 못생긴 방식으로) 존재하는 세상에 무엇을 줄 것입니까? 어떻게 바꾸고 싶습니까? 컴파일되거나 해석됩니까? DSL 또는 범용 언어? 이것은 당신의 철학 이며 언어 디자인에 대해 많은 것을 지시합니다.
그런 다음 종이에 거친 구문과 의미를 긁어 내십시오. 이것은 의미 론적 정의 가 될 것입니다 ... 가짜 코드를 작성하는 것은 당신의 생각을 발전시키는 좋은 방법입니다. 이를 수행하는 방법에 대한 훌륭한 예를 보려면 "C 프로그래밍 언어"를 읽으십시오. 그것으로 놀아 라.
그런 다음 어떤 방식으로 토큰과 구문을 정의해야합니다. 그런 다음 프로그램은이를 문자열로 읽고 구문을 처리 할 수있는 오토마타로 처리합니다. Yacc와 Bison은 각각 어휘 및 구문 분석에 정규식과 BNF 스타일 구문을 사용합니다. Yacc 및 Bison과 같은 다른 언어 도구도 있습니다.
또한 하지 말아야 할 것을 알기 위해서는 언어 이론 / 컴파일러 의 기초 가 필요합니다 . 모호한 문법, AST 생성 및 조작 문제, 일반적으로 자신을 위해 인생을 단순하게 만드는 방법을 예로들 수 있습니다. 이론을 아는 것이 매우 중요합니다. 다음을 시작하는 것이 좋습니다.
컴파일러 : 원리, 기법 및 도구 (드래곤 북)
C에서 현대 컴파일러 구현 또는 Java에서 현대 컴파일러 구현
새 언어를 만드는 시간의 99.9 %가 완전히 필요하지 않습니다. 투자 수익률은 매우 작을 것이므로 시간을 낭비했을 것입니다.
Javascript를 사용하기 쉬운 스크립팅 언어로 사용할 수 있으며 대부분의 언어에서 이미 사용 가능한 파서가 있습니다. 적합한 파서를 찾을 수 있으면 원하는 다른 스크립팅 언어를 사용할 수도 있습니다. 그것들을 프로그램에 구현하면 훨씬 적은 작업이 필요하고 더 큰 수익을 올릴 수 있습니다. 사람들은 다른 언어를 배울 필요가 없으며 API 만 배우면됩니다. 훨씬 더 나은 솔루션입니다.
새로운 언어를 만드는 것은 거의 항상 나쁜 일입니다.
BNF 로 언어 문법을 설명 할 수 있습니다 .
예를 들어, 이것은 Python의 문법 입니다.