VMS Help
RTL Routines, LIB$, LIB$TABLE_PARSE
*Conan The Librarian
|
The Table-Driven Finite-State Parser routine is a general-
purpose, table-driven parser implemented as a finite-state
automaton, with extensions that make it suitable for a wide
range of applications. It parses a string and returns a message
indicating whether or not the input string is valid.
LIB$T[ABLE_]PARSE is called with the address of an argument
block, the address of a state table, and the address of a keyword
table. The input string is specified as part of the argument
block.
The LIB$ facility supports the following two versions of the
Table-Driven Finite-State Parser:
LIB$TPARSE Available on VAX systems.
LIB$TPARSE is available on Alpha and I64
systems in translated form. In this form, it
is applicable to translated VAX images only.
LIB$TABLE_PARSE Available on VAX, Alpha, and I64 systems.
LIB$TPARSE and LIB$TABLE_PARSE differ mainly in the way they pass
arguments to action routines.
The term LIB$T[ABLE_]PARSE is used here to describe concepts that
apply to both LIB$TPARSE and LIB$TABLE_PARSE.
Format
LIB$TPARSE/LIB$TABLE_PARSE argument-block ,state-table
,key-table
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
argument-block
OpenVMS usage:unspecified
type: unspecified
access: modify
mechanism: by reference
LIB$T[ABLE_]PARSE argument block. The argument-block argument
contains the address of this argument block.
The LIB$T[ABLE_]PARSE argument block contains information about
the state of the parse operation. It is a means of communication
between LIB$T[ABLE_]PARSE and the user's program. It is passed as
an argument to all action routines.
You must declare and initialize the argument block.
LIB$T[ABLE_]PARSE supports the following argument blocks:
o A 32-bit argument block that accommodates longword addresses,
values, and input tokens on VAX, Alpha, and I64 systems.
On Alpha and I64 systems, this argument block also
accommodates a numeric token whose binary representation is
less than or equal to 2**64.
o A 64-bit argument block that accommodates quadword addresses,
values, and input tokens on Alpha and I64 systems.
state-table
OpenVMS usage:unspecified
type: unspecified
access: read only
mechanism: by reference
Starting state in the state table. The state-table argument is
the address of this starting state. Usually, the name appearing
as the first argument of the $INIT_STATE macro is used.
You must define the state table for your parser.
LIB$T[ABLE_]PARSE provides macros in the MACRO and BLISS
languages for this purpose.
key-table
OpenVMS usage:unspecified
type: unspecified
access: read only
mechanism: by reference
Keyword table. The key-table argument is the address of this
keyword table. This name must be the same as that which appears
as the second argument of the $INIT_STATE macro.
You must only assign a name to the keyword table. The
LIB$T[ABLE_]PARSE macros allocate and define the table.