forked from KolibriOS/kolibrios
43795ab11a
(An improved version in conjunction with ktcc can generate executable files.) git-svn-id: svn://kolibrios.org@8733 a494cfbc-eb01-0410-851d-a64ba20cac60
67 lines
1.1 KiB
C
67 lines
1.1 KiB
C
/*
|
|
* Tiny BASIC
|
|
* Listing Output Header
|
|
*
|
|
* Released as Public Domain by Damian Gareth Walker, 2019
|
|
* Created: 18-Sep-2019
|
|
*/
|
|
|
|
|
|
#ifndef __FORMATTER_H__
|
|
#define __FORMATTER_H__
|
|
|
|
|
|
/* included headers */
|
|
#include "errors.h"
|
|
#include "statement.h"
|
|
|
|
|
|
/*
|
|
* Data Declarations
|
|
*/
|
|
|
|
|
|
/* Formatter Class */
|
|
typedef struct formatter_data FormatterData;
|
|
typedef struct formatter Formatter;
|
|
typedef struct formatter {
|
|
|
|
/* Properties */
|
|
FormatterData *priv; /* private data */
|
|
char *output; /* the formatted output */
|
|
|
|
/*
|
|
* Create a formatted version of the program
|
|
* params:
|
|
* Formatter* the formatter
|
|
* ProgramNode* the syntax tree
|
|
* returns:
|
|
* char* the formatted BASIC program
|
|
*/
|
|
void (*generate) (Formatter *, ProgramNode *);
|
|
|
|
/*
|
|
* Destroy the formatter when no longer needed
|
|
* params:
|
|
* Formatter* the doomed formatter
|
|
*/
|
|
void (*destroy) (Formatter *);
|
|
|
|
} Formatter;
|
|
|
|
|
|
/*
|
|
* Function Declarations
|
|
*/
|
|
|
|
|
|
/*
|
|
* The Formatter constructor
|
|
* returns:
|
|
* Formatter* the new formatter
|
|
*/
|
|
Formatter *new_Formatter (ErrorHandler *errors);
|
|
|
|
|
|
#endif
|