嗨,我正在为PowerShell开发ANTLR4语法,正在寻找PowerShell 5或更高版本的语言规范。
目前,语法基于Microsoft的Powershell 3规范文档(https://www.microsoft.com/en-us/download/details.aspx?id=36389)。
如果没有,我将非常感谢:
A)从版本3开始的任何规范,语法,解析规则或语言列表。
B)一组Powershell 5或6个示例,因此如果没有语言规范,我可以从那里推导出规则。
答案 0 :(得分:3)
PowerShell规范从V3开始就从未更新过,因此,您最好的资源是实际的PowerShell源(如果只有PowerShell的一种实现,那么它可以说是更好的资源)
语言规范中的大部分语法都是从PowerShell源代码中提取的。您可以通过搜索以//G
开头的注释来从源中提取语法,例如https://github.com/PowerShell/PowerShell/blob/037e12eddc850393d2538a26abad4a67e048a989/src/System.Management.Automation/engine/parser/Parser.cs#L766
请注意,此语法未涵盖如何标记化。令牌化是上下文相关的,在任何类型的BNF中都无法很好地捕获。语言规范是最有用的工作,但是可能不足以构建100%兼容的PowerShell解析器。
在某些地方,PowerShell的令牌化非常困难,希望可以访问源代码。