修改项目结构

This commit is contained in:
Luke 2025-04-27 11:17:57 +08:00
parent 60eaedb6b0
commit f7219ea1fa
43 changed files with 71 additions and 27 deletions

View File

@ -5,7 +5,7 @@ import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.utils.TokenPrinter; import org.jcnc.snow.compiler.lexer.utils.TokenPrinter;
import org.jcnc.snow.compiler.parser.ParserEngine; import org.jcnc.snow.compiler.parser.ParserEngine;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.ast.Node; import org.jcnc.snow.compiler.parser.ast.base.Node;
import org.jcnc.snow.compiler.parser.function.ASTPrinter; import org.jcnc.snow.compiler.parser.function.ASTPrinter;
import org.jcnc.snow.compiler.parser.util.ASTJsonSerializer; import org.jcnc.snow.compiler.parser.util.ASTJsonSerializer;
import org.jcnc.snow.compiler.parser.util.JsonFormatter; import org.jcnc.snow.compiler.parser.util.JsonFormatter;

View File

@ -4,7 +4,7 @@ import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.context.TokenStream; import org.jcnc.snow.compiler.parser.context.TokenStream;
import org.jcnc.snow.compiler.parser.factory.TopLevelParserFactory; import org.jcnc.snow.compiler.parser.factory.TopLevelParserFactory;
import org.jcnc.snow.compiler.parser.ast.Node; import org.jcnc.snow.compiler.parser.ast.base.Node;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,6 @@
package org.jcnc.snow.compiler.parser; package org.jcnc.snow.compiler.parser;
import org.jcnc.snow.compiler.parser.ast.Node; import org.jcnc.snow.compiler.parser.ast.base.Node;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
/** /**
* 表示赋值语句的 AST抽象语法树节点例如 {@code x = expr} * 表示赋值语句的 AST抽象语法树节点例如 {@code x = expr}
* *

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
/** /**
* 表示二元运算表达式的 AST 节点例如 {@code a + b} * 表示二元运算表达式的 AST 节点例如 {@code a + b}
* 该节点包含一个左操作数一个操作符字符串和一个右操作数 * 该节点包含一个左操作数一个操作符字符串和一个右操作数

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import java.util.List; import java.util.List;
/** /**

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.Optional; import java.util.Optional;
/** /**

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
/** /**
* 表示一条独立的表达式语句例如 {@code foo();} {@code x = 1;} * 表示一条独立的表达式语句例如 {@code foo();} {@code x = 1;}
* 该节点将一个表达式作为语句出现 * 该节点将一个表达式作为语句出现

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.Node;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.List; import java.util.List;
/** /**

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
/** /**
* 表示标识符的表达式节点例如变量名 {@code x}函数名 {@code foo} * 表示标识符的表达式节点例如变量名 {@code x}函数名 {@code foo}
* *

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.List; import java.util.List;
/** /**

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.Node;
/** /**
* 表示 import 语句的 AST 节点 * 表示 import 语句的 AST 节点
* 该节点仅包含被导入模块的名称 * 该节点仅包含被导入模块的名称

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.List; import java.util.List;
/** /**

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
/** /**
* 表示成员访问的表达式节点例如 {@code obj.prop} * 表示成员访问的表达式节点例如 {@code obj.prop}
* 包含一个对象表达式和成员名称 * 包含一个对象表达式和成员名称

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.Node;
import java.util.List; import java.util.List;
import java.util.StringJoiner; import java.util.StringJoiner;

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
/** /**
* 表示数字字面量的表达式节点例如 {@code 42} {@code 3.14} * 表示数字字面量的表达式节点例如 {@code 42} {@code 3.14}
* 该节点直接保存字面量的字符串形式便于统一处理整数和浮点数 * 该节点直接保存字面量的字符串形式便于统一处理整数和浮点数

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.Node;
/** /**
* 表示函数参数的 AST 节点包含参数名称和类型 * 表示函数参数的 AST 节点包含参数名称和类型
* 示例 {@code int add(int a, int b)} {@code a:int} {@code b:int} 都是参数节点 * 示例 {@code int add(int a, int b)} {@code a:int} {@code b:int} 都是参数节点

View File

@ -1,5 +1,8 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.Optional; import java.util.Optional;
/** /**

View File

@ -1,5 +1,7 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
/** /**
* 表示字符串字面量的表达式节点例如 {@code "hello"} * 表示字符串字面量的表达式节点例如 {@code "hello"}
* 字面量值不包含引号仅在打印时添加 * 字面量值不包含引号仅在打印时添加

View File

@ -1,4 +1,4 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast.base;
/** /**
* 表示抽象语法树中的表达式节点类型 * 表示抽象语法树中的表达式节点类型

View File

@ -1,4 +1,4 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast.base;
/** /**
* 所有抽象语法树AST节点的标记接口 * 所有抽象语法树AST节点的标记接口

View File

@ -1,4 +1,4 @@
package org.jcnc.snow.compiler.parser.ast; package org.jcnc.snow.compiler.parser.ast.base;
/** /**
* 表示语法树中的语句节点类型 * 表示语法树中的语句节点类型

View File

@ -1,7 +1,7 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.parser.ast.BinaryExpressionNode; import org.jcnc.snow.compiler.parser.ast.BinaryExpressionNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;

View File

@ -1,7 +1,7 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.parser.ast.CallExpressionNode; import org.jcnc.snow.compiler.parser.ast.CallExpressionNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,6 +1,6 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -1,7 +1,7 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.parser.ast.IdentifierNode; import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -1,6 +1,6 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.MemberExpressionNode; import org.jcnc.snow.compiler.parser.ast.MemberExpressionNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.context.TokenStream; import org.jcnc.snow.compiler.parser.context.TokenStream;

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.parser.ast.NumberLiteralNode; import org.jcnc.snow.compiler.parser.ast.NumberLiteralNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
/** /**

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import java.util.HashMap; import java.util.HashMap;

View File

@ -1,6 +1,6 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;

View File

@ -1,7 +1,7 @@
package org.jcnc.snow.compiler.parser.expression; package org.jcnc.snow.compiler.parser.expression;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.StringLiteralNode; import org.jcnc.snow.compiler.parser.ast.StringLiteralNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;

View File

@ -1,6 +1,9 @@
package org.jcnc.snow.compiler.parser.function; package org.jcnc.snow.compiler.parser.function;
import org.jcnc.snow.compiler.parser.ast.*; import org.jcnc.snow.compiler.parser.ast.*;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.Node;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import java.util.List; import java.util.List;

View File

@ -4,7 +4,7 @@ import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.TopLevelParser; import org.jcnc.snow.compiler.parser.TopLevelParser;
import org.jcnc.snow.compiler.parser.ast.FunctionNode; import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.ParameterNode; import org.jcnc.snow.compiler.parser.ast.ParameterNode;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.context.TokenStream; import org.jcnc.snow.compiler.parser.context.TokenStream;
import org.jcnc.snow.compiler.parser.factory.StatementParserFactory; import org.jcnc.snow.compiler.parser.factory.StatementParserFactory;

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.factory.StatementParserFactory; import org.jcnc.snow.compiler.parser.factory.StatementParserFactory;

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.DeclarationNode; import org.jcnc.snow.compiler.parser.ast.DeclarationNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser; import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser;

View File

@ -2,9 +2,9 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.AssignmentNode; import org.jcnc.snow.compiler.parser.ast.AssignmentNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionStatementNode; import org.jcnc.snow.compiler.parser.ast.ExpressionStatementNode;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.context.TokenStream; import org.jcnc.snow.compiler.parser.context.TokenStream;
import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser; import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser;

View File

@ -3,7 +3,7 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.IfNode; import org.jcnc.snow.compiler.parser.ast.IfNode;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser; import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser;
import org.jcnc.snow.compiler.parser.factory.StatementParserFactory; import org.jcnc.snow.compiler.parser.factory.StatementParserFactory;

View File

@ -2,9 +2,9 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.AssignmentNode; import org.jcnc.snow.compiler.parser.ast.AssignmentNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.LoopNode; import org.jcnc.snow.compiler.parser.ast.LoopNode;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.context.TokenStream; import org.jcnc.snow.compiler.parser.context.TokenStream;
import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser; import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser;

View File

@ -2,7 +2,7 @@ package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.TokenType; import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.ReturnNode; import org.jcnc.snow.compiler.parser.ast.ReturnNode;
import org.jcnc.snow.compiler.parser.ast.ExpressionNode; import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser; import org.jcnc.snow.compiler.parser.expression.PrattExpressionParser;

View File

@ -1,7 +1,7 @@
package org.jcnc.snow.compiler.parser.statement; package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.ast.StatementNode; import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
/** /**
* 语句解析器接口用于将解析上下文中的 Token 转换为 {@link StatementNode} * 语句解析器接口用于将解析上下文中的 Token 转换为 {@link StatementNode}

View File

@ -1,6 +1,8 @@
package org.jcnc.snow.compiler.parser.util; package org.jcnc.snow.compiler.parser.util;
import org.jcnc.snow.compiler.parser.ast.*; import org.jcnc.snow.compiler.parser.ast.*;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.Node;
import java.util.List; import java.util.List;