FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Operator precedence
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Operator precedence [message #185017 is a reply to message #185015] Mon, 24 February 2014 12:00 Go to previous messageGo to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma:
Senior Member
On 2/23/2014 11:49 PM, Ben Bacarisse wrote:
> Jerry Stuckle <jstucklex(at)attglobal(dot)net> writes:
>
>> On 2/23/2014 6:36 PM, Richard Damon wrote:
>>> On 2/23/14, 4:34 PM, Jerry Stuckle wrote:
>>>> On 2/23/2014 2:42 PM, GS wrote:
>>>> > This shows one of the major problems with PHP: there is no formal
>>>> > language
>>>> > definition, you have to go by examples in the help file to intuit what is
>>>> > or is not valid. Where is the BNF definition of the language? There is
>>>> > none
>>>> > AFAICT.
>>>> >
>>>> Incorrect. There is a formal definition, as indicated in the doc at
>>>> www.php.net.
>>>>
>>> Do you have a pointer to where "expression" is precisely defined (other
>>> than reading code).
>>
>> Try any Introduction to Programming book. Documentation (not just
>> PHP) does not normally define commonly used terms.
>
> I don't think it's that clear cut. Expressions are built from
> operators, but is ',' an operator in PHP? It appears in the operator
> precedence table but it isn't an operator in an sense that would
> normally be understood by someone familiar with these terms.
>

It is an operator, as indicated by its appearance in the table of
operators. Operators are not limited to +-*/.

> <snip>
>>> That doesn't mean it isn't powerful, or useful, or the right tool to use
>>> in some places, but does say that it lacks some formal rigor.
>>
>> Once again, incorrect.
>>
>>> The lack of formal rigor says that there are some questions which just
>>> can't be answered by reading the language documentation.
>>
>> It can if you have a basic understanding of programming.
>
> Again, I don't think it's that simple. How would you determine if the
> following program is permitted and, if it is, what it does?
>
> if (false) label: else echo "else\n";
> goto label;
>
> You could try it, of course, but that's hardly very formal.
>

What language gives every possible way for you to screw up your
programming?

If you want to find out how some screwed-up code works in ANY language,
you try it and find out.

>>> The original question was a good example of this. the assignment
>>> operator is described as having a precedence (fairly low) just like all
>>> other operators, with some vague comments that it is done in a way that
>>> certain things just work. In comments on looking at the code, the left
>>> operand of assignment is a variable, and not an expression, effectively
>>> giving assignment a very high precedence to the left, and a very low
>>> precedence to the right (if the grammar even does end up being actually
>>> describable precisely with precedence). To my knowledge, this detail is
>>> NOT formally presented in the documentation.
>>
>> No, the original question shows a basic lack of knowledge of terms
>> used in programming. As does your argument.
>
> This puzzles me. What basic knowledge would have cleared up the
> original question?
>

The definition of "expression". It's something covered in our
"Introduction to Programming" course - which does not cover any
language, only the basic process.

> The assignment operators in PHP have, in effect, different precedences
> on the left and the right (a feature that some languages flaunt) but
> that is not common and certainly not part of what I'd call basic
> knowledge. The documentation gives one example of this peculiarity, but
> that does not clear the matter up conclusively. For example, in some
> languages permit assignment to the result of a conditional expression,
> but I think it's hard to tell from the documentation what these two do:
>
> $bool ? $a : $b = 42;
> ($bool ? $a : $b) = 42;
>

Show me what language provides you with examples of every possible
combination of operators and expressions.

> The operator precedence table suggests that both mean the same thing,
> but they don't. I don't think the meaning of either is easily
> determined from the documentation.
>
> <snip>
>

So you try it out, as you do in any language. But just because you can
come up with some weird combination of operators which isn't listed in
the doc does not mean the language is not rigorously defined.

But it does mean you are trolling.

--
==================
Remove the "x" from my email address
Jerry Stuckle
jstucklex(at)attglobal(dot)net
==================
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Correlating curl resources to some other object.
Next Topic: Experienced Web designer required
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Nov 24 02:52:31 GMT 2024

Total time taken to generate the page: 0.03838 seconds