On 05/28/2013 09:45 AM, Citizen Kant wrote:
<SNIP>
I'm trying to figure out the rules on how to recognize when a combination
of symbols is considered a well formed expression in Python. Since I
couldn't find any doc that lists all Python syntax rules --or maybe the doc
is too long to be managed by me right now--, stating all kinds of legal
combination among its symbols, I had this idea that well formed expressions
must respond to truth tables. I think I'm not pretty much interested on how
each symbol like 9 or Z or + come to be truth (maybe I'm wrong) but in the
truth of their combinations. Do I am in the correct path? Understanding the
truth tables (which I'm not very familiarized with) would help me on
writing Python in a more intuitive way?
Read the first 3 pages of the link Walter sent you:
http://homepage.divms.uiowa.edu/~sriram/16/spring12/lectureNotes/Feb8-2012.pdf
Then tell us what didn't you understand. It's quite informal, and maybe
not quite complete. But it covers most of the grammar informally.
When an expression is not well-formed, you'll get a syntax error, which
happens at compile time.
Later parts of the pdf are describing evaluation, which doesn't happen
till the code runs. These are two distinct phases, even if much of your
code may be running immediately after compiling. It's at evaluation
time that you MAY be interested in truth tables. And then only if parts
of the expression are boolean. There's no truth-table involvement in
deciding the result of 12+3*4, but there is operator precedence, covered
in the above pdf file.
The full grammar, in BNF, can be found at:
http://docs.python.org/2/reference/grammar.html
Notice there's lots more to the language than expressions. And that
reading BNF is difficult without training. It's a language, also, one
that's used for describing the syntax of computer languages. And some
language constructs end up with a very confusing BNF.
I'm still bothered that all your symbol examples are single-character.
But a symbol is 1 OR MORE characters, with certain restrictions on what
they can be. And the first phase of compilation is to tokenize the
source code. For a simple language, that might be splitting the text by
white space. In Python, there are other rules applied for tokenizing.
For example, in an expression, a * symbol that doesn't have another one
immediately next to it is a multiply operator. But if there are two,
it's the exponentiation operator.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor