Proparse 10.2 syntax support

Proparse has not been updated since 10.1B, so both 10.1C and 10.2A new language features need to be added.

This page serves as a checklist and to encourage input.

List of language features which are new or changed:

Class-based data member access
Class-based method call
Class-based property access
Reserved keywords as class, method, property, and class variable names
Type-name syntax

ACTIVE-FORM
ACTIVE-WINDOW
BOX function
CATCH statement
CLASS statement
COMPILE statement
CONSTRUCTOR statement
CONSTRUCTOR statement
CURRENT-WINDOW
DEFAULT-WINDOW
DEFINE BUFFER statement
DEFINE DATA-SOURCE statement
DEFINE DATASET statement
DEFINE PARAMETER statement
DEFINE PROPERTY statement
DEFINE QUERY statement
DEFINE TEMP-TABLE statement
DEFINE VARIABLE statement
DO statement
DYNAMIC-CAST
DYNAMIC-NEW
EXTENT for properties and data members, subscript syntax for member reference
FINALLY statement
FOR statement
FUNCTION statement
GetClass method on Progress.Lang.Object.
INTERFACE
LIKE-SEQUENTIAL option
METHOD statement
METHOD statement
NEW as function/expression (class instantiation)
ON ENDKEY phrase
ON ERROR phrase
ON QUIT phrase
ON STOP phrase
ON phrase
OPEN QUERY BREAK BY
Parameter definition and passing syntax (for extents)
PROCEDURE statement
PROCESS EVENTS
Progress.* classes
REPEAT statement
RETURN statement
ROUTINE-LEVEL ON ERROR UNDO, THROW statement
SESSION system handle
SHADOW-WINDOW widget
STATIC class members
STREAM object handle
SUPER system reference
System.Exception class
THIS-OBJECT system reference
UNBOX function
UNDO statement
USING statement and .NET namespaces
WAIT-FOR statement

New keywords:

ACTIVE-FORM
ASSEMBLY
BOX
CATCH
CREATE-LIKE-SEQUENTIAL
CURRENT-QUERY
DATA-SOURCE-ROWID
DEFAULT-VALUE
ERROR-STACK-TRACE
FINALLY
FIRST-FORM
LAST-FORM
LIKE-SEQUENTIAL
MARK-NEW
MARK-ROW-STATE
MAXIMUM-LEVEL
NOT-ACTIVE
RESTART-ROW
ROUTINE-LEVEL
STATIC
STREAM-HANDLE
THROW
TOP-NAV-QUERY
UNBOX

New or modified syntax:

BOX ( ABL-expression [ , AS-data-type-expression ] )
AS-data-type-expression
Specifies a character expression equal to an AS data type keyword

CATCH error-variable AS [ CLASS ] error-class:
catch-logic
END [ CATCH ] .

FINALLY:
END [FINALLY] .

Class-based data member access:
[ [ class-type-name | object-reference ] : ] data-member-name [ [ index ] ]

Class-based method call:
[ [ class-type-name | object-reference [ : event-name ] ] : ]
method-name ( [ parameter [ , parameter ] ... ] ) [ NO-ERROR ]
event-name: Name of a .NET event.

Class-based object reference:
object-reference [ [ key ] ] [ : {
data-member
| property
| method
} ]
[ key ] : an index value of a .NET data type. The [ ] brackets are required.

Class-based property access:
[ [ class-type-name | object-reference ] : ]
property-name [ [ index | key ] ]
(The [] brackets are part of the syntax for [index] or [key])

CONSTRUCTOR [ PRIVATE | PROTECTED | PUBLIC | STATIC ] class-name

DB-REMOTE-HOST ( { logical-name | integer-expression } )
logical-name: a character expression.

Define Buffer, Define Dataset:
DEFINE { [ [ NEW ] SHARED ] | [ PRIVATE | PROTECTED ] [ STATIC ] }
… XML-NODE-NAME node-name
(STATIC is a new option. 'node-name' is character constant.)

DEFINE [ PRIVATE | PROTECTED ][ STATIC ] DATA-SOURCE

Define Parameter, Variable:
INITIAL { constant |{ [ constant [ , constant ] ...] } } ]
Brackets [ ] are required around a list of constants.

DEFINE PARAMETER BUFFER buffer-name FOR [ TEMP-TABLE ] table-name

DEFINE { INPUT | OUTPUT | INPUT-OUTPUT } PARAMETER
{ TABLE FOR temp-table-name [ APPEND ] [ BIND ] [ BY-VALUE ]
|TABLE-HANDLE temp-table-handle [ BIND ] [ BY-VALUE ]
|DATASET FOR dataset-name [ APPEND ] [ BIND ] [ BY-VALUE ]
|DATASET-HANDLE dataset-handle [ BIND ] [ BY-VALUE ]
}
(The BY-VALUE option is new.)

DEFINE [ PRIVATE | PROTECTED | PUBLIC ] [ STATIC ]
PROPERTY property-name
{
AS primitive-type-name |
AS [ CLASS ] object-type-name
} [ EXTENT [ constant ] ]

GET ( [ array-index-parameter ] ) :
SET ( parameter-definition [ , array-index-parameter ] ) :
array-index-parameter: INPUT array-index-name AS { INTEGER | INT64 }

DEFINE { [ [ NEW ] SHARED ] | [ PRIVATE | PROTECTED ] [ STATIC ] } QUERY

DEFINE { [ [ NEW [ GLOBAL ] ] SHARED ] |[ PRIVATE ] } STREAM

DEFINE { [ [ NEW [ GLOBAL ] ] SHARED ] | [ PRIVATE | PROTECTED ] [ STATIC ] }
TEMP-TABLE
[ XML-NODE-NAME node-name ]
[ LIKE-SEQUENTIAL table-name
[ VALIDATE ] [ USE-INDEX index-name [ AS PRIMARY ] ] …]

DEFINE { [ [ NEW [ GLOBAL ] ] SHARED ] | [ PRIVATE | PROTECTED | PUBLIC ] [ STATIC ] } VARIABLE

DEFINE { [ [ NEW ] SHARED ] | [ PRIVATE ] } { WORK-TABLE | WORKFILE }

DISPLAY { [ STREAM stream | STREAM-HANDLE handle ] [ UNLESS-HIDDEN ] }

DYNAMIC-CAST( object-reference, expression )

EXPORT [ STREAM stream | STREAM-HANDLE handle ]

FINALLY : finally-logic END [ FINALLY ] .

ON …
[ , LEAVE [ label2 ]
| , NEXT [ label2 ]
| , RETRY [ label1 ]
| , RETURN [ return-value |
ERROR [ return-value |error-object-expression ] |
NO-APPLY ]
| , THROW
]
(The THROW option is only on ERROR.)

WITH STREAM-HANDLE handle

FUNCTION RETURNS [ EXTENT [ constant ] ]

HIDE [ STREAM stream | STREAM-HANDLE handle ]

IMPORT [ STREAM stream | STREAM-HANDLE handle ]

INPUT [ STREAM stream | STREAM-HANDLE handle ]
for CLOSE and FROM and THROUGH, also for INPUT-OUTPUT

LINE-COUNTER [ ( stream | STREAM-HANDLE handle ) ]

OPEN QUERY … [ BREAK ]

OUTPUT [ STREAM stream | STREAM-HANDLE handle ]
for CLOSE, THROUGH, and TO

[ STREAM stream | STREAM-HANDLE handle ]
for PAGE, PAGE-NUMBER, PAGE-SIZE, PROMPT-FOR, PUT, PUT CONTROL, READKEY, SEEK, SET, UP, VIEW.

{ parameter-name AS {primitive-type-name | [ CLASS ] object-type-name }
[ EXTENT [constant ] ]

RETURN [ return-value | ERROR [ return-value |error-object-expression ] | NO-APPLY ]

ROUTINE-LEVEL ON ERROR UNDO, THROW.

THIS-OBJECT [ : class-member-reference ]

UNBOX ( object-reference )

UNDO ...
| , RETURN [ return-value |
ERROR [ return-value |error-object-expression ] |
NO-APPLY ]
| , THROW error-object-expression

USING
{ object-type-name |{ package-name |namespace } .* }
[ FROM { ASSEMBLY | PROPATH } ]

WAIT-FOR { object-reference |type-name } : method-name ( [parameters ] )
[ SET return-value ]

WAIT-FOR System.Windows.Forms.Application:Run ( [ form-object-ref ] )

WAIT-FOR dialog-object-ref:ShowDialog ( [parent-form ] )

STREAM stream-name:attribute
as a widget-handle


Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
tamhas's picture

Looks like somebody has

Looks like somebody has their work cut out for them!


john's picture

Re: Looks like somebody has

It's actually a lot smaller than some previous language updates. It won't be too big of a deal.