BLCL的博客小馆

标签 · 编译器

首页

关于

归档

编译原理编译器虚拟机JVMANTLR4字节码

自己动手实现一个可以运行在JVM上的编程语言

众所周知,JVM虚拟机被设计为可以执行栈式指令的机器。因此任何一个语言只要编译之后得到的字节码符合JVM的标准,就可以在JVM上执行,例如Kotlin、Groovy、Scala、Clojure。我们自己设计一款语言,并命名为Jinx,它支持类定义、变量定义、变量打印。它的语法解析逻辑如下12345678910111213141516171819202122232425grammar Jinx;@header {package com.nosuchfield.jinx.code;}jinx: CLASS ID LEFT_BR classBody RIGHT_BR EOF;classBody: (variable | print)*;variable: VARIABLE ID EQUALS value;pri..

更多
词法分析语法分析编译原理编译器ANTLR

使用ANTLR4格式化JSON

JSON由对象和数组组成,对象是一个Key和Value的关系映射,数组则是由多个value组成。对象使用大括号{}表示,数组则使用中括号[]表示。因此我们可以得到对象和数组的表达式object: '{' '}' | '{' kv (',' kv)* '}';array: '[' ']' | '[' v (',' v)* ']';其中kv表示一个KeyValue的关系映射,多个KeyValue中间使用逗号,分割,一个对象可以不包含元素,或者包含一个或多个元素。v表示一个元素,数组的多个元素中间同样使用,分割,数组可以没有元素,也可以包含一个或多个元素。kv由key和value组成,key只需要是一个字符串就可以,而对象的value和数组的value一样,支持以下多种元素对象数组文本数字truefalsenu..

更多
loading..
词法分析语法分析编译原理编译器

ANTLR4从入门到实践

ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文档。它被广泛用于构建语言、工具和框架。ANTLR根据语法定义生成解析器,解析器可以构建和遍历解析树。安装以Linux系统为例,我们首先安装Java17~ java -versionjava version "17.0.6" 2023-01-17 LTSJava(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)随后我们下载antlr4的完整依..

更多