Python语法的铁路图
我正在寻找一种更好地掌握Python语法的方法。 我的经验是,学习语法可能会有帮助 Python文档以文本形式包含语法:Python语法的铁路图,python,Python,我正在寻找一种更好地掌握Python语法的方法。 我的经验是,学习语法可能会有帮助 Python文档以文本形式包含语法: https://docs.python.org/3/reference/grammar.html 但对于刚开始从事软件工程的人来说,这并不容易理解 谁有好的初学者资料 有一个我可能可以使用的语法,但我无法找到Python语法的EBNF语法,该语法将被该生成器接受。 链接到这样的语法也会很有帮助。要将位于的Python语法(例如)转换为EBNF,您基本上需要做三件事: 将所有
https://docs.python.org/3/reference/grammar.html
但对于刚开始从事软件工程的人来说,这并不容易理解
谁有好的初学者资料
有一个我可能可以使用的语法,但我无法找到Python语法的EBNF语法,该语法将被该生成器接受。
链接到这样的语法也会很有帮助。要将位于的Python语法(例如)转换为EBNF,您基本上需要做三件事:
#…
注释替换为/*…*/
(或删除它们)::=
而不是:
来定义生产规则(…)?
指示可选元素,而不是[…]
# The function statement
funcdef: 'def' NAME parameters ['->' test] ':' suite
你会用
/* The function statement */
funcdef ::= 'def' NAME parameters ('->' test)? ':' suite
这看起来像是XY问题。您不应该试图通过学习Python的形式结构作为形式语法来理解Python的语法。如果你想查一些专业,一定要看语法。但除此之外,您可能可以通过使用该语言更好地学习,甚至可以通过学习语句的语法或语言背后的思想来学习。将语言的语法定义为形式语法是一件非常抽象的事情。这就是它的本质。学习Python绝对不需要EBNF图。出于兴趣,我快速尝试了一下——它与铁路图生成器一起工作。(但可能不是一个完美的翻译。)@Stuart我也尝试过同样的事情。看起来不错,不过您想用
(arglist)
而不是(arglist)*
替换(arglist)
。一般来说,您只需要更改以下三件事:1)生产规则的:
到:=
,可选元素的[…]
到(…)?
,以及3)注释的#…
到/*/
。@Carsten在某种程度上同意。OP表示,他们希望更好地掌握Python语法,而不仅仅是Python,因此这是一个合法的问题(尽管是离题的,要求提供资源链接)。@chepner谢谢,是的,这里又是一个有趣的链接,已经做了一些: