-/* $Id: bison.y.in,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: nasm-bison.y,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: nasm-bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: token.l.in,v 1.1 2001/05/15 05:20:39 peter Exp $
+/* $Id: token.l.in,v 1.2 2001/05/20 08:35:18 peter Exp $
* Main lexer
*
* Copyright (C) 2001 Peter Johnson
#include <string.h>
#include "symrec.h"
#include "bytecode.h"
+#include "errwarn.h"
#include "bison.tab.h"
+
%}
%option noyywrap
%option nounput
%option case-insensitive
static char *locallabel_base = (char *)NULL;
+%x DIRECTIVE DIRECTIVE2
+
DIGIT [0-9]
BINDIGIT [01]
OCTDIGIT [0-7]
yylval.double_val = strtod(yytext, (char **)NULL);
return FLTNUM;
}
- /* directives */
-bits { return BITS; }
-section { return SECTION; }
-segment { return SECTION; }
-absolute { return ABSOLUTE; }
-extern { return EXTERN; }
-global { return GLOBAL; }
-common { return COMMON; }
+ /* directive: [name value] */
+^"[" { BEGIN DIRECTIVE; return '['; }
+<DIRECTIVE>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE2>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE2>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE>{WS}+ ;
+<DIRECTIVE2>{WS}+ ;
+<DIRECTIVE>[a-z]+ {
+ BEGIN DIRECTIVE2;
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_NAME;
+}
+ /* everything printable except for ' ', '[' and ']'. */
+<DIRECTIVE2>[!-Z\^-~]+ {
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_VAL;
+}
+<DIRECTIVE>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
+<DIRECTIVE2>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
/* size specifiers */
byte { yylval.int_val = 1; return BYTE; }
if(locallabel_base)
free(locallabel_base);
locallabel_base = strdup(yytext);
+ if(!locallabel_base)
+ Fatal(FATAL_NOMEM);
return s->type;
}
{WS}+ ;
-\n return '\n';
+\n return '\n';
+
+. { Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0])); }
-/* $Id: bison.y,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: bison.y.in,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: bison.y.in,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: nasm-bison.y,v 1.2 2001/05/18 21:42:31 peter Exp $
+/* $Id: nasm-bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
#include "symrec.h"
#include "globals.h"
#include "bytecode.h"
+#include "errwarn.h"
#define YYDEBUG 1
%union {
unsigned long int_val;
+ char *str_val;
double double_val;
symrec *sym;
effaddr ea_val;
%token <int_val> INTNUM
%token <double_val> FLTNUM
-%token BITS SECTION ABSOLUTE EXTERN GLOBAL COMMON
+%token <str_val> DIRECTIVE_NAME DIRECTIVE_VAL
%token <int_val> BYTE WORD DWORD QWORD TWORD DQWORD
%token <int_val> DECLARE_DATA
%token <int_val> RESERVE_SPACE
%type <bc> aaa aad idiv imul in loopz lsl
%type <bc> line exp instr instrbase
+
%type <int_val> fpureg reg32 reg16 reg8 reg_dess reg_fsgs reg_notcs
%type <ea_val> mem memaddr memexp
%type <ea_val> mem8x mem16x mem32x mem64x mem80x mem128x
line: '\n' { $$.len = 0; line_number++; }
| exp '\n' { DebugPrintBC(&$1); $$ = $1; line_number++; }
+ | directive '\n' { line_number++; }
| error '\n' { yyerrok; line_number++; }
;
;
/* directives */
-directive: bits
- | section
- | absolute
- | extern
- | global
- | common
-;
-
-bits: '[' BITS INTNUM ']' { }
-;
-section: '[' SECTION ']' { }
-;
-absolute: '[' ABSOLUTE INTNUM ']' { }
-;
-extern: '[' EXTERN ']' { }
-;
-global: '[' GLOBAL ']' { }
-;
-common: '[' COMMON ']' { }
+directive: '[' DIRECTIVE_NAME DIRECTIVE_VAL ']' {
+ printf("Directive: Name='%s' Value='%s'\n", $2, $3);
+ }
+ | '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
+ /*Error(ERR_MISSING, "%c", ']');*/
+ fprintf(stderr, "missing ']'\n");
+ }
+ | '[' DIRECTIVE_NAME error {
+ Error(ERR_MISSING_ARG, (char *)NULL, $2);
+ }
;
/* register groupings */
-/* $Id: token.l.in,v 1.1 2001/05/15 05:20:39 peter Exp $
+/* $Id: token.l.in,v 1.2 2001/05/20 08:35:18 peter Exp $
* Main lexer
*
* Copyright (C) 2001 Peter Johnson
#include <string.h>
#include "symrec.h"
#include "bytecode.h"
+#include "errwarn.h"
#include "bison.tab.h"
+
%}
%option noyywrap
%option nounput
%option case-insensitive
static char *locallabel_base = (char *)NULL;
+%x DIRECTIVE DIRECTIVE2
+
DIGIT [0-9]
BINDIGIT [01]
OCTDIGIT [0-7]
yylval.double_val = strtod(yytext, (char **)NULL);
return FLTNUM;
}
- /* directives */
-bits { return BITS; }
-section { return SECTION; }
-segment { return SECTION; }
-absolute { return ABSOLUTE; }
-extern { return EXTERN; }
-global { return GLOBAL; }
-common { return COMMON; }
+ /* directive: [name value] */
+^"[" { BEGIN DIRECTIVE; return '['; }
+<DIRECTIVE>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE2>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE2>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE>{WS}+ ;
+<DIRECTIVE2>{WS}+ ;
+<DIRECTIVE>[a-z]+ {
+ BEGIN DIRECTIVE2;
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_NAME;
+}
+ /* everything printable except for ' ', '[' and ']'. */
+<DIRECTIVE2>[!-Z\^-~]+ {
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_VAL;
+}
+<DIRECTIVE>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
+<DIRECTIVE2>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
/* size specifiers */
byte { yylval.int_val = 1; return BYTE; }
if(locallabel_base)
free(locallabel_base);
locallabel_base = strdup(yytext);
+ if(!locallabel_base)
+ Fatal(FATAL_NOMEM);
return s->type;
}
{WS}+ ;
-\n return '\n';
+\n return '\n';
+
+. { Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0])); }
-/* $Id: token.l,v 1.1 2001/05/15 05:20:39 peter Exp $
+/* $Id: token.l,v 1.2 2001/05/20 08:35:18 peter Exp $
* Main lexer
*
* Copyright (C) 2001 Peter Johnson
#include <string.h>
#include "symrec.h"
#include "bytecode.h"
+#include "errwarn.h"
#include "bison.tab.h"
+
%}
%option noyywrap
%option nounput
%option case-insensitive
static char *locallabel_base = (char *)NULL;
+%x DIRECTIVE DIRECTIVE2
+
DIGIT [0-9]
BINDIGIT [01]
OCTDIGIT [0-7]
yylval.double_val = strtod(yytext, (char **)NULL);
return FLTNUM;
}
- /* directives */
-bits { return BITS; }
-section { return SECTION; }
-segment { return SECTION; }
-absolute { return ABSOLUTE; }
-extern { return EXTERN; }
-global { return GLOBAL; }
-common { return COMMON; }
+ /* directive: [name value] */
+^"[" { BEGIN DIRECTIVE; return '['; }
+<DIRECTIVE>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE2>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE2>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE>{WS}+ ;
+<DIRECTIVE2>{WS}+ ;
+<DIRECTIVE>[a-z]+ {
+ BEGIN DIRECTIVE2;
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_NAME;
+}
+ /* everything printable except for ' ', '[' and ']'. */
+<DIRECTIVE2>[!-Z\^-~]+ {
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_VAL;
+}
+<DIRECTIVE>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
+<DIRECTIVE2>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
/* size specifiers */
byte { yylval.int_val = 1; return BYTE; }
if(locallabel_base)
free(locallabel_base);
locallabel_base = strdup(yytext);
+ if(!locallabel_base)
+ Fatal(FATAL_NOMEM);
return s->type;
}
{WS}+ ;
-\n return '\n';
+\n return '\n';
+
+. { Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0])); }
-/* $Id: token.l.in,v 1.1 2001/05/15 05:20:39 peter Exp $
+/* $Id: token.l.in,v 1.2 2001/05/20 08:35:18 peter Exp $
* Main lexer
*
* Copyright (C) 2001 Peter Johnson
#include <string.h>
#include "symrec.h"
#include "bytecode.h"
+#include "errwarn.h"
#include "bison.tab.h"
+
%}
%option noyywrap
%option nounput
%option case-insensitive
static char *locallabel_base = (char *)NULL;
+%x DIRECTIVE DIRECTIVE2
+
DIGIT [0-9]
BINDIGIT [01]
OCTDIGIT [0-7]
yylval.double_val = strtod(yytext, (char **)NULL);
return FLTNUM;
}
- /* directives */
-bits { return BITS; }
-section { return SECTION; }
-segment { return SECTION; }
-absolute { return ABSOLUTE; }
-extern { return EXTERN; }
-global { return GLOBAL; }
-common { return COMMON; }
+ /* directive: [name value] */
+^"[" { BEGIN DIRECTIVE; return '['; }
+<DIRECTIVE>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE2>"]" { BEGIN INITIAL; return ']'; }
+<DIRECTIVE>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE2>\n { BEGIN INITIAL; return '\n'; }
+<DIRECTIVE>{WS}+ ;
+<DIRECTIVE2>{WS}+ ;
+<DIRECTIVE>[a-z]+ {
+ BEGIN DIRECTIVE2;
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_NAME;
+}
+ /* everything printable except for ' ', '[' and ']'. */
+<DIRECTIVE2>[!-Z\^-~]+ {
+ yylval.str_val = strdup(yytext);
+ if(!yylval.str_val)
+ Fatal(FATAL_NOMEM);
+ return DIRECTIVE_VAL;
+}
+<DIRECTIVE>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
+<DIRECTIVE2>. {
+ Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0]));
+}
/* size specifiers */
byte { yylval.int_val = 1; return BYTE; }
if(locallabel_base)
free(locallabel_base);
locallabel_base = strdup(yytext);
+ if(!locallabel_base)
+ Fatal(FATAL_NOMEM);
return s->type;
}
{WS}+ ;
-\n return '\n';
+\n return '\n';
+
+. { Warning(WARN_UNREC_CHAR, (char *)NULL, conv_unprint(yytext[0])); }