gambas-source-code/main/gbc/gbc_trans.h
Benoît Minisini cf2d76daca [CONFIGURATION]
* NEW: WARNING! The bytecode has changed, so every project needs to be
  recompiled.

[DEVELOPMENT ENVIRONMENT]
* NEW: A new project option to use the terminal emulator of the current 
  desktop instead of the built-in output window.
* BUG: "svn update" is now run non-interactive.

[WIKI CGI SCRIPT]
* NEW: {html ... } is a new section to put verbatim HTML inside a page.

[INTERPRETER]
* BUG: Fix a possible bug in the FreeBSD way of opening a pseudo-terminal
  when running an external process.
* NEW: External process can have a custom environment.
* BUG: Some forgotten FreeBSD patch.
* NEW: The hidden "-f" option now takes as argument the name of the debug
  fifo file without the extension. This is needed as now the IDE can put
  a terminal emulator between the debugged process and itself.

[COMPILER]
* NEW: New syntax for the EXEC and SHELL instruction. Now the WITH keyword
  can introduce an array of string, each of one being an environment 
  variable "NAME=VALUE".

[GB.DEBUG]
* NEW: Debug.Start() now returns the name of the debug fifo, without the
  extension.


git-svn-id: svn://localhost/gambas/trunk@1971 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2009-05-22 14:52:36 +00:00

223 lines
5.5 KiB
C

/***************************************************************************
trans.h
Code translation
(c) 2000-2007 Benoit Minisini <gambas@users.sourceforge.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***************************************************************************/
#ifndef __GBC_TRANS_H
#define __GBC_TRANS_H
#include "gbc_type.h"
#include "gb_reserved.h"
#include "gbc_read.h"
#include "gb_limit.h"
#include "gbc_trans_common.h"
enum {
TT_NOTHING = 0,
TT_DO_NOT_CHECK_AS = 1,
TT_CAN_SQUARE = 2,
TT_CAN_ARRAY = 4,
TT_CAN_NEW = 8
};
enum {
TS_MODE_READ = 1,
TS_MODE_WRITE = 2,
TS_MODE_APPEND = 4,
TS_MODE_CREATE = 8,
TS_MODE_DIRECT = 16,
TS_MODE_LINE = 32,
TS_MODE_WATCH = 64,
TS_MODE_PIPE = 128,
};
enum {
TS_EXEC_NONE = 0,
TS_EXEC_READ = 1,
TS_EXEC_WRITE = 2,
TS_EXEC_TERM = 4,
TS_EXEC_STRING = 8,
TS_EXEC_WAIT = 16
};
enum {
TS_SUBR_PRINT,
TS_SUBR_INPUT,
TS_SUBR_WRITE,
TS_SUBR_READ,
TS_SUBR_OPEN,
TS_SUBR_CLOSE,
TS_SUBR_SEEK,
TS_SUBR_LINE_INPUT,
TS_SUBR_FLUSH,
TS_SUBR_EXEC,
TS_SUBR_SHELL,
TS_SUBR_WAIT,
TS_SUBR_KILL,
TS_SUBR_MOVE,
TS_SUBR_MKDIR,
TS_SUBR_RMDIR,
TS_SUBR_ARRAY,
TS_SUBR_COLLECTION,
TS_SUBR_COPY,
TS_SUBR_LINK,
TS_SUBR_ERROR,
TS_SUBR_LOCK,
TS_SUBR_UNLOCK,
TS_SUBR_INPUT_FROM,
TS_SUBR_OUTPUT_TO,
TS_SUBR_DEBUG,
TS_SUBR_SLEEP,
TS_SUBR_RANDOMIZE,
TS_SUBR_ERROR_TO,
TS_SUBR_LEFT,
TS_SUBR_MID,
};
enum {
TSO_SUBR_SCAN
};
enum {
TS_NONE = -1,
TS_STDIN = 0,
TS_STDOUT = 1,
TS_STDERR = 2
};
#define TS_NO_SUBR ((void (*)())-1)
#ifndef __GBC_TRANS_C
EXTERN int TRANS_in_affectation;
#endif
PUBLIC void TRANS_reset(void);
PUBLIC boolean TRANS_newline(void);
/*PUBLIC boolean TRANS_type(boolean check_as, boolean square, boolean array, boolean new, TRANS_DECL *result);*/
PUBLIC boolean TRANS_type(int flag, TRANS_DECL *result);
PUBLIC boolean TRANS_get_number(int index, TRANS_NUMBER *result);
PUBLIC boolean TRANS_check_declaration(void);
PUBLIC PATTERN *TRANS_get_constant_value(TRANS_DECL *decl, PATTERN *current);
PUBLIC void TRANS_want(int reserved, char *msg);
PUBLIC boolean TRANS_is(int reserved);
PUBLIC void TRANS_ignore(int reserved);
PUBLIC int TRANS_get_class(PATTERN pattern);
PUBLIC bool TRANS_is_end_function(bool is_proc, PATTERN *look);
char *TRANS_get_num_desc(int num);
/* trans_code.c */
PUBLIC void TRANS_code(void);
PUBLIC boolean TRANS_init_var(TRANS_DECL *decl);
PUBLIC void TRANS_statement(void);
PUBLIC void TRANS_init_optional(TRANS_PARAM *param);
/* trans_expr.c */
PUBLIC void TRANS_expression(bool check);
PUBLIC void TRANS_ignore_expression();
PUBLIC void TRANS_reference(void);
PUBLIC boolean TRANS_affectation(bool check);
PUBLIC void TRANS_operation(short op, short nparam, bool output, PATTERN previous);
PUBLIC void TRANS_new(void);
/* trans_tree.c */
#define RS_UNARY (-1)
PUBLIC TRANS_TREE *TRANS_tree(bool check_statement);
/* trans_ctrl.c */
PUBLIC void TRANS_control_init(void);
PUBLIC void TRANS_control_exit(void);
PUBLIC void TRANS_if(void);
PUBLIC void TRANS_else(void);
PUBLIC void TRANS_endif(void);
PUBLIC void TRANS_goto(void);
PUBLIC void TRANS_do(PATTERN type);
PUBLIC void TRANS_loop(PATTERN type);
PUBLIC void TRANS_select(void);
PUBLIC void TRANS_case(void);
PUBLIC void TRANS_default(void);
PUBLIC void TRANS_end_select(void);
PUBLIC void TRANS_break(void);
PUBLIC void TRANS_continue(void);
PUBLIC void TRANS_return(void);
PUBLIC void TRANS_for(void);
PUBLIC void TRANS_for_each(void);
PUBLIC void TRANS_next(void);
PUBLIC void TRANS_try(void);
PUBLIC void TRANS_finally(void);
PUBLIC void TRANS_catch(void);
PUBLIC void TRANS_label(void);
PUBLIC void TRANS_with(void);
PUBLIC void TRANS_use_with(void);
PUBLIC void TRANS_end_with(void);
PUBLIC void TRANS_raise(void);
/* trans_subr.c */
PUBLIC void TRANS_subr(int subr, int nparam);
PUBLIC void TRANS_print(void);
PUBLIC void TRANS_input(void);
PUBLIC void TRANS_read(void);
PUBLIC void TRANS_write(void);
PUBLIC void TRANS_open(void);
PUBLIC void TRANS_pipe(void);
PUBLIC void TRANS_close(void);
PUBLIC void TRANS_lock(void);
PUBLIC void TRANS_unlock(void);
PUBLIC void TRANS_seek(void);
PUBLIC void TRANS_line_input(void);
PUBLIC void TRANS_flush(void);
PUBLIC void TRANS_stop(void);
PUBLIC void TRANS_quit(void);
PUBLIC void TRANS_exec(void);
PUBLIC void TRANS_shell(void);
PUBLIC void TRANS_wait(void);
PUBLIC void TRANS_sleep(void);
PUBLIC void TRANS_kill(void);
PUBLIC void TRANS_move(void);
PUBLIC void TRANS_inc(void);
PUBLIC void TRANS_dec(void);
PUBLIC void TRANS_swap(void);
PUBLIC void TRANS_mkdir(void);
PUBLIC void TRANS_rmdir(void);
PUBLIC void TRANS_use(void);
PUBLIC void TRANS_copy(void);
PUBLIC void TRANS_link(void);
PUBLIC void TRANS_input_from(void);
PUBLIC void TRANS_output_to(void);
PUBLIC void TRANS_debug(void);
PUBLIC void TRANS_error(void);
PUBLIC void TRANS_scan(void);
PUBLIC void TRANS_randomize(void);
PUBLIC void TRANS_mid(void);
#endif