Files
harbour-core/tests/parexpr.prg
vszakats 9687850865 2013-03-16 02:10 UTC+0100 Viktor Szakats (harbour syenar.net)
* (all files)
    * stripped svn header
    * minor cleanups
    ; use following command to find out the history of files:
       git log
       git log --follow
       git blame
       git annotate
2013-03-16 02:11:42 +01:00

92 lines
1.8 KiB
Plaintext

// The following code tests harbour's ability to cope with parenthesized
// expressions.
// These tests were written by Dave Pearson <davep@hagbard.demon.co.uk> and
// are placed into the public domain.
// This file is OK to have warnings.
#ifdef __HARBOUR__
#pragma -es0
#endif
PROCEDURE Main()
LOCAL x
LOCAL y
// Simple one to start with.
x := ( 1 )
? x
// Now with a little more complex:
x := ( 1, 2 )
? x
// And a little more, this is really the same as the previous one.
x := ( 1, 2, 3 )
? x
// Expression within expression
x := ( ( 1, 2, 3 ) )
? x
// And a little more:
x := ( ( 1, 2, 3 ), ( 1, 2, 3 ) )
? x
// Some inline assignments
x := ( y := 10, y )
? x
x := ( ( y := ( 1, 2, 3 ) ), y * ( 10, 20, 30 ) )
? x
// Now mix with statements and functions
? ( 1, 2, 3 )
IF ( y := .T. )
? "Working"
ELSE
? "Borken"
ENDIF
IF ( x := 10, y := ( x == 10 ) )
? "Working"
ELSE
? "Broken"
ENDIF
IF ( Something( 1, 2, 3 ), .T. )
? "Working"
ELSE
? "Broken"
ENDIF
?
// Now even some more testing of related code
// placed into public domain by Ryszard Glab
? IF( (.F.,0,.T.), ("some", "text", "IF Working"), ("some", "text", "Broken") )
? IF( (.T.,1,.F.), ("some", "text", "Broken"), ("some", "text", "IF Working") )
? IF( (.T. .OR. .F.), IF( .T., "Working", "Broken" ), IF( .F., "Broken", "Working" ) )
/* The following code should generate syntax error if uncommented
* because IF token followed by any three expressions is interpreted
* as IIF inline
*/
// IF( .T., .F., .T. )
// ? "Working"
// ELSE
// ? "Broken"
// ENDIF
RETURN
STATIC FUNCTION Something( x, y, z )
// This does something and it does it well/
Return( NIL )