如何开发像 Coffee Script 这样的编程语言?

2024-04-13

要开发像咖啡脚本这样的编程语言,我需要知道的初始要求是什么,它基本上有自己的语法,但在编译后会更改为另一种语言。我对此进行了谷歌搜索,但找不到正确的答案。


  • 使用基本语言指定您的语言形式语法 http://en.wikipedia.org/wiki/Formal_grammar在类似的事情中EBNF http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form.

    statement        = if-statement
                     | return-statement
                     | expression
                     | ...
    
    if-statement     = "if" "(" expression ")" "{" statements "}"
    
    return-statement = "return" expression ";"
    
    ...
    
  • 了解一下简单的parsing http://en.wikipedia.org/wiki/Parsing by 递归下降 http://en.wikipedia.org/wiki/Recursive_descent_parser and 运算符优先级 http://effbot.org/zone/simple-top-down-parsing.htm.

  • 编写一个解析器来创建抽象语法树 http://en.wikipedia.org/wiki/Abstract_syntax_tree来自源文件。

  • Write a 代码生成器 http://en.wikipedia.org/wiki/Code_generation_%28compiler%29将此 AST 转换为您的目标语言;或者

  • 写一个口译员 http://en.wikipedia.org/wiki/Interpreter_%28computing%29仅仅评估 AST。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何开发像 Coffee Script 这样的编程语言? 的相关文章

  • 测量单位是 F# 独有的吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 应用顺序/按值调用和正常顺序/按名称调用差异

    背景 我正在根据在线课程学习 sicp 并对其讲义感到困惑 在讲义中 应用顺序似乎等于 cbv 正常顺序等于 cbn 困惑 But the wiki http en wikipedia org wiki Evaluation strateg
  • 分叉与线程

    我以前在我的应用程序中使用过线程并且很了解它的概念 但最近在我的操作系统讲座中我遇到了 fork 这与线程类似 我用谷歌搜索了它们之间的区别 我发现 Fork只不过是一个新进程 看起来与旧进程或父进程一模一样 但它仍然是一个不同的进程 具有
  • 修复 Lisp 语法

    作为 Lisp 的新手 我想知道 Lisp 语法是否可以 修复 有人说 Lisp 的语法是其最大的优势之一 我不太明白这一点 难道不能用空格 换行和缩进的组合来替换 明显的 括号吗 就像Python一样 在我看来 括号是 Lisp 代码中最
  • 什么是“表达问题”?

    我对这是什么有一个粗略的想法 但如果有人对 表达问题 有他们认为简洁直观的解释 我很想听听 Watch 这个想法是 您的程序是数据类型和对其进行操作的组合 该问题要求一种实现 允许添加类型的新情况和新操作 而不需要重新编译旧模块并保持静态类
  • 在 GCC 中设置 std=c99 标志

    我想知道是否有任何文件可以设置 std c99标志 这样我就不必为每个编译都设置它 我在 Ubuntu 上使用 GCC 4 4 而不是打电话 usr bin gcc use usr bin c99 这是 Single Unix 认可的调用
  • 简洁表达数学公式的语法建议

    我正在 C 中开发功能域特定的嵌入式语言 以尽可能简洁 准确地将公式转换为工作代码 我在评论中发布了一个原型 大约有两百行长 现在我的语言看起来像这样 嗯 实际上看起来像这样 implies two nested loops j 0 N i
  • 了解外部函数接口 (FFI) 和语言绑定

    混合不同的编程语言长期以来一直是我不太理解的事情 根据这篇维基百科文章 http en wikipedia org wiki Foreign function interface Operation of an FFI 外部函数接口 或 F
  • Objective C 编码指南

    有没有关于 Objective C 中的编码指南的 pdf 文件 例如 1 Breaking the function names checkIfHitTheTrack 2 member variables must be like mVa
  • 关于代码密度作为编程语言能力衡量标准的文章[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得看过一篇文章说这样的话 不同的编程语言引入的错误数量差异不大 但很大程度上取决于 SLOC 源代
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • 反应式编程和函数式反应式编程之间的区别

    我最近一直在对反应式编程进行一些研究 我发现很难找到反应式编程和反应式编程之间差异的良好描述 功能性 反应性的 反应式编程是否只是使用函数式方法 范式而不是使用声明式或面向对象范式来实现 函数式响应式编程 FRP 是一种具有特定语义的特定编
  • 是否有任何编程语言支持定义原始数据类型的约束?

    昨晚我在想编程语言可以有一个功能 我们应该能够限制分配给原始数据类型的值 例如 我应该可以说我的 int 类型变量只能具有 0 到 100 之间的值 int lt 0 100 gt progress 然后 这将在所有情况下充当普通整数 除非
  • C# 程序员的 C++ [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对 Java 和 C 的 OO 有很好的理解 而且我很幸运在我的工程课程中接触到了汇编程序和 C 的
  • 我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

    这是一个幼稚的问题 但在我迄今为止看到的教程中并没有拼写清楚 如果我在一种高级语言 不是 C C 等 之上构建一个解释器 并且它有一个垃圾收集器 是否有必要为解释器本身制作一个 如果答案是肯定的 那一定是同一类宿主吧 即 如果主机是标记 清
  • 哪些编程语言不被视为高级语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在信息学理论中 我一直听到和读到有关高级和低级语言的内容 然而我不明白为什么这仍然相关 因为除了今天使用的汇编语言之外 没有任何 相关的 低级语
  • 所有编程语言都是按顺序读取的吗?

    我似乎无法找到对此的直接答案 使用多个搜索引擎给我的结果非常模糊 或者只回答了一半的问题 那么 详细来说 当您编写一个程序并对其进行编译 解释时 计算机是按时间顺序顺序读取每一行还是默认情况下跳过 Example 使用 C 风格的源代码 因
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • “单体”是什么意思?

    我在课堂上看到过它 我怀疑这意味着该类可以被分解为逻辑子单元 但我找不到一个好的定义 你能举一些例子吗 谢谢您的帮助 编辑 我喜欢聪明的回复 但我显然指的是软件上下文中的 整体 我了解巨石 巨石 支石墓以及所有与石头相关的背景 哎呀 我的国
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip

随机推荐

  • 如何暂停 main()

    我正在尝试编写我的程序 以便当用户单击 Drive To JButton 在我的主类 Dispatch 中 时 它会从另一个类 Cab 打开一个 JFrame GoToDistination 用户可以在其中输入所需的内容信息 单击 继续 后
  • 如何仅在 Scrollview/Recyclerview 的底部添加淡入淡出边缘?

    I am using requiresFadingEdge true for adding fading effect at the bottom but the problem is it also shows fading effect
  • 如何将字符串{}值替换为obj(键值)

    我最近开始在 NodeJs 上编程 我有不同的字符串和 Json 对象 eg var str My name is name and my age is age var obj name xyz age 24 var str I live
  • 如何在 XML 模式中使任一字段为必填字段

    我有一个如下所示的架构 我有一些关于该架构的问题 1 制作方法CourierNumber or WorkLocationCoordinate强制性的 我使用了如下所示的一种全局类型 EDIT正如 Abel 在修改后的模式中提到的那样 仍然没
  • '无法在descriptionForLayoutAttribute_layoutItem_coefficient中创建描述。有些东西是零

    首先 我用 3 个不同的 UIView 来替换 iPad Storyboard 上 Split View Controller 中的详细视图 它在 iOS 8 iPad 上运行良好 但是 当我加载详细视图之一时 应用程序在 iOS 7 和
  • 递归可以命名为简单的函数调用吗?

    请考虑递归函数 1 int calc int num 2 sum sum num sum is a global variable 3 num 4 if num 0 5 return sum 6 calc num 它计算一个整数的总和 我的
  • 如何使用 Objective c 在 iOS 9.3 中添加动画到启动屏幕

    如何在 iOS 9 3 中制作如下图所示的动画启动屏幕 基本上 您无法制作动画启动画面 但是 您可以在故事板中复制启动屏幕 并将其作为应用程序的入口视图控制器 VC 然后 当视图加载时 您可以开始动画 最终结果是 您将得到一个 动画启动画面
  • 我的 jframe 不显示 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是java编程的初学者 我试图让我
  • OCaml 中 let rec 的限制

    这几天我在学习OCaml 发现了这个 OCaml 对于可以放在 let 记录右侧的内容有限制 像这个 let memo rec f norec let rec f memoize fun x gt f norec f x in f Erro
  • C# Windows 应用程序未关闭

    我有一个 C Windows 应用程序 我将其放置在测试服务器上 该服务器的设置不受我的公司控制 安全上下文也不受我的公司控制 我双击exe 应用程序运行 我看到我的表格 我关闭应用程序 打开任务管理器 但仍然看到应用程序的足迹 taskk
  • Node.js:获取客户端的IP

    req connection remoteAddress req headers x forwarded for req ip req ips 这一切意味着什么 有没有一种直接的方法可以简单地获取向我的 Node js Express 站点
  • python 将字符串解析为csv格式

    我有一个包含以下格式的行的文件 aaa A bbb B ccc C 我想将其转换为 csv 格式 以便方程两边的文字将是列 分号将作为行分隔符 我尝试做这样的事情 f open aaa txt r with open ccc csv w a
  • 表达式的不同编译器行为: auto p {make_pointer()};

    以下程序的正确行为是什么 example cpp include
  • Haskell Cabal:神秘的缺失或递归依赖关系

    我尝试安装jmacro包裹 它构建完美 绝对没有任何问题 但是 当我想使用它或安装类似的软件包时happstack jmacro 这取决于 jmacro 我收到如下错误消息
  • 如何让重力“底部”在 xml 中的可绘制对象上工作

    我有一个简单的目标 我想要我的 FrameLayout 上有一个浅灰色背景 下面有一条黑色分界线 仅在下面 而不是周围 到目前为止我有这个
  • System.getProperty("user.name") 返回 HOSTNAME 而不是当前记录的用户名

    Here System getProperty user name 返回 Windows Server 2008 计算机的主机名而不是当前登录的用户名 下面是我的代码 final String user System getProperty
  • PHP 删除另一个数组项(如果存在)[重复]

    这个问题在这里已经有答案了 我有 2 个对象数组 数组 A 和数组 B 如何检查数组 B 中的对象是否存在于数组 A 中 如果存在 则将其从数组 A 中删除 Example Array A id 1 name item1 id 2 name
  • 将 string 类型转换为 unsigned int 时出现故障

    我编写的 C 函数遇到了一个恼人的问题 该函数的目的是验证用户输入 该函数读取用户输入 验证它是否是数字 如果是 则验证它是否在 min max 范围内 当我使用无符号类型调用模板函数时 就会出现问题 例如size t 输入为负数 字符串流
  • 数组行为混乱[重复]

    这个问题在这里已经有答案了 在编码测试中 我最近遇到一个问题 要求我找出控制台中将打印什么内容 问题如下 我不明白下面的代码将如何被理解和执行 需要帮忙 var arr a b c d 1 2 3 console log arr 这个 ar
  • 如何开发像 Coffee Script 这样的编程语言?

    要开发像咖啡脚本这样的编程语言 我需要知道的初始要求是什么 它基本上有自己的语法 但在编译后会更改为另一种语言 我对此进行了谷歌搜索 但找不到正确的答案 使用基本语言指定您的语言形式语法 http en wikipedia org wiki