Canon/Canon.Core/SyntaxNodes/VarDeclaration.cs
ichirinko b20c3234c5 feat:修改文法制导定义为S属性定义,以避免左递归 (#55)
Co-authored-by: jackfiled <xcrenchangjun@outlook.com>
Reviewed-on: PostGuard/Canon#55
Co-authored-by: ichirinko <1621543655@qq.com>
Co-committed-by: ichirinko <1621543655@qq.com>
2024-04-25 11:42:36 +08:00

48 lines
1.2 KiB
C#

using Canon.Core.Enums;
namespace Canon.Core.SyntaxNodes;
public class VarDeclaration : NonTerminatedSyntaxNode
{
public override NonTerminatorType Type => NonTerminatorType.VarDeclaration;
// public bool IsRecursive { get; private init; }
// /// <summary>
// /// 声明的变量
// /// </summary>
// public (IdentifierList, TypeSyntaxNode) Variable => GetVariable();
// private (IdentifierList, TypeSyntaxNode) GetVariable()
// {
// if (IsRecursive)
// {
// return (Children[2].Convert<IdentifierList>(), Children[4].Convert<TypeSyntaxNode>());
// }
// else
// {
// return (Children[0].Convert<IdentifierList>(), Children[2].Convert<TypeSyntaxNode>());
// }
// }
public static VarDeclaration Create(List<SyntaxNodeBase> children)
{
/*bool isRecursive;
if (children.Count == 2)
{
isRecursive = false;
}
else if (children.Count == 4)
{
isRecursive = true;
}
else
{
throw new InvalidOperationException();
}*/
return new VarDeclaration {Children = children};
}
}