.TITLE VTL_HDR_PARSE_TBL - A table for scaning VTL tokens/lexems .IDENT /X-1/ ;++ ; FACILITY: VMS Tool Language ; ; FUNCTIONAL DESCRIPTION: ; ; This module contains a table of lexems used by LIB$TPARSE routine. ; ; ENVIRONMENT: OpenVMS ; ; AUTHOR: Ruslan R. Laishev, CREATION-DATE: 19-MAR-2009 ; ; MODIFIED BY: ; ;-- ; .PSECT IMPURE,WRT,NOEXE $TPADEF ;TParse stuff .LIBRARY /VTLDEF.MLB/ CR = 10 LF = 13 SPACE = 32 .EXTRN TOK_VAL .EXTRN TOK_UNWIND .SBTTL Parser State Table $VTLDEF $INIT_STATE UFD_STATE,UFD_KEY $STATE START $TRAN TPA$_BLANK, START $TRAN CR, START $TRAN LF, START $TRAN TPA$_EOS, TPA$_EXIT,,,,VTL_TOK_EOS ; ; Is there directives ? ; $TRAN VTL_TOK_DOT, DIRECTIVES ; ; Tokens ; $TRAN 'routine', TPA$_EXIT,,,,VTL_TOK_ROUTINE $TRAN 'unsigned', TPA$_EXIT,,,,VTL_TOK_UNSIGNED $TRAN 'struct', TPA$_EXIT,,,,VTL_TOK_STRUCT $TRAN 'typedef', TPA$_EXIT,,,,VTL_TOK_TYPEDEF $TRAN 'const', TPA$_EXIT,,,,VTL_TOK_CONST $TRAN 'void', TPA$_EXIT,,,,VTL_TOK_VOID $TRAN 'byte', TPA$_EXIT,,,,VTL_TOK_BYTE $TRAN 'word', TPA$_EXIT,,,,VTL_TOK_WORD $TRAN 'long', TPA$_EXIT,,,,VTL_TOK_LONG $TRAN 'quad', TPA$_EXIT,,,,VTL_TOK_QUAD $TRAN 'float', TPA$_EXIT,,,,VTL_TOK_FLOAT $TRAN 'double', TPA$_EXIT,,,,VTL_TOK_DOUBLE $TRAN 'string', TPA$_EXIT,,,,VTL_TOK_STRING $TRAN VTL_TOK_SQ_OP, TPA$_EXIT,,,,VTL_TOK_SQ_OP $TRAN VTL_TOK_SQ_CL, TPA$_EXIT,,,,VTL_TOK_SQ_CL $TRAN VTL_TOK_BRK_OP, TPA$_EXIT,,,,VTL_TOK_BRK_OP $TRAN VTL_TOK_BRK_CL, TPA$_EXIT,,,,VTL_TOK_BRK_CL $TRAN VTL_TOK_BLK_OP, TPA$_EXIT,,,,VTL_TOK_BLK_OP $TRAN VTL_TOK_BLK_CL, TPA$_EXIT,,,,VTL_TOK_BLK_CL $TRAN VTL_TOK_AN_OP, TPA$_EXIT,,,,VTL_TOK_AN_OP $TRAN VTL_TOK_AN_CL, TPA$_EXIT,,,,VTL_TOK_AN_CL $TRAN VTL_TOK_SEMI, TPA$_EXIT,,,,VTL_TOK_SEMI $TRAN VTL_TOK_COMMA, TPA$_EXIT,,,,VTL_TOK_COMMA $TRAN VTL_TOK_SET, TPA$_EXIT,,,,VTL_TOK_SET $TRAN TPA$_DECIMAL, TPA$_EXIT,TOK_VAL,,,VTL_TOK_DIGIT $TRAN TPA$_SYMBOL, TPA$_EXIT,TOK_VAL,,,VTL_TOK_ID $TRAN VTL_TOK_PERCENT,DIGIT,TOK_VAL,,,VTL_TOK_DIGIT $TRAN TPA$_ANY, TPA$_EXIT $TRAN TPA$_EOS, TPA$_EXIT,,,,VTL_TOK_EOS ; ; ; ; ; Scan Complex (Two/Three-chars) tokens ; $TRAN VTL_TOK_ADD, OPERATION,,,,VTL_TOK_ADD $TRAN VTL_TOK_SUB, OPERATION,,,,VTL_TOK_SUB $TRAN VTL_TOK_MUL, OPERATION,,,,VTL_TOK_MUL $TRAN VTL_TOK_DIV, OPERATION,,,,VTL_TOK_DIV $TRAN VTL_TOK_AND, OPERATION,,,,VTL_TOK_AND $TRAN VTL_TOK_OR, OPERATION,,,,VTL_TOK_OR $TRAN VTL_TOK_XOR, OPERATION,,,,VTL_TOK_XOR $TRAN VTL_TOK_NOT, OPERATION,,,,VTL_TOK_NOT $TRAN VTL_TOK_NEG, OPERATION,,,,VTL_TOK_NEG $TRAN VTL_TOK_RMDR, OPERATION,,,,VTL_TOK_RMDR ; ; Scan Simple (Single-char) tokens ; $TRAN VTL_TOK_QUOTE, TPA$_EXIT,,,,VTL_TOK_QUOTE $TRAN VTL_TOK_HASH, TPA$_EXIT,,,,VTL_TOK_HASH $TRAN VTL_TOK_MINUS, TPA$_EXIT,,,,VTL_TOK_MINUS $TRAN VTL_TOK_SLASH, TPA$_EXIT,,,,VTL_TOK_SLASH $TRAN VTL_TOK_DOLLAR, TPA$_EXIT,,,,VTL_TOK_DOLLAR $TRAN VTL_TOK_COMMENT,TPA$_EXIT,,,,VTL_TOK_COMMENT $TRAN VTL_TOK_GT, TPA$_EXIT,,,,VTL_TOK_GT $TRAN VTL_TOK_LT, TPA$_EXIT,,,,VTL_TOK_LT $TRAN VTL_TOK_COLON, TPA$_EXIT,,,,VTL_TOK_COLON $TRAN TPA$_SYMBOL, TPA$_EXIT,TOK_VAL,,,VTL_TOK_ID $TRAN TPA$_ANY, TPA$_EXIT $TRAN TPA$_EOS, TPA$_EXIT,,,,VTL_TOK_EOS ; = , == , => , =< $STATE COMPARING $TRAN VTL_TOK_SET, TPA$_EXIT,,,,VTL_TOK_EQ $TRAN VTL_TOK_GT, TPA$_EXIT,,,,VTL_TOK_GE $TRAN VTL_TOK_LT, TPA$_EXIT,,,,VTL_TOK_LE $TRAN TPA$_ANY, TPA$_EXIT,TOK_UNWIND ; += , -= , &= , != , &= , |= , ~= , ^= ; ++ , -- , && , || , %= $STATE OPERATION $TRAN VTL_TOK_SET, TPA$_EXIT,TOK_OR,,,VTL_TOK_UNAR $TRAN TPA$_ANY, TPA$_EXIT,TOK_UNWIND ; << $STATE SHIFTLEFT $TRAN VTL_TOK_AN_OP, BITSHIFTS,,,,VTL_TOK_SHLF $TRAN TPA$_ANY, TPA$_EXIT,TOK_UNWIND ; >> $STATE SHIFTRIGHT $TRAN VTL_TOK_AN_CL, BITSHIFTS,,,,VTL_TOK_SHRT $TRAN TPA$_ANY, TPA$_EXIT,TOK_UNWIND ; <<= , >>= $STATE BITSHIFTS $TRAN VTL_TOK_SET, TPA$_EXIT,TOK_OR,,,VTL_TOK_UNAR $TRAN TPA$_ANY, TPA$_EXIT,TOK_UNWIND ; .include "file" ; .include ; .include file ; .cdd --//-- ; .defs --//-- ; $STATE DIRECTIVES $TRAN 'include', FSPEC,,,,VTL_TOK_INCLUDE $TRAN 'defs', FSPEC,,,,VTL_TOK_DEFS $TRAN 'cdd', FSPEC,,,,VTL_TOK_CDD $TRAN TPA$_ANY, TPA$_FAIL $STATE FSPEC $TRAN TPA$_BLANK $STATE $TRAN VTL_TOK_QUOTE, FSPEC2 $TRAN VTL_TOK_AN_OP, FSPEC2 $TRAN TPA$_FILESPEC, TPA$_EXIT,TOK_VAL $TRAN TPA$_ANY, TPA$_FAIL $TRAN TPA$_EOS, TPA$_FAIL $STATE FSPEC2 $TRAN TPA$_FILESPEC, FSPEC3,TOK_VAL $TRAN TPA$_ANY, TPA$_FAIL $TRAN TPA$_EOS, TPA$_FAIL $STATE FSPEC3 $TRAN VTL_TOK_QUOTE, TPA$_EXIT $TRAN VTL_TOK_AN_CL, TPA$_EXIT $TRAN TPA$_ANY, TPA$_FAIL $TRAN TPA$_EOS, TPA$_FAIL ; ; %x, %d, %o ; ; $STATE DIGIT $TRAN 'x', HEX $TRAN 'X', HEX $TRAN 'd', DEC $TRAN 'D', DEC $TRAN 'o', OCT $TRAN 'O', OCT $TRAN TPA$_ANY, TPA$_FAIL $STATE HEX $TRAN TPA$_HEX, TPA$_EXIT,TOK_VAL,,,VTL_TOK_DIGIT $STATE DEC $TRAN TPA$_DECIMAL, TPA$_EXIT,TOK_VAL,,,VTL_TOK_DIGIT $STATE OCT $TRAN TPA$_OCTAL, TPA$_EXIT,TOK_VAL,,,VTL_TOK_DIGIT ;++ ; ;-- $END_STATE .END