增加注释
This commit is contained in:
parent
92932bb90d
commit
0e8d97bcf3
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user