.TITLE CALCULATOR PARSE TABLES .IDENT 'Version 1 Mod 0' ; define the TPARSE control symbols $TPADEF ; define the states, transitions amd keywords $INIT_STATE CALCULATOR_STATES,CALCULATOR_KEYWORDS $STATE COMMANDS $TRAN TPA$_EOS, TPA$_EXIT $TRAN '!', TPA$_EXIT, DISPLAY_TOKEN $TRAN '@', FILE_PARAM, DISPLAY_TOKEN $TRAN 'DEBUG', TPA$_EXIT, TOGGLE_DEBUG_FLAG $TRAN 'DISPLAY', DISPLAY_PARAM, DISPLAY_TOKEN $TRAN 'EXIT', TPA$_EXIT, EXECUTE_EXIT_COMMAND $TRAN 'HELP', TPA$_EXIT, DISPLAY_HELP $TRAN 'SHOW', SHOW_PARAM, DISPLAY_TOKEN $TRAN !INPUT, , EXECUTE_INPUT_COMMAND $TRAN !ASSIGNMENT, , EXECUTE_ASSIGNMENT_COMMAND $TRAN !EXP_COMMAND, TPA$_EXIT, EXECUTE_EXPRESSION_COMMAND $TRAN TPA$_LAMBDA, TPA$_EXIT, UNKNOWN_COMMAND $STATE FILE_PARAM $TRAN TPA$_FILESPEC, , COMMAND_FILE $TRAN TPA$_EOS, TPA$_EXIT, $STATE $TRAN <','>, FILE_PARAM, DISPLAY_TOKEN $TRAN TPA$_LAMBDA, FILE_PARAM, $STATE SHOW_PARAM $TRAN TPA$_EOS, TPA$_EXIT, SHOW_ALL_SYMBOLS $TRAN TPA$_LAMBDA, , $STATE SHOW_LOOP $TRAN TPA$_SYMBOL, , SHOW_A_SYMBOL $TRAN TPA$_EOS, TPA$_EXIT, $STATE $TRAN <','>, SHOW_LOOP, DISPLAY_TOKEN $TRAN TPA$_LAMBDA, SHOW_LOOP, $STATE DISPLAY_PARAM $TRAN 'NOFILE', , DISPLAY_NOFILE $TRAN 'NOFILES', , DISPLAY_NOFILE $TRAN 'FILE', , DISPLAY_FILE $TRAN 'FILES', , DISPLAY_FILE $TRAN !PRECISION, , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, TPA$_EXIT, DISPLAY_UNKNOWN_PARAMETER $STATE $TRAN TPA$_EOS, TPA$_EXIT, $TRAN <','>, DISPLAY_PARAM, DISPLAY_TOKEN $TRAN TPA$_LAMBDA, DISPLAY_PARAM, $STATE PRECISION $TRAN 'PRECISION', , DEFAULT_PRECISION $STATE $TRAN '=', , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, TPA$_EXIT, $STATE $TRAN TPA$_DECIMAL, TPA$_EXIT, DEFINE_PRECISION $STATE INPUT $TRAN 'INPUT', , INPUT_SETUP $STATE $TRAN !INPUT_QUALIFIER, , $STATE $TRAN TPA$_SYMBOL, , GET_INPUT_SYMBOL $STATE $TRAN !QUOTED_STRING, , GET_INPUT_PROMPT $STATE $TRAN TPA$_EOS, TPA$_EXIT, $STATE INPUT_QUALIFIER $TRAN '/', , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, TPA$_EXIT, $STATE $TRAN 'FLOAT', INPUT_QUALIFIER, INPUT_FLOAT $TRAN 'INTEGER', INPUT_QUALIFIER, INPUT_INTEGER $TRAN 'DEFAULT', , DISPLAY_TOKEN $STATE $TRAN '=', , DISPLAY_TOKEN $STATE $TRAN !NUMBER, INPUT_QUALIFIER, INPUT_DEFAULT $STATE ASSIGNMENT $TRAN !SYMBOL, , ASSIGNMENT_SYMBOL $STATE $TRAN '=', , ASSIGNMENT_OPERATOR $STATE $TRAN !EXPRESSION, , EVALUATE_EXPRESSION $STATE $TRAN TPA$_EOS, TPA$_EXIT $STATE EXP_COMMAND $TRAN !EXPRESSION, , EVALUATE_EXPRESSION $STATE $TRAN TPA$_EOS, TPA$_EXIT $STATE EXPRESSION $TRAN '+', , UNARY_OPERATOR $TRAN '-', , UNARY_OPERATOR $TRAN TPA$_LAMBDA, , $STATE E_LOOP $TRAN !TERM, , DISPLAY_TERM $STATE $TRAN '+', E_LOOP, BINARY_OPERATOR $TRAN '-', E_LOOP, BINARY_OPERATOR $TRAN TPA$_LAMBDA, TPA$_EXIT $STATE TERM $TRAN !FACTOR, , DISPLAY_FACTOR $STATE $TRAN '*', TERM, BINARY_OPERATOR $TRAN '/', TERM, BINARY_OPERATOR $TRAN TPA$_LAMBDA, TPA$_EXIT $STATE FACTOR $TRAN !FUNCTION, TPA$_EXIT, DISPLAY_TOKEN $TRAN !NUMBER, TPA$_EXIT, NUMBER_OPERAND $TRAN !SYMBOL, TPA$_EXIT, SYMBOL_OPERAND $TRAN '(', , PARENTHESIS $STATE $TRAN !EXPRESSION, , DISPLAY_EXPRESSION $STATE $TRAN ')', TPA$_EXIT, PARENTHESIS $STATE SYMBOL $TRAN TPA$_SYMBOL, TPA$_EXIT, TEST_SYMBOL $STATE FUNCTION $TRAN 'ABS', FUNC_ONE_ARG, ABS_FUNCTION $TRAN 'ACOS', FUNC_ONE_ARG, ACOS_FUNCTION $TRAN 'ASIN', FUNC_ONE_ARG, ASIN_FUNCTION $TRAN 'ATAN', FUNC_ONE_ARG, ATAN_FUNCTION $TRAN 'CEILING', FUNC_ONE_ARG, CEILING_FUNCTION $TRAN 'COS', FUNC_ONE_ARG, COS_FUNCTION $TRAN 'COSH', FUNC_ONE_ARG, COSH_FUNCTION $TRAN 'EXP', FUNC_ONE_ARG, EXP_FUNCTION $TRAN 'FLT', FUNC_ONE_ARG, FLT_FUNCTION $TRAN 'FLOOR', FUNC_ONE_ARG, FLOOR_FUNCTION $TRAN 'INT', FUNC_ONE_ARG, INT_FUNCTION $TRAN 'LN', FUNC_ONE_ARG, LN_FUNCTION $TRAN 'LOG', FUNC_ONE_ARG, LOG_FUNCTION $TRAN 'POW', FUNC_TWO_ARG, POW_FUNCTION $TRAN 'RAND', FUNC_ONE_ARG, RAND_FUNCTION $TRAN 'MAX', FUNC_TWO_ARG, MAX_FUNCTION $TRAN 'MIN', FUNC_TWO_ARG, MIN_FUNCTION $TRAN 'MOD', FUNC_TWO_ARG, MOD_FUNCTION $TRAN 'SEED', FUNC_ONE_ARG, SEED_FUNCTION $TRAN 'SIN', FUNC_ONE_ARG, SIN_FUNCTION $TRAN 'SINH', FUNC_ONE_ARG, SINH_FUNCTION $TRAN 'SQRT', FUNC_ONE_ARG, SQRT_FUNCTION $TRAN 'TAN', FUNC_ONE_ARG, TAN_FUNCTION $TRAN 'TANH', FUNC_ONE_ARG, TANH_FUNCTION $STATE FUNC_ONE_ARG $TRAN '(', , PARENTHESIS $STATE $TRAN !EXPRESSION, , DISPLAY_EXPRESSION $STATE $TRAN ')', TPA$_EXIT, PARENTHESIS $STATE FUNC_TWO_ARG $TRAN '(', , PARENTHESIS $STATE $TRAN !EXPRESSION, , DISPLAY_EXPRESSION $STATE $TRAN <','>, , END_EXPRESSION $STATE $TRAN !EXPRESSION, , DISPLAY_EXPRESSION $STATE $TRAN ')', TPA$_EXIT, PARENTHESIS $STATE NUMBER $TRAN !STD_NUMBER, TPA$_EXIT, STANDARD_NUMBER $TRAN !OCT_NUMBER, TPA$_EXIT, OCTAL_NUMBER $TRAN !DEC_NUMBER, TPA$_EXIT, DECIMAL_NUMBER $TRAN !HEX_NUMBER, TPA$_EXIT, HEXADECIMAL_NUMBER $STATE STD_NUMBER $TRAN TPA$_DECIMAL, , INTEGER_PART $STATE $TRAN '.', , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, TPA$_EXIT $STATE $TRAN TPA$_DECIMAL, , FRACTION_PART $TRAN TPA$_LAMBDA, , $STATE $TRAN 'E', , DISPLAY_TOKEN $TRAN 'e', , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, TPA$_EXIT $STATE $TRAN '+', , DISPLAY_TOKEN $TRAN '-', , DISPLAY_TOKEN $TRAN TPA$_LAMBDA, , $STATE $TRAN TPA$_DECIMAL, TPA$_EXIT, EXPONENT_PART $STATE OCT_NUMBER $TRAN '%', , $STATE $TRAN 'O', , $TRAN 'o', , $STATE $TRAN TPA$_OCTAL, TPA$_EXIT, $STATE DEC_NUMBER $TRAN '%', , $STATE $TRAN 'D', , $TRAN 'd', , $STATE $TRAN TPA$_DECIMAL, TPA$_EXIT, $STATE HEX_NUMBER $TRAN '%', , $STATE $TRAN 'X', , $TRAN 'x', , $STATE $TRAN TPA$_HEX, TPA$_EXIT, $STATE QUOTED_STRING $TRAN '"', , QUOTED_STRING_START $STATE Q_LOOP $TRAN '"', TPA$_EXIT, QUOTED_STRING_END $TRAN TPA$_ANY, Q_LOOP, $END_STATE .END