From 6c7c344d534e557debbdf85cefc09a360de4e159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=81=E5=86=9C=E5=B0=8F=E6=98=93?= <237972113@qq.com> Date: Mon, 16 Oct 2023 21:41:32 +0800 Subject: [PATCH] =?UTF-8?q?##=20[1.2.5]=20-=202023-10-16=20-=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20=E7=BB=A7=E6=89=BF=E5=8D=A0=E4=BD=8D=E7=AC=A6?= =?UTF-8?q?=E8=AF=AD=E6=B3=95=E8=A7=A3=E6=9E=90=E8=AF=AF=E6=8A=A5=20?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++ gradle.properties | 2 +- .../system/language/parse/LiteFlowParser.java | 52 ++++++++++++------- .../psi/LiteFlowLiteFlowAllExpress.java | 3 ++ ...va => LiteFlowLiteFlowPlaceHolderRef.java} | 5 +- .../LiteFlowLiteFlowPlaceHolderStatement.java | 2 +- ...eFlowLiteFlowPlaceholderAssignExpress.java | 16 ++++++ .../system/language/psi/LiteFlowTypes.java | 10 ++-- .../system/language/psi/LiteFlowVisitor.java | 6 ++- .../impl/LiteFlowLiteFlowAllExpressImpl.java | 6 +++ ...> LiteFlowLiteFlowPlaceHolderRefImpl.java} | 12 ++--- ...eFlowLiteFlowPlaceHolderStatementImpl.java | 4 +- ...wLiteFlowPlaceholderAssignExpressImpl.java | 42 +++++++++++++++ .../liteflowx/system/language/LiteFlow.bnf | 8 +-- 14 files changed, 128 insertions(+), 43 deletions(-) rename src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/{LiteFlowLiteFlowPlaceholderExpress.java => LiteFlowLiteFlowPlaceHolderRef.java} (67%) create mode 100644 src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderAssignExpress.java rename src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/{LiteFlowLiteFlowPlaceholderExpressImpl.java => LiteFlowLiteFlowPlaceHolderRefImpl.java} (71%) create mode 100644 src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderAssignExpressImpl.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d60d03..4dc905b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## [Unreleased] +## [1.2.5] - 2023-10-16 +- 修复 继承占位符语法解析误报 问题 + ## [1.2.4] - 2023-10-12 - 新增 支持.must() 关键词 - 新增 支持实验性版本的继承特性 diff --git a/gradle.properties b/gradle.properties index e650d97..77095bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ pluginGroup = top.xystudio.plugin.idea pluginName = LiteFlowX # SemVer format -> https://semver.org -pluginVersion = 1.2.4 +pluginVersion = 1.2.5 # See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html # for insight into build numbers and IntelliJ Platform versions. diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/parse/LiteFlowParser.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/parse/LiteFlowParser.java index 5762b54..3d3caee 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/parse/LiteFlowParser.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/parse/LiteFlowParser.java @@ -671,13 +671,14 @@ private static boolean ifStatement_8_0(PsiBuilder b, int l) { } /* ********************************************************** */ - // liteFlowConditionExpress | liteFlowNodeRefExpress + // liteFlowConditionExpress | liteFlowNodeRefExpress | liteFlowPlaceHolderRef public static boolean liteFlowAllExpress(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "liteFlowAllExpress")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, LITEFLOW_LITE_FLOW_ALL_EXPRESS, ""); r = liteFlowConditionExpress(b, l + 1); if (!r) r = liteFlowNodeRefExpress(b, l + 1); + if (!r) r = liteFlowPlaceHolderRef(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } @@ -1719,12 +1720,35 @@ public static boolean liteFlowParallelExpress(PsiBuilder b, int l) { } /* ********************************************************** */ - // liteFlowPlaceholderExpress SEMICOLON + // BRACE_LEFT (refExpress|number) BRACE_RIGHT + public static boolean liteFlowPlaceHolderRef(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "liteFlowPlaceHolderRef")) return false; + if (!nextTokenIs(b, LITEFLOW_BRACE_LEFT)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, LITEFLOW_BRACE_LEFT); + r = r && liteFlowPlaceHolderRef_1(b, l + 1); + r = r && consumeToken(b, LITEFLOW_BRACE_RIGHT); + exit_section_(b, m, LITEFLOW_LITE_FLOW_PLACE_HOLDER_REF, r); + return r; + } + + // refExpress|number + private static boolean liteFlowPlaceHolderRef_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "liteFlowPlaceHolderRef_1")) return false; + boolean r; + r = refExpress(b, l + 1); + if (!r) r = consumeToken(b, LITEFLOW_NUMBER); + return r; + } + + /* ********************************************************** */ + // liteFlowPlaceholderAssignExpress SEMICOLON public static boolean liteFlowPlaceHolderStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "liteFlowPlaceHolderStatement")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, LITEFLOW_LITE_FLOW_PLACE_HOLDER_STATEMENT, ""); - r = liteFlowPlaceholderExpress(b, l + 1); + r = liteFlowPlaceholderAssignExpress(b, l + 1); p = r; // pin = 1 r = r && consumeToken(b, LITEFLOW_SEMICOLON); exit_section_(b, l, m, r, p, LiteFlowParser::recover_liteFlowStatement); @@ -1732,26 +1756,16 @@ public static boolean liteFlowPlaceHolderStatement(PsiBuilder b, int l) { } /* ********************************************************** */ - // BRACE_LEFT (refExpress|number) BRACE_RIGHT ASSIGN liteFlowConditionExpress - public static boolean liteFlowPlaceholderExpress(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "liteFlowPlaceholderExpress")) return false; + // liteFlowPlaceHolderRef ASSIGN liteFlowConditionExpress + public static boolean liteFlowPlaceholderAssignExpress(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "liteFlowPlaceholderAssignExpress")) return false; if (!nextTokenIs(b, LITEFLOW_BRACE_LEFT)) return false; boolean r; Marker m = enter_section_(b); - r = consumeToken(b, LITEFLOW_BRACE_LEFT); - r = r && liteFlowPlaceholderExpress_1(b, l + 1); - r = r && consumeTokens(b, 0, LITEFLOW_BRACE_RIGHT, LITEFLOW_ASSIGN); + r = liteFlowPlaceHolderRef(b, l + 1); + r = r && consumeToken(b, LITEFLOW_ASSIGN); r = r && liteFlowConditionExpress(b, l + 1); - exit_section_(b, m, LITEFLOW_LITE_FLOW_PLACEHOLDER_EXPRESS, r); - return r; - } - - // refExpress|number - private static boolean liteFlowPlaceholderExpress_1(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "liteFlowPlaceholderExpress_1")) return false; - boolean r; - r = refExpress(b, l + 1); - if (!r) r = consumeToken(b, LITEFLOW_NUMBER); + exit_section_(b, m, LITEFLOW_LITE_FLOW_PLACEHOLDER_ASSIGN_EXPRESS, r); return r; } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowAllExpress.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowAllExpress.java index 168187d..bc5ec5d 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowAllExpress.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowAllExpress.java @@ -13,4 +13,7 @@ public interface LiteFlowLiteFlowAllExpress extends PsiElement { @Nullable LiteFlowLiteFlowNodeRefExpress getLiteFlowNodeRefExpress(); + @Nullable + LiteFlowLiteFlowPlaceHolderRef getLiteFlowPlaceHolderRef(); + } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderExpress.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderRef.java similarity index 67% rename from src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderExpress.java rename to src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderRef.java index b9f9b6b..9f87f6d 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderExpress.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderRef.java @@ -5,10 +5,7 @@ import org.jetbrains.annotations.*; import com.intellij.psi.PsiElement; -public interface LiteFlowLiteFlowPlaceholderExpress extends PsiElement { - - @NotNull - LiteFlowLiteFlowConditionExpress getLiteFlowConditionExpress(); +public interface LiteFlowLiteFlowPlaceHolderRef extends PsiElement { @Nullable LiteFlowRefExpress getRefExpress(); diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderStatement.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderStatement.java index 26bd22b..804d5ba 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderStatement.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceHolderStatement.java @@ -8,6 +8,6 @@ public interface LiteFlowLiteFlowPlaceHolderStatement extends PsiElement { @NotNull - LiteFlowLiteFlowPlaceholderExpress getLiteFlowPlaceholderExpress(); + LiteFlowLiteFlowPlaceholderAssignExpress getLiteFlowPlaceholderAssignExpress(); } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderAssignExpress.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderAssignExpress.java new file mode 100644 index 0000000..51123c4 --- /dev/null +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowLiteFlowPlaceholderAssignExpress.java @@ -0,0 +1,16 @@ +// This is a generated file. Not intended for manual editing. +package top.xystudio.plugin.idea.liteflowx.system.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface LiteFlowLiteFlowPlaceholderAssignExpress extends PsiElement { + + @NotNull + LiteFlowLiteFlowConditionExpress getLiteFlowConditionExpress(); + + @NotNull + LiteFlowLiteFlowPlaceHolderRef getLiteFlowPlaceHolderRef(); + +} diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowTypes.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowTypes.java index 7619255..c73b681 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowTypes.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowTypes.java @@ -57,7 +57,8 @@ public interface LiteFlowTypes { IElementType LITEFLOW_LITE_FLOW_NOT_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_NOT_EXPRESS"); IElementType LITEFLOW_LITE_FLOW_OR_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_OR_EXPRESS"); IElementType LITEFLOW_LITE_FLOW_PARALLEL_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PARALLEL_EXPRESS"); - IElementType LITEFLOW_LITE_FLOW_PLACEHOLDER_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PLACEHOLDER_EXPRESS"); + IElementType LITEFLOW_LITE_FLOW_PLACEHOLDER_ASSIGN_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PLACEHOLDER_ASSIGN_EXPRESS"); + IElementType LITEFLOW_LITE_FLOW_PLACE_HOLDER_REF = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PLACE_HOLDER_REF"); IElementType LITEFLOW_LITE_FLOW_PLACE_HOLDER_STATEMENT = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PLACE_HOLDER_STATEMENT"); IElementType LITEFLOW_LITE_FLOW_PRE_EXPRESS = new LiteFlowElementType("LITEFLOW_LITE_FLOW_PRE_EXPRESS"); IElementType LITEFLOW_LITE_FLOW_STATEMENT = new LiteFlowElementType("LITEFLOW_LITE_FLOW_STATEMENT"); @@ -333,8 +334,11 @@ else if (type == LITEFLOW_LITE_FLOW_OR_EXPRESS) { else if (type == LITEFLOW_LITE_FLOW_PARALLEL_EXPRESS) { return new LiteFlowLiteFlowParallelExpressImpl(node); } - else if (type == LITEFLOW_LITE_FLOW_PLACEHOLDER_EXPRESS) { - return new LiteFlowLiteFlowPlaceholderExpressImpl(node); + else if (type == LITEFLOW_LITE_FLOW_PLACEHOLDER_ASSIGN_EXPRESS) { + return new LiteFlowLiteFlowPlaceholderAssignExpressImpl(node); + } + else if (type == LITEFLOW_LITE_FLOW_PLACE_HOLDER_REF) { + return new LiteFlowLiteFlowPlaceHolderRefImpl(node); } else if (type == LITEFLOW_LITE_FLOW_PLACE_HOLDER_STATEMENT) { return new LiteFlowLiteFlowPlaceHolderStatementImpl(node); diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowVisitor.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowVisitor.java index d3434b6..aec26a6 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowVisitor.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/LiteFlowVisitor.java @@ -203,11 +203,15 @@ public void visitLiteFlowParallelExpress(@NotNull LiteFlowLiteFlowParallelExpres visitPsiElement(o); } + public void visitLiteFlowPlaceHolderRef(@NotNull LiteFlowLiteFlowPlaceHolderRef o) { + visitPsiElement(o); + } + public void visitLiteFlowPlaceHolderStatement(@NotNull LiteFlowLiteFlowPlaceHolderStatement o) { visitPsiElement(o); } - public void visitLiteFlowPlaceholderExpress(@NotNull LiteFlowLiteFlowPlaceholderExpress o) { + public void visitLiteFlowPlaceholderAssignExpress(@NotNull LiteFlowLiteFlowPlaceholderAssignExpress o) { visitPsiElement(o); } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowAllExpressImpl.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowAllExpressImpl.java index 7ca12d2..15e336e 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowAllExpressImpl.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowAllExpressImpl.java @@ -39,4 +39,10 @@ public LiteFlowLiteFlowNodeRefExpress getLiteFlowNodeRefExpress() { return findChildByClass(LiteFlowLiteFlowNodeRefExpress.class); } + @Override + @Nullable + public LiteFlowLiteFlowPlaceHolderRef getLiteFlowPlaceHolderRef() { + return findChildByClass(LiteFlowLiteFlowPlaceHolderRef.class); + } + } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderExpressImpl.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderRefImpl.java similarity index 71% rename from src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderExpressImpl.java rename to src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderRefImpl.java index 6cb15c6..94c61f6 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderExpressImpl.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderRefImpl.java @@ -11,14 +11,14 @@ import com.intellij.extapi.psi.ASTWrapperPsiElement; import top.xystudio.plugin.idea.liteflowx.system.language.psi.*; -public class LiteFlowLiteFlowPlaceholderExpressImpl extends ASTWrapperPsiElement implements LiteFlowLiteFlowPlaceholderExpress { +public class LiteFlowLiteFlowPlaceHolderRefImpl extends ASTWrapperPsiElement implements LiteFlowLiteFlowPlaceHolderRef { - public LiteFlowLiteFlowPlaceholderExpressImpl(@NotNull ASTNode node) { + public LiteFlowLiteFlowPlaceHolderRefImpl(@NotNull ASTNode node) { super(node); } public void accept(@NotNull LiteFlowVisitor visitor) { - visitor.visitLiteFlowPlaceholderExpress(this); + visitor.visitLiteFlowPlaceHolderRef(this); } @Override @@ -27,12 +27,6 @@ public void accept(@NotNull PsiElementVisitor visitor) { else super.accept(visitor); } - @Override - @NotNull - public LiteFlowLiteFlowConditionExpress getLiteFlowConditionExpress() { - return findNotNullChildByClass(LiteFlowLiteFlowConditionExpress.class); - } - @Override @Nullable public LiteFlowRefExpress getRefExpress() { diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderStatementImpl.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderStatementImpl.java index ac931b1..ba7266b 100644 --- a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderStatementImpl.java +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceHolderStatementImpl.java @@ -29,8 +29,8 @@ public void accept(@NotNull PsiElementVisitor visitor) { @Override @NotNull - public LiteFlowLiteFlowPlaceholderExpress getLiteFlowPlaceholderExpress() { - return findNotNullChildByClass(LiteFlowLiteFlowPlaceholderExpress.class); + public LiteFlowLiteFlowPlaceholderAssignExpress getLiteFlowPlaceholderAssignExpress() { + return findNotNullChildByClass(LiteFlowLiteFlowPlaceholderAssignExpress.class); } } diff --git a/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderAssignExpressImpl.java b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderAssignExpressImpl.java new file mode 100644 index 0000000..7393550 --- /dev/null +++ b/src/main/gen/top/xystudio/plugin/idea/liteflowx/system/language/psi/impl/LiteFlowLiteFlowPlaceholderAssignExpressImpl.java @@ -0,0 +1,42 @@ +// This is a generated file. Not intended for manual editing. +package top.xystudio.plugin.idea.liteflowx.system.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static top.xystudio.plugin.idea.liteflowx.system.language.psi.LiteFlowTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import top.xystudio.plugin.idea.liteflowx.system.language.psi.*; + +public class LiteFlowLiteFlowPlaceholderAssignExpressImpl extends ASTWrapperPsiElement implements LiteFlowLiteFlowPlaceholderAssignExpress { + + public LiteFlowLiteFlowPlaceholderAssignExpressImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull LiteFlowVisitor visitor) { + visitor.visitLiteFlowPlaceholderAssignExpress(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof LiteFlowVisitor) accept((LiteFlowVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public LiteFlowLiteFlowConditionExpress getLiteFlowConditionExpress() { + return findNotNullChildByClass(LiteFlowLiteFlowConditionExpress.class); + } + + @Override + @NotNull + public LiteFlowLiteFlowPlaceHolderRef getLiteFlowPlaceHolderRef() { + return findNotNullChildByClass(LiteFlowLiteFlowPlaceHolderRef.class); + } + +} diff --git a/src/main/java/top/xystudio/plugin/idea/liteflowx/system/language/LiteFlow.bnf b/src/main/java/top/xystudio/plugin/idea/liteflowx/system/language/LiteFlow.bnf index 1734d1c..e2a169c 100644 --- a/src/main/java/top/xystudio/plugin/idea/liteflowx/system/language/LiteFlow.bnf +++ b/src/main/java/top/xystudio/plugin/idea/liteflowx/system/language/LiteFlow.bnf @@ -190,7 +190,7 @@ breakStatement ::= break SEMICOLON continueStatement ::= continue SEMICOLON opSelfStatement ::= opSelfExpress SEMICOLON liteFlowStatement ::= liteFlowConditionExpress SEMICOLON {pin=1 recoverWhile=recover_liteFlowStatement} -liteFlowPlaceHolderStatement ::= liteFlowPlaceholderExpress SEMICOLON {pin=1 recoverWhile=recover_liteFlowStatement} +liteFlowPlaceHolderStatement ::= liteFlowPlaceholderAssignExpress SEMICOLON {pin=1 recoverWhile=recover_liteFlowStatement} private recover_liteFlowStatement ::= !(SEMICOLON | liteFlowStatement | assignStatement | liteFlowPlaceHolderStatement | line_comment | block_comment | fnInvokeStatement) /** Statement Start **/ @@ -238,10 +238,10 @@ fnInvokeExpress ::= refExpress fnParamExpress fnParamExpress ::= {PAREN_LEFT [allExpress {COMMA (allExpress|op)}*] PAREN_RIGHT}+ // LiteFlow 占位符表达式 -liteFlowPlaceholderExpress ::= BRACE_LEFT (refExpress|number) BRACE_RIGHT ASSIGN liteFlowConditionExpress +liteFlowPlaceholderAssignExpress ::= liteFlowPlaceHolderRef ASSIGN liteFlowConditionExpress // LiteFlow 通用表达式 -liteFlowAllExpress ::= liteFlowConditionExpress | liteFlowNodeRefExpress +liteFlowAllExpress ::= liteFlowConditionExpress | liteFlowNodeRefExpress | liteFlowPlaceHolderRef // LiteFlow 全部逻辑表达式 liteFlowAllLogicExpress ::= liteFlowAndExpress | liteFlowOrExpress | liteFlowNotExpress @@ -356,6 +356,8 @@ liteFlowParallelExpress ::= parallel PAREN_LEFT boolean PAREN_RIGHT {pin=1} // Ref +liteFlowPlaceHolderRef ::= BRACE_LEFT (refExpress|number) BRACE_RIGHT + liteFlowNodeStringRef ::= string liteFlowNodeRef ::= identifier