refactor: 重构关键字

This commit is contained in:
zhangxun 2025-08-04 14:49:39 +08:00
parent d54a2c59b6
commit 87560db20d
2 changed files with 13 additions and 13 deletions

View File

@ -26,7 +26,7 @@ public class TokenFactory {
* 语言的保留关键字集合 * 语言的保留关键字集合
*/ */
private static final Set<String> KEYWORDS = Set.of private static final Set<String> KEYWORDS = Set.of
("module", "function", "parameter", "return_type", "body", "end", ("module", "function", "params", "returns", "body", "end",
"if", "then", "else", "loop", "declare", "return", "import", "init", "if", "then", "else", "loop", "declare", "return", "import", "init",
"cond", "step", "globals", "break", "continue"); "cond", "step", "globals", "break", "continue");

View File

@ -27,8 +27,8 @@ import java.util.*;
* *
* <ul> * <ul>
* <li>函数头关键字 {@code function:} 与函数名</li> * <li>函数头关键字 {@code function:} 与函数名</li>
* <li>参数列表parameter 区块</li> * <li>参数列表params 区块</li>
* <li>返回类型return_type 区块</li> * <li>返回类型returns 区块</li>
* <li>函数体body 区块</li> * <li>函数体body 区块</li>
* <li>函数结束关键字 {@code end function}</li> * <li>函数结束关键字 {@code end function}</li>
* </ul> * </ul>
@ -107,7 +107,7 @@ public class FunctionParser implements TopLevelParser {
} }
/** /**
* 构造函数定义中各区块的解析规则parameterreturn_typebody * 构造函数定义中各区块的解析规则paramsreturnsbody
* *
* <p> * <p>
* 每个 {@link SectionDefinition} 包含两个部分: 区块起始判断器基于关键字与具体的解析逻辑 * 每个 {@link SectionDefinition} 包含两个部分: 区块起始判断器基于关键字与具体的解析逻辑
@ -124,13 +124,13 @@ public class FunctionParser implements TopLevelParser {
List<StatementNode> body) { List<StatementNode> body) {
Map<String, SectionDefinition> map = new HashMap<>(); Map<String, SectionDefinition> map = new HashMap<>();
map.put("parameter", new SectionDefinition( map.put("params", new SectionDefinition(
(TokenStream stream) -> stream.peek().getLexeme().equals("parameter"), (TokenStream stream) -> stream.peek().getLexeme().equals("params"),
(ParserContext context, TokenStream stream) -> params.addAll(parseParameters(context)) (ParserContext context, TokenStream stream) -> params.addAll(parseParameters(context))
)); ));
map.put("return_type", new SectionDefinition( map.put("returns", new SectionDefinition(
(TokenStream stream) -> stream.peek().getLexeme().equals("return_type"), (TokenStream stream) -> stream.peek().getLexeme().equals("returns"),
(ParserContext context, TokenStream stream) -> returnType[0] = parseReturnType(stream) (ParserContext context, TokenStream stream) -> returnType[0] = parseReturnType(stream)
)); ));
@ -182,7 +182,7 @@ public class FunctionParser implements TopLevelParser {
* <p> * <p>
* 支持声明后附加注释格式示例: * 支持声明后附加注释格式示例:
* <pre> * <pre>
* parameter: * params:
* declare x: int // 说明文字 * declare x: int // 说明文字
* declare y: float * declare y: float
* </pre> * </pre>
@ -194,7 +194,7 @@ public class FunctionParser implements TopLevelParser {
private List<ParameterNode> parseParameters(ParserContext ctx) { private List<ParameterNode> parseParameters(ParserContext ctx) {
TokenStream ts = ctx.getTokens(); TokenStream ts = ctx.getTokens();
ts.expect("parameter"); ts.expect("params");
ts.expect(":"); ts.expect(":");
skipComments(ts); skipComments(ts);
ts.expectType(TokenType.NEWLINE); ts.expectType(TokenType.NEWLINE);
@ -208,7 +208,7 @@ public class FunctionParser implements TopLevelParser {
continue; continue;
} }
String lex = ts.peek().getLexeme(); String lex = ts.peek().getLexeme();
if (lex.equals("return_type") || lex.equals("body") || lex.equals("end")) { if (lex.equals("returns") || lex.equals("body") || lex.equals("end")) {
break; break;
} }
@ -232,14 +232,14 @@ public class FunctionParser implements TopLevelParser {
* 解析返回类型声明 * 解析返回类型声明
* *
* <p> * <p>
* 格式为 {@code return_type: TYPE}支持前置或行尾注释 * 格式为 {@code returns: TYPE}支持前置或行尾注释
* </p> * </p>
* *
* @param ts 当前使用的 {@link TokenStream} * @param ts 当前使用的 {@link TokenStream}
* @return 返回类型名称字符串 * @return 返回类型名称字符串
*/ */
private String parseReturnType(TokenStream ts) { private String parseReturnType(TokenStream ts) {
ts.expect("return_type"); ts.expect("returns");
ts.expect(":"); ts.expect(":");
skipComments(ts); skipComments(ts);
Token typeToken = ts.expectType(TokenType.TYPE); Token typeToken = ts.expectType(TokenType.TYPE);