增加数据类型

This commit is contained in:
Luke 2025-04-28 14:33:54 +08:00
parent f970392389
commit 379d1adfc7
3 changed files with 28 additions and 15 deletions

View File

@ -32,6 +32,11 @@ public class SemanticAnalyzer {
*/ */
public static final Map<String, Type> BUILTIN_TYPES = Map.of( public static final Map<String, Type> BUILTIN_TYPES = Map.of(
"int", BuiltinType.INT, "int", BuiltinType.INT,
"long", BuiltinType.LONG,
"short", BuiltinType.SHORT,
"byte", BuiltinType.BYTE,
"float", BuiltinType.FLOAT,
"double", BuiltinType.DOUBLE,
"string", BuiltinType.STRING, "string", BuiltinType.STRING,
"void", BuiltinType.VOID "void", BuiltinType.VOID
); );

View File

@ -1,31 +1,39 @@
package org.jcnc.snow.compiler.semantic.type; package org.jcnc.snow.compiler.semantic.type;
/** /**
* 内置基础类型枚举定义编译器中最基本的三种类型 * 内置基础类型枚举定义编译器中常见的基础类型
* <p> * <p>
* 枚举值 * 枚举值
* <ul> * <ul>
* <li>{@link #INT} 整数类型也可用于表示布尔值/</li> * <li>{@link #INT} 整数类型32 </li>
* <li>{@link #LONG} 长整数类型64 </li>
* <li>{@link #SHORT} 短整数类型16 </li>
* <li>{@link #BYTE} 字节类型8 </li>
* <li>{@link #FLOAT} 单精度浮点数</li>
* <li>{@link #DOUBLE} 双精度浮点数</li>
* <li>{@link #STRING} 字符串类型</li> * <li>{@link #STRING} 字符串类型</li>
* <li>{@link #VOID} 空类型用于表示无返回值的函数</li> * <li>{@link #VOID} 空类型用于表示无返回值的函数</li>
* </ul> * </ul>
* <p> * <p>
* 本枚举实现了 {@link Type} 接口提供了基本的类型兼容性判断和友好的字符串表示方法 * 本枚举实现了 {@link Type} 接口提供了基本的类型兼容性判断和
* 友好的字符串表示方法
*/ */
public enum BuiltinType implements Type { public enum BuiltinType implements Type {
/** /** 整数类型32 位) */
* 整数类型也可用于表示布尔值真假值
*/
INT, INT,
/** 长整数类型64 位) */
/** LONG,
* 字符串类型 /** 短整数类型16 位) */
*/ SHORT,
/** 字节类型8 位) */
BYTE,
/** 单精度浮点数 */
FLOAT,
/** 双精度浮点数 */
DOUBLE,
/** 字符串类型 */
STRING, STRING,
/** 空类型,通常用于无返回值的函数 */
/**
* 空类型通常用于无返回值的函数
*/
VOID; VOID;
/** /**

2
test
View File

@ -4,7 +4,7 @@ module: CommonTasks
return num1 + num2 return num1 + num2
end body end body
parameter: parameter:
declare num1: int declare num1: double
declare num2: int declare num2: int
return_type: int return_type: int
end function end function