增加注释

This commit is contained in:
Luke 2025-04-28 14:13:07 +08:00
parent 92932bb90d
commit 0e8d97bcf3

View File

@ -1,38 +0,0 @@
package org.jcnc.snow.compiler.parser.statement;
import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.factory.StatementParserFactory;
import java.util.ArrayList;
import java.util.List;
public class BlockStatementParser {
public List<StatementNode> parse(ParserContext ctx, String endKeyword, String endSubKeyword) {
List<StatementNode> statements = new ArrayList<>();
while (!isAtEnd(ctx, endKeyword, endSubKeyword)) {
Token token = ctx.getTokens().peek();
String keyword = (token.getType() == TokenType.KEYWORD) ? token.getLexeme() : "";
StatementParser parser = StatementParserFactory.get(keyword);
statements.add(parser.parse(ctx));
}
return statements;
}
private boolean isAtEnd(ParserContext ctx, String kw1, String kw2) {
if (ctx.getTokens().isAtEnd()) return true;
Token t1 = ctx.getTokens().peek();
Token t2 = ctx.getTokens().peek(1);
return t1.getType() == TokenType.KEYWORD &&
t1.getLexeme().equals(kw1) &&
t2 != null &&
t2.getType() == TokenType.KEYWORD &&
t2.getLexeme().equals(kw2);
}
}