mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
Upload
Digital Research
This commit is contained in:
145
ASSEMBLY & COMPILE TOOLS/PLM-2-C 2/plm2c/convert.c
Normal file
145
ASSEMBLY & COMPILE TOOLS/PLM-2-C 2/plm2c/convert.c
Normal file
@@ -0,0 +1,145 @@
|
||||
#include <stdio.h>
|
||||
#ifdef IBMPC
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#include "misc.h"
|
||||
#include "defs.h"
|
||||
#include "cvt.h"
|
||||
#include "struct.h"
|
||||
#include "tokens.h"
|
||||
|
||||
BOOLEAN syntax_error;
|
||||
|
||||
extern char *text_buffer, *text_ptr;
|
||||
extern int line_count;
|
||||
|
||||
/*
|
||||
* Determine statement type and call appropriate parse routine.
|
||||
* Return statement class or, if a reserved word, reserved word token.
|
||||
*/
|
||||
parse_statement(first_token)
|
||||
TOKEN *first_token;
|
||||
{
|
||||
int token_type;
|
||||
|
||||
/* Flush standard output and standard error */
|
||||
(void) fflush(stdout);
|
||||
(void) fflush(stderr);
|
||||
|
||||
/* Flag no error yet */
|
||||
syntax_error = FALSE;
|
||||
|
||||
switch (first_token->token_class) {
|
||||
|
||||
case RESERVED:
|
||||
token_type = first_token->token_type;
|
||||
|
||||
switch (token_type) {
|
||||
|
||||
case DECLARE :
|
||||
parse_declare(first_token);
|
||||
break;
|
||||
|
||||
case DO :
|
||||
parse_do(first_token);
|
||||
break;
|
||||
|
||||
case IF :
|
||||
parse_if(first_token);
|
||||
break;
|
||||
|
||||
case THEN :
|
||||
parse_then();
|
||||
break;
|
||||
|
||||
case ELSE :
|
||||
parse_else(first_token);
|
||||
break;
|
||||
|
||||
case GOTO :
|
||||
parse_goto(first_token);
|
||||
break;
|
||||
|
||||
case GO :
|
||||
parse_go(first_token);
|
||||
break;
|
||||
|
||||
case CALL :
|
||||
parse_call(first_token);
|
||||
break;
|
||||
|
||||
case RETURN :
|
||||
parse_return(first_token);
|
||||
break;
|
||||
|
||||
case END :
|
||||
parse_end(first_token);
|
||||
break;
|
||||
|
||||
case DISABLE :
|
||||
parse_int_ctl(first_token);
|
||||
break;
|
||||
|
||||
case ENABLE :
|
||||
parse_int_ctl(first_token);
|
||||
break;
|
||||
|
||||
case OUTPUT :
|
||||
parse_output(first_token);
|
||||
break;
|
||||
|
||||
case OUTWORD :
|
||||
parse_outword(first_token);
|
||||
break;
|
||||
|
||||
case OUTHWORD :
|
||||
parse_outhword(first_token);
|
||||
break;
|
||||
|
||||
default :
|
||||
parse_error("Illegal reserved word");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
return token_type;
|
||||
|
||||
case IDENTIFIER:
|
||||
parse_identifier(first_token);
|
||||
break;
|
||||
|
||||
case LABEL:
|
||||
parse_label();
|
||||
break;
|
||||
|
||||
case END_OF_LINE:
|
||||
parse_eol(first_token);
|
||||
break;
|
||||
|
||||
case END_OF_FILE:
|
||||
out_white_space(first_token);
|
||||
return END_OF_FILE;
|
||||
|
||||
default:
|
||||
parse_error("Illegal statement");
|
||||
return ERROR;
|
||||
|
||||
}
|
||||
|
||||
return first_token->token_class;
|
||||
}
|
||||
|
||||
parse_new_statement()
|
||||
{
|
||||
TOKEN first_token;
|
||||
|
||||
/* Get first token on line */
|
||||
(void) get_token(&first_token);
|
||||
|
||||
return parse_statement(&first_token);
|
||||
}
|
||||
|
||||
parse_file()
|
||||
{
|
||||
while (parse_new_statement() != END_OF_FILE) ;
|
||||
}
|
||||
|
Reference in New Issue
Block a user