`
izuoyan
  • 浏览: 9231569 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

学习编译理论,实现DSL

阅读更多

准备为FMF实现一个脚本插件,可以通过编写脚本的方式来实现各种分形组件。以前做过一个,用的是Microsoft Script Control结合javascript,但速度慢得让人无法接受。由于分形是计算密集型的,打算实现一个嵌入式的DSL (Domain-Specific Language)。以前从来没有接触过这方面的内容,上学的时候也没有学过相关的课程,对程序语言和编译理论的了解几乎为零。要是大学的时候上的是计算机系就好了,至少上过编译原理的课也会好些啊。

在网上查了一些相关的资料,据说LEX和YACC可以用产生式规则自动构造编译程序。昨天去书店买了本编译原理的书,晚上边看电视边看书,大体上明白了编译的一些基本内容。我想万事都是从简单的开始吧,先做一个简陋的版本出来,然后慢慢的重构。LEX和YACC就不用了,还是自己写代码吧。哎,并不是我不想偷懒,而是希望从这次DSL的实现中学到一些东西。

先把词法分析器做出来,这个还是比较简单的。然后用最简单的递归下降做语法分析,想直接在语法树上运行脚本程序而不是生成目标代码,不知道可行不。


本文属Span Zhang(张友邦)原创,转载请注明出处。

中国原创分形艺术、中国原创分形软件第一站

分享到:
评论

相关推荐

    学习 iOS 编译原理能做哪些有意思的事情.pdf

    例如,当我们使用Swift语言编写应用程序时,学习编译原理能够让我们知道这段代码是如何被转化为可执行文件的。编译器在编译过程中大致包括词法分析(Lexer)、语法分析(Parser)、生成抽象语法树(AST)、语义分析以及...

    Visual Studio DSL Tools 教材

    8. **验证与一致性检查** - 实现DSL的静态验证机制,确保模型的正确性和一致性。 9. **部署与发布** - 将DSL解决方案打包并部署给其他开发者,以及创建VSIX安装包的步骤。 10. **案例研究** - 分析实际项目中的DSL...

    编译原理课件

    学习编译原理,我们可以了解到如何设计和实现一个高效的编译器。这不仅可以用于优化现有的编程语言,也可以创建新的编程语言,满足特定的需求。例如,通过理解编译原理,我们可以优化编译器对特定硬件的优化,使得...

    Language Implementation Patterns

    《语言实现模式》一书由ANTLR的作者Terence Parr撰写,被誉为学习编译技术的最佳入门书籍。本书不仅深入浅出地介绍了如何使用现代工具和技术设计和实现解析器、翻译器、解释器以及其他语言应用程序,还提供了丰富的...

    C++模板元编程技术与应用

    主要思想强调了模板元编程的核心:通过模板特化实现编译期的条件选择,以及递归模板实现编译期循环。在这个过程中,编译器扮演了解释元程序的角色,生成的代码只包含编译期确定的常量。 静态语言设施部分指出,模板...

    优秀资料(2021-2022年收藏)如何学习单片机基于ARM平台..doc

    举例来说,早期的X86架构计算机需要额外的芯片来实现串口功能,而现代的ARM平台如Intel的IXP网络处理器则在CPU内部集成了PCI控制器、网络处理器引擎等,甚至支持高速网络接口和DSL功能。软件层面,嵌入式系统通常会...

    编程语言实现模式(Language Implementation Patterns)

    - **计算机科学学生**:正在学习编程语言理论的学生,希望将理论知识应用于实际项目。 #### 六、结论 《编程语言实现模式》是一本全面介绍如何构建语言应用的重要参考书。它不仅涵盖了从基础到高级的各种技术和...

    一些学习Kotlin编程语言的资源.zip

    Kotlin是一种现代、静态类型的编程语言,主要针对Java虚拟机(JVM)设计,同时也支持JavaScript和原生代码编译。由JetBrains公司开发,它以其简洁、安全和互操作性而受到开发者们的广泛欢迎。Kotlin在Android开发中...

    groovy in action_中文

    通过学习《Groovy in Action_中文》,开发者可以更熟练地编写Gradle构建脚本,实现自动化任务,如依赖管理、版本控制和自定义构建逻辑。 3. **Gradle插件开发**:Groovy的灵活性使得开发Gradle插件变得简单,这些...

    xtext-fsml:FSM 语言的 XText 实现

    学习Xtext-FSML不仅可以提升你在DSL设计和实现上的技能,还能帮助你理解和应用有限状态机理论,对于软件开发尤其是游戏开发、嵌入式系统和网络协议等领域具有极大的价值。通过实践这个项目,你可以掌握一种强大的...

    english_Manning.Groovy.in.Action-p694.rar

    7. **AST转换**: Groovy的抽象语法树(AST)转换允许开发者在编译阶段修改源代码,实现自定义的语法糖,增强了语言的表达力。 8. **Groovy Scripting**: Groovy可以用于编写脚本,这些脚本可以直接在JVM上运行,...

    groovy。。。。。。。。。。。。。。

    Groovy在Java生态系统中扮演着重要角色,尤其在构建脚本、自动化任务、领域特定语言(DSL)以及Spring框架的扩展中广泛应用。 在“Groovy经典入门.pdf”这本书中,你可能会学到以下关键知识点: 1. **Groovy基础语法...

    一个用c编写的基于h263的视频压缩解压代码.rar

    在IT行业中,视频压缩与解压是至关重要的...通过这个项目,学习者可以深入了解视频编码理论、C语言编程实践以及软件工程中的模块化设计。同时,它也提供了一个实战平台,帮助开发者提升在低带宽环境下的视频处理能力。

    RBNF.jl:用于现代解析的DSL

    RBNF.jl 是一个专为 Julia 语言设计的解析器生成器,它基于规则为基础的语法(Rule-Based Notation Formalism),提供了一种高效且易用的方式来定义和实现语言的解析。在软件开发中,解析器是将源代码转换为可执行或...

    yacc从入门到精通

    1. **基础理论**:理解编译原理中的上下文无关文法和LR解析。 2. **实践操作**:编写简单的.y文件,逐步增加复杂性。 3. **错误处理**:掌握如何调试和解决yacc生成的解析表中的冲突。 4. **高级技巧**:学习使用...

Global site tag (gtag.js) - Google Analytics