|
ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
|
#include <stdio.h>#include <string.h>#include <errno.h>#include <stdlib.h>#include "ugbc.embed.tab.h"#include <unistd.h>Go to the source code of this file.
Data Structures | |
| struct | yy_buffer_state |
| struct | yy_trans_info |
Typedefs | |
| typedef signed char | flex_int8_t |
| typedef short int | flex_int16_t |
| typedef int | flex_int32_t |
| typedef unsigned char | flex_uint8_t |
| typedef unsigned short int | flex_uint16_t |
| typedef unsigned int | flex_uint32_t |
| typedef struct yy_buffer_state * | YY_BUFFER_STATE |
| typedef size_t | yy_size_t |
| typedef flex_uint8_t | YY_CHAR |
| typedef int | yy_state_type |
Functions | |
| void | yyrestart (FILE *input_file) |
| void | yy_switch_to_buffer (YY_BUFFER_STATE new_buffer) |
| YY_BUFFER_STATE | yy_create_buffer (FILE *file, int size) |
| void | yy_delete_buffer (YY_BUFFER_STATE b) |
| void | yy_flush_buffer (YY_BUFFER_STATE b) |
| void | yypush_buffer_state (YY_BUFFER_STATE new_buffer) |
| YY_BUFFER_STATE | yy_scan_buffer (char *base, yy_size_t size) |
| YY_BUFFER_STATE | yy_scan_string (const char *yy_str) |
| YY_BUFFER_STATE | yy_scan_bytes (const char *bytes, int len) |
| void * | yyalloc (yy_size_t) |
| void * | yyrealloc (void *, yy_size_t) |
| void | yyfree (void *) |
| void | yyset_debug (int debug_flag) |
| void | yyset_extra (YY_EXTRA_TYPE user_defined) |
| void | yyset_in (FILE *_in_str) |
| void | yyset_out (FILE *_out_str) |
| void | yyset_lineno (int _line_number) |
| if (!(yy_init)) | |
Variables | |
| int | yyleng |
| FILE * | yyin = NULL |
| FILE * | yyout = NULL |
| int | yylineno = 1 |
| char * | yytext |
| int | yy_flex_debug = 0 |
| int | embedcolno |
| int | embedposno |
| YY_DECL | |
| char * | yy_cp |
| char * | yy_bp |
| int | yy_act |
| #define BEGIN (yy_start) = 1 + 2 * |
Definition at line 377 of file ugbc.embed.yy.c.
Definition at line 961 of file ugbc.embed.yy.c.
| #define embed_create_buffer_ALREADY_DEFINED |
Definition at line 43 of file ugbc.embed.yy.c.
| #define embed_delete_buffer_ALREADY_DEFINED |
Definition at line 49 of file ugbc.embed.yy.c.
| #define embed_flex_debug_ALREADY_DEFINED |
Definition at line 265 of file ugbc.embed.yy.c.
| #define embed_flush_buffer_ALREADY_DEFINED |
Definition at line 79 of file ugbc.embed.yy.c.
| #define embed_init_buffer_ALREADY_DEFINED |
Definition at line 73 of file ugbc.embed.yy.c.
| #define embed_load_buffer_state_ALREADY_DEFINED |
Definition at line 85 of file ugbc.embed.yy.c.
| #define embed_scan_buffer_ALREADY_DEFINED |
Definition at line 55 of file ugbc.embed.yy.c.
| #define embed_scan_bytes_ALREADY_DEFINED |
Definition at line 67 of file ugbc.embed.yy.c.
| #define embed_scan_string_ALREADY_DEFINED |
Definition at line 61 of file ugbc.embed.yy.c.
| #define embed_switch_to_buffer_ALREADY_DEFINED |
Definition at line 91 of file ugbc.embed.yy.c.
| #define embedalloc_ALREADY_DEFINED |
Definition at line 223 of file ugbc.embed.yy.c.
| #define embedensure_buffer_stack_ALREADY_DEFINED |
Definition at line 109 of file ugbc.embed.yy.c.
| #define embedfree_ALREADY_DEFINED |
Definition at line 235 of file ugbc.embed.yy.c.
| #define embedin_ALREADY_DEFINED |
Definition at line 253 of file ugbc.embed.yy.c.
| #define embedleng_ALREADY_DEFINED |
Definition at line 247 of file ugbc.embed.yy.c.
| #define embedlex_ALREADY_DEFINED |
Definition at line 115 of file ugbc.embed.yy.c.
| #define embedlineno_ALREADY_DEFINED |
Definition at line 271 of file ugbc.embed.yy.c.
| #define embedout_ALREADY_DEFINED |
Definition at line 259 of file ugbc.embed.yy.c.
| #define embedpop_buffer_state_ALREADY_DEFINED |
Definition at line 103 of file ugbc.embed.yy.c.
| #define embedpush_buffer_state_ALREADY_DEFINED |
Definition at line 97 of file ugbc.embed.yy.c.
| #define embedrealloc_ALREADY_DEFINED |
Definition at line 229 of file ugbc.embed.yy.c.
| #define embedrestart_ALREADY_DEFINED |
Definition at line 121 of file ugbc.embed.yy.c.
| #define embedtext_ALREADY_DEFINED |
Definition at line 241 of file ugbc.embed.yy.c.
| #define embedwrap_ALREADY_DEFINED |
Definition at line 217 of file ugbc.embed.yy.c.
| #define EOB_ACT_CONTINUE_SCAN 0 |
Definition at line 421 of file ugbc.embed.yy.c.
| #define EOB_ACT_END_OF_FILE 1 |
Definition at line 422 of file ugbc.embed.yy.c.
| #define EOB_ACT_LAST_MATCH 2 |
Definition at line 423 of file ugbc.embed.yy.c.
| #define FLEX_BETA |
Definition at line 39 of file ugbc.embed.yy.c.
| #define FLEX_SCANNER |
Definition at line 34 of file ugbc.embed.yy.c.
| #define FLEXINT_H |
Definition at line 289 of file ugbc.embed.yy.c.
| #define INITIAL 0 |
Definition at line 866 of file ugbc.embed.yy.c.
| #define INT16_MAX (32767) |
Definition at line 331 of file ugbc.embed.yy.c.
| #define INT16_MIN (-32767-1) |
Definition at line 322 of file ugbc.embed.yy.c.
| #define INT32_MAX (2147483647) |
Definition at line 334 of file ugbc.embed.yy.c.
| #define INT32_MIN (-2147483647-1) |
Definition at line 325 of file ugbc.embed.yy.c.
| #define INT8_MAX (127) |
Definition at line 328 of file ugbc.embed.yy.c.
| #define INT8_MIN (-128) |
Definition at line 319 of file ugbc.embed.yy.c.
| #define REJECT reject_used_but_not_detected |
Definition at line 842 of file ugbc.embed.yy.c.
| #define RETURN | ( | b, | |
| c ) |
Definition at line 853 of file ugbc.embed.yy.c.
| #define SIZE_MAX (~(size_t)0) |
Definition at line 347 of file ugbc.embed.yy.c.
| #define UINT16_MAX (65535U) |
Definition at line 340 of file ugbc.embed.yy.c.
| #define UINT32_MAX (4294967295U) |
Definition at line 343 of file ugbc.embed.yy.c.
| #define UINT8_MAX (255U) |
Definition at line 337 of file ugbc.embed.yy.c.
| #define unput | ( | c | ) |
Definition at line 441 of file ugbc.embed.yy.c.
| #define YY_AT_BOL | ( | ) |
Definition at line 582 of file ugbc.embed.yy.c.
| #define YY_BREAK /*LINTED*/break; |
Definition at line 1040 of file ugbc.embed.yy.c.
| #define YY_BUF_SIZE 16384 |
Definition at line 399 of file ugbc.embed.yy.c.
| #define YY_BUFFER_EOF_PENDING 2 |
Definition at line 503 of file ugbc.embed.yy.c.
| #define YY_BUFFER_NEW 0 |
Definition at line 491 of file ugbc.embed.yy.c.
| #define YY_BUFFER_NORMAL 1 |
Definition at line 492 of file ugbc.embed.yy.c.
| #define yy_create_buffer embed_create_buffer |
Definition at line 9 of file ugbc.embed.yy.c.
| #define YY_CURRENT_BUFFER |
Definition at line 519 of file ugbc.embed.yy.c.
| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] |
Definition at line 525 of file ugbc.embed.yy.c.
| #define YY_DECL int yylex (void) |
Definition at line 1028 of file ugbc.embed.yy.c.
| #define YY_DECL_IS_OURS 1 |
Definition at line 1024 of file ugbc.embed.yy.c.
| #define yy_delete_buffer embed_delete_buffer |
Definition at line 10 of file ugbc.embed.yy.c.
| #define YY_DO_BEFORE_ACTION |
Definition at line 608 of file ugbc.embed.yy.c.
| #define YY_END_OF_BUFFER 80 |
Definition at line 615 of file ugbc.embed.yy.c.
| #define YY_END_OF_BUFFER_CHAR 0 |
Definition at line 388 of file ugbc.embed.yy.c.
| #define YY_EXIT_FAILURE 2 |
| #define YY_EXTRA_TYPE void * |
Definition at line 877 of file ugbc.embed.yy.c.
| #define YY_FATAL_ERROR | ( | msg | ) |
Definition at line 1015 of file ugbc.embed.yy.c.
| int yy_flex_debug embed_flex_debug |
Definition at line 21 of file ugbc.embed.yy.c.
| #define YY_FLEX_MAJOR_VERSION 2 |
Definition at line 35 of file ugbc.embed.yy.c.
| #define YY_FLEX_MINOR_VERSION 6 |
Definition at line 36 of file ugbc.embed.yy.c.
| #define YY_FLEX_SUBMINOR_VERSION 4 |
Definition at line 37 of file ugbc.embed.yy.c.
| #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) |
Definition at line 553 of file ugbc.embed.yy.c.
| #define yy_flush_buffer embed_flush_buffer |
Definition at line 15 of file ugbc.embed.yy.c.
| #define yy_init_buffer embed_init_buffer |
Definition at line 14 of file ugbc.embed.yy.c.
| #define YY_INPUT | ( | buf, | |
| result, | |||
| max_size ) |
Definition at line 968 of file ugbc.embed.yy.c.
| #define YY_INT_ALIGNED short int |
Definition at line 5 of file ugbc.embed.yy.c.
| #define YY_LESS_LINENO | ( | n | ) |
Definition at line 425 of file ugbc.embed.yy.c.
| #define YY_LINENO_REWIND_TO | ( | ptr | ) |
Definition at line 426 of file ugbc.embed.yy.c.
| void yy_load_buffer_state |
Definition at line 16 of file ugbc.embed.yy.c.
| #define YY_MORE_ADJ 0 |
Definition at line 844 of file ugbc.embed.yy.c.
| #define yy_new_buffer yy_create_buffer |
Definition at line 563 of file ugbc.embed.yy.c.
Definition at line 387 of file ugbc.embed.yy.c.
| #define YY_NULL 0 |
Definition at line 366 of file ugbc.embed.yy.c.
| #define YY_NUM_RULES 79 |
Definition at line 614 of file ugbc.embed.yy.c.
| #define YY_READ_BUF_SIZE 8192 |
Definition at line 952 of file ugbc.embed.yy.c.
| #define YY_RESTORE_YY_MORE_OFFSET |
Definition at line 845 of file ugbc.embed.yy.c.
| #define YY_RULE_SETUP YY_USER_ACTION |
Definition at line 1043 of file ugbc.embed.yy.c.
| #define YY_SC_TO_UI | ( | c | ) |
Definition at line 371 of file ugbc.embed.yy.c.
| #define yy_scan_buffer embed_scan_buffer |
Definition at line 11 of file ugbc.embed.yy.c.
| #define yy_scan_bytes embed_scan_bytes |
Definition at line 13 of file ugbc.embed.yy.c.
| #define yy_scan_string embed_scan_string |
Definition at line 12 of file ugbc.embed.yy.c.
| #define yy_set_bol | ( | at_bol | ) |
Definition at line 573 of file ugbc.embed.yy.c.
| #define yy_set_interactive | ( | is_interactive | ) |
Definition at line 564 of file ugbc.embed.yy.c.
| #define YY_START (((yy_start) - 1) / 2) |
Definition at line 382 of file ugbc.embed.yy.c.
| #define YY_START_STACK_INCR 25 |
Definition at line 1010 of file ugbc.embed.yy.c.
| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) |
Definition at line 405 of file ugbc.embed.yy.c.
| #define YY_STATE_EOF | ( | state | ) |
Definition at line 385 of file ugbc.embed.yy.c.
| #define YY_STRUCT_YY_BUFFER_STATE |
Definition at line 444 of file ugbc.embed.yy.c.
| #define yy_switch_to_buffer embed_switch_to_buffer |
Definition at line 17 of file ugbc.embed.yy.c.
| #define YY_TYPEDEF_YY_BUFFER_STATE |
Definition at line 408 of file ugbc.embed.yy.c.
| #define YY_TYPEDEF_YY_SIZE_T |
Definition at line 413 of file ugbc.embed.yy.c.
| #define YY_USER_ACTION |
Definition at line 1035 of file ugbc.embed.yy.c.
| #define yyalloc embedalloc |
Definition at line 30 of file ugbc.embed.yy.c.
| #define yyconst const |
Definition at line 357 of file ugbc.embed.yy.c.
| void yyensure_buffer_stack |
Definition at line 20 of file ugbc.embed.yy.c.
| #define yyfree embedfree |
Definition at line 32 of file ugbc.embed.yy.c.
| int yyget_debug |
Definition at line 147 of file ugbc.embed.yy.c.
| YY_EXTRA_TYPE yyget_extra |
Definition at line 159 of file ugbc.embed.yy.c.
| FILE * yyget_in |
Definition at line 171 of file ugbc.embed.yy.c.
| int yyget_leng |
Definition at line 195 of file ugbc.embed.yy.c.
| int yyget_lineno |
Definition at line 207 of file ugbc.embed.yy.c.
| FILE * yyget_out |
Definition at line 183 of file ugbc.embed.yy.c.
| char * yyget_text |
Definition at line 201 of file ugbc.embed.yy.c.
| FILE * yyin embedin |
Definition at line 22 of file ugbc.embed.yy.c.
| int yyleng embedleng |
Definition at line 23 of file ugbc.embed.yy.c.
| #define yyless | ( | n | ) |
Definition at line 429 of file ugbc.embed.yy.c.
| #define yyless | ( | n | ) |
Definition at line 429 of file ugbc.embed.yy.c.
| #define yylex | ( | void | ) |
Definition at line 24 of file ugbc.embed.yy.c.
| int yylex_destroy |
Definition at line 141 of file ugbc.embed.yy.c.
| #define yylex_init embedlex_init |
Definition at line 129 of file ugbc.embed.yy.c.
| #define yylex_init_extra embedlex_init_extra |
Definition at line 135 of file ugbc.embed.yy.c.
| int yylineno embedlineno |
Definition at line 25 of file ugbc.embed.yy.c.
| #define yymore | ( | ) |
Definition at line 843 of file ugbc.embed.yy.c.
| #define yynoreturn |
Definition at line 362 of file ugbc.embed.yy.c.
| FILE * yyout embedout |
Definition at line 26 of file ugbc.embed.yy.c.
| void yypop_buffer_state |
Definition at line 19 of file ugbc.embed.yy.c.
| #define yypush_buffer_state embedpush_buffer_state |
Definition at line 18 of file ugbc.embed.yy.c.
| #define yyrealloc embedrealloc |
Definition at line 31 of file ugbc.embed.yy.c.
| #define yyrestart embedrestart |
Definition at line 27 of file ugbc.embed.yy.c.
| #define yyset_debug embedset_debug |
Definition at line 153 of file ugbc.embed.yy.c.
| #define yyset_extra embedset_extra |
Definition at line 165 of file ugbc.embed.yy.c.
| #define yyset_in embedset_in |
Definition at line 177 of file ugbc.embed.yy.c.
| #define yyset_lineno embedset_lineno |
Definition at line 213 of file ugbc.embed.yy.c.
| #define yyset_out embedset_out |
Definition at line 189 of file ugbc.embed.yy.c.
| #define YYSTATE YY_START |
Definition at line 383 of file ugbc.embed.yy.c.
| #define YYTABLES_NAME "yytables" |
| #define yyterminate | ( | ) |
Definition at line 1005 of file ugbc.embed.yy.c.
| char * yytext embedtext |
Definition at line 28 of file ugbc.embed.yy.c.
| #define yytext_ptr yytext |
Definition at line 598 of file ugbc.embed.yy.c.
| int yywrap |
Definition at line 29 of file ugbc.embed.yy.c.
| typedef short int flex_int16_t |
Definition at line 311 of file ugbc.embed.yy.c.
| typedef int flex_int32_t |
Definition at line 312 of file ugbc.embed.yy.c.
| typedef signed char flex_int8_t |
Definition at line 310 of file ugbc.embed.yy.c.
| typedef unsigned short int flex_uint16_t |
Definition at line 314 of file ugbc.embed.yy.c.
| typedef unsigned int flex_uint32_t |
Definition at line 315 of file ugbc.embed.yy.c.
| typedef unsigned char flex_uint8_t |
Definition at line 313 of file ugbc.embed.yy.c.
| typedef struct yy_buffer_state* YY_BUFFER_STATE |
Definition at line 409 of file ugbc.embed.yy.c.
| typedef flex_uint8_t YY_CHAR |
Definition at line 585 of file ugbc.embed.yy.c.
| typedef size_t yy_size_t |
Definition at line 414 of file ugbc.embed.yy.c.
| typedef int yy_state_type |
Definition at line 589 of file ugbc.embed.yy.c.
| if | ( | ! | yy_init | ) |
Definition at line 1054 of file ugbc.embed.yy.c.
| YY_BUFFER_STATE yy_create_buffer | ( | FILE * | file, |
| int | size ) |
| void yy_delete_buffer | ( | YY_BUFFER_STATE | b | ) |
| void yy_flush_buffer | ( | YY_BUFFER_STATE | b | ) |
| YY_BUFFER_STATE yy_scan_buffer | ( | char * | base, |
| yy_size_t | size ) |
| YY_BUFFER_STATE yy_scan_bytes | ( | const char * | bytes, |
| int | len ) |
| YY_BUFFER_STATE yy_scan_string | ( | const char * | yy_str | ) |
| void yy_switch_to_buffer | ( | YY_BUFFER_STATE | new_buffer | ) |
| void * yyalloc | ( | yy_size_t | ) |
| void yyfree | ( | void * | ) |
| void yypush_buffer_state | ( | YY_BUFFER_STATE | new_buffer | ) |
| void * yyrealloc | ( | void * | , |
| yy_size_t | ) |
| void yyrestart | ( | FILE * | input_file | ) |
| void yyset_debug | ( | int | debug_flag | ) |
| void yyset_extra | ( | YY_EXTRA_TYPE | user_defined | ) |
| void yyset_in | ( | FILE * | _in_str | ) |
| void yyset_lineno | ( | int | _line_number | ) |
| void yyset_out | ( | FILE * | _out_str | ) |
|
extern |
Definition at line 88 of file ugbc.embed.tab.c.
|
extern |
Definition at line 89 of file ugbc.embed.tab.c.
| int yy_act |
Definition at line 1052 of file ugbc.embed.yy.c.
| char * yy_bp |
Definition at line 1051 of file ugbc.embed.yy.c.
| char* yy_cp |
Definition at line 1051 of file ugbc.embed.yy.c.
| YY_DECL |
The main scanner function which does all the work.
Definition at line 1048 of file ugbc.embed.yy.c.
| int yy_flex_debug = 0 |
Definition at line 837 of file ugbc.embed.yy.c.
| FILE* yyin = NULL |
Definition at line 587 of file ugbc.embed.yy.c.
| int yyleng |
Definition at line 530 of file ugbc.embed.yy.c.
| int yylineno = 1 |
This variable keeps track of the current line number when reading the input file. Instead of having to manually count each newline character (
), we instructed Flex to automatically update this variable whenever it encounters a newline. In Bison, we ensured that Flex supports and exports it by using the command option yylineno option in the definitions section.
Since the variable is defined in the Flex-generated code, we declare it as extern in Bison's C section to access it. Without this variable, when Bison encounters a syntax error, the yyerror function would simply return a terse "syntax error." With this variable, we can provide much more precise feedback to the user. If we reuse the same parser to parse multiple files sequentially, we reset yylineno = 1; before starting to parse a new file. Currently, this variable only counts rows. If we need to know exactly which column an error is in (e.g., "line 10, character 5"), we use the more complex YYLTYPE structure with the locations in Bison.
Definition at line 592 of file ugbc.embed.yy.c.
| FILE * yyout = NULL |
Definition at line 419 of file ugbc.embed.yy.c.
| char* yytext |
Definition at line 846 of file ugbc.embed.yy.c.