增加注释
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