Skip to content

Commit

Permalink
条件式の直後にコメントがあった場合にパースが失敗するのを修正。
Browse files Browse the repository at this point in the history
  • Loading branch information
Tatakinov committed Sep 20, 2022
1 parent 132ec56 commit 5a51a53
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions yayalint.lua
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,8 @@ local ScopeCaseOthers = Lpeg.V("scopecaseothers")
local ScopeSwitch = Lpeg.V("scopeswitch")
--local OneLineExpression = Expression * (Space ^ 0 * Lpeg.P(";") * Space ^ 0 * Expression) ^ 0
local OneLineExpression = ScopeInner
local Condition = Lpeg.Ct(((Expression) + (Lpeg.P("(") * Expression * Lpeg.P(")"))) * (Space ^ 0 * Comment1) ^ -1)
local Condition = Lpeg.Ct((Expression + (Lpeg.P("(") * Expression * Lpeg.P(")"))))
local ScopeControl = Lpeg.Ct((Space + Sep + Sep2) ^ 0 * Scope1) + Lpeg.Ct(Lpeg.Ct((Space ^ 0 * (Sep + Sep2)) ^ 1 * Space ^ 0 * OneLineExpression * (Sep + Sep2) ^ 0))
local ScopeTbl = {
scope1 = Lpeg.Ct((Lpeg.Cg(Alternative, "alter") * SepEx ^ 0 * Lpeg.P(":") * SepEx ^ 0) ^ -1 * Scope2),
scope2 = ScopeBegin * Lpeg.Ct(ScopeInner ^ 0) * (SepEx + Sep2) ^ 0 * ScopeEnd,
Expand All @@ -257,10 +258,10 @@ local ScopeTbl = {
+ Empty) * (SepEx + Sep2) ^ 0),
scopeparallel = Lpeg.Ct((Lpeg.P("parallel") + Lpeg.P("void")) * SepEx ^ 1 * Lpeg.Cg(Lpeg.Ct(Expression), "parallel")),
scopeif = ScopeIfIf * ((SepEx + Sep2) ^ 0 * ScopeIfElseIf) ^ 0 * ((SepEx + Sep2) ^ 0 * ScopeIfElse) ^ -1,
scopeifif = Lpeg.Ct(Space ^ 0 * Lpeg.P("if") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * Space ^ 0 * Lpeg.Cg((SepEx + Sep2) ^ 0 * Scope1 + Lpeg.Ct(Lpeg.Ct(Space ^ 0 * ((Space ^ 0 * Comment1) + Sep + Sep2) ^ 1 * Space ^ 0 * OneLineExpression * (Sep + Sep2) ^ 0)), "scope_if")),
scopeifelseif = Lpeg.Ct(Space ^ 0 * Lpeg.P("elseif") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * Lpeg.Cg(SepEx ^ 0 * Scope1 + Lpeg.Ct(Lpeg.Ct(Space ^ 0 * ((Space ^ 0 * Comment1) + Sep + Sep2) ^ 1 * Space ^ 0 * OneLineExpression)), "scope_elseif")),
scopeifif = Lpeg.Ct(Space ^ 0 * Lpeg.P("if") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * Lpeg.Cg(ScopeControl, "scope_if")),
scopeifelseif = Lpeg.Ct(Space ^ 0 * Lpeg.P("elseif") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * Lpeg.Cg(ScopeControl, "scope_elseif")),
scopeifelse = Lpeg.Ct(Space ^ 0 * Lpeg.P("else") * Lpeg.Cg(Lpeg.Ct(Lpeg.Ct(Space ^ 0 * ((Space ^ 0 * Comment1) + Sep + Sep2) ^ 1 * Space ^ 0 * OneLineExpression)) + (SepEx + Sep2) ^ 0 * Scope1, "scope_else")),
scopewhile = Lpeg.Ct(Space ^ 0 * Lpeg.P("while") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * (SepEx + Sep2) ^ 0 * Lpeg.Cg(Scope1 + Lpeg.Ct(Lpeg.Ct(OneLineExpression)), "scope_while")),
scopewhile = Lpeg.Ct(Space ^ 0 * Lpeg.P("while") * Space ^ 0 * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Condition, "condition") * (SepEx + Sep2) ^ 0 * Lpeg.Cg(ScopeControl, "scope_while")),
scopefor = Lpeg.Ct(Space ^ 0 * Lpeg.P("for") * Lpeg.Cg(Lpeg.Cp(), "pos") * Lpeg.Cg(Lpeg.Ct((Space ^ 1 * ForCondition) + (Space ^ 0 * Lpeg.P("(") * ForCondition * Lpeg.P(")"))), "condition") * (SepEx + Sep2) ^ 0 * Lpeg.Cg(Scope1 + Lpeg.Ct(Lpeg.Ct(OneLineExpression)), "scope_for")),
scopeforeach = Lpeg.Ct(Space ^ 0 * Lpeg.P("foreach") * Lpeg.Cg(Lpeg.Ct((Space ^ 1 * ForeachCondition) + (Space ^ 0 * Lpeg.P("(") * ForeachCondition * Lpeg.P(")"))), "condition") * SepEx ^ 0 * Lpeg.Cg(Scope1 + Lpeg.Ct(Lpeg.Ct(OneLineExpression)), "scope_foreach")),
scopecase = ScopeCaseCase,
Expand Down

0 comments on commit 5a51a53

Please sign in to comment.