|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/create-a-new-programming-language-from-scratch/
课程评论:没有评论
课程名称:从零开始创建一种新的编程语言 概述:欢迎参加本课程,在这里您将学习如何在短时间内从头开始创建一种具有基本功能的编程语言。本课程涵盖的关键概念包括编译器设计和自动机理论。您需要对这些领域的某些概念有一定的了解,并熟悉Java编程语言。虽然如果您对这些术语并不熟悉,仍然可以从本课程中受益,但建议您在课程后学习更多关于编译器设计和自动机的内容。这些是编程语言的核心构建模块,由于其复杂性,我们尝试简化一些内容,并提供开发全新编程语言的快速步骤路线图。 在创建编程语言之前,您需要明确希望开发哪种类型的编程语言。在纸上写下您的需求,基于以下问题进行思考:您是希望基于编译器、解释器还是两者兼备?是否需要支持非英语语法(如印地语、泰米尔语、中文、俄语、阿拉伯语等)的UNICODE字面值,还是可以使用ASCII(用于英语语法或罗马拼音)?是否需要字节码,或者直接转换为机器码?如果需要字节码,您是否可以使用任何现有的字节码程序,如JVM?这将是一种面向对象的语言(如Java、Python)还是过程性语言(如C)?您是否需要自举(用自己创建的新语言编写编译器)?您是希望手动执行词法分析、解析、语法树等操作,还是希望自动化一些步骤? 在课程中,您将学习创建一种遵循以下功能集的编程语言: - 基于编译器 - 实现ASCII(新语言基于英语) - 实现字节码,基于JVM(Java虚拟机) - 简单的过程性语言,但稍后可以添加面向对象等其他特性 - 编译器将用Java编写,不涉及自举 - 部分编译器将实现自动化 本课程开始时,您将学习语法,了解如何创建语法文件及创建编程语言的下一步。接下来,您将学习词法分析、解析和编译器设计。在后续章节中,您将创建一个简单的计算器编程语言,并在最后一节中学习如何增强语言以支持变量。您将能够打印字符串、对变量进行操作,随后可以以类似方式添加控制语句。
Welcome to this course, where you would learn how you create a programming language with some functionalities, right from the beginning in short amount of time. The key concepts involved in a programming languages are Compiler Design and Theory of Automata. You might need familiarity of some concepts in these domains, and you need to be familiar with Java Programming language. Although if you don't have any exposure to these terms, you can still benefit from this course, but you should try to learn more on Compiler Design and Automata later. These are the core building blocks of a programming language, being complex topics, and we tried to simplify a few of them and provide a quick roadmap of steps involved in developing a completely new Programming Language.Before heading to create a Programming language, you may need to be clear with what kind of Programming language you would like to develop. Just put a sheet of paper and write your requirements beforehand, based on these questions: Will it be based on a Compiler or an Interpreter or both? Does it require UNICODE literals (for non-English syntax, like Hindi, Tamil, Chinese, Russian, Arabic, etc.)Or can it be written with ASCII (for English syntax or Roman script)Would it require bytecode, or does it directly convert to machine code?If it requires bytecode, can you use any existing bytecode program like JVM?Will it be an Object Oriented language like Java, Python or Procedural like C?Would you require bootstrapping (writing compiler in the same NEW language you are creating) or not?Would you require to manually perform operations like Lexical Analysis, Parsing, Syntax tree, etc or will you Automate some of these?You can ask yourself more such questions, and here you will be learning to create a programming language that will follow this set of features:It will be based on CompilerIt will be implemented in ASCII (as the new language is based on English)Yes, it will be implementing bytecode, and based on JVM (Java Virtual Machine)It will be a simple procedural language, but you can add Object Oriented and other feature later.Its compiler will be written in Java, No bootstrapping involved.Some parts of the compiler will be automatedIn the beginning of this course, you will learn about the Grammar. You will learn how to create a grammar file and what are the next steps involved in creating the programming language. Next you will be learning about Lexical Analysis, Parsing and Compiler Design. In the following section you will learn how to create a simple calculator based programming language, and in the last section you will learn how to enhance language to support variables. You would be able to print strings, perform operations on variables. Later you can add control statements in a similar manner.