asm: run dos2unix on yaccprt1.y

Signed-off-by: Vegard Nossum <vegard.nossum@gmail.com>
This commit is contained in:
Vegard Nossum
2009-06-11 09:03:53 +02:00
parent c6d8069eed
commit 85f382ffad

View File

@@ -1,432 +1,432 @@
%{ %{
#include "symbol.h" #include "symbol.h"
#include "asm.h" #include "asm.h"
#include "output.h" #include "output.h"
#include "mylink.h" #include "mylink.h"
#include "fstack.h" #include "fstack.h"
#include "mymath.h" #include "mymath.h"
#include "rpn.h" #include "rpn.h"
#include "main.h" #include "main.h"
#include "lexer.h" #include "lexer.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
char *tzNewMacro; char *tzNewMacro;
ULONG ulNewMacroSize; ULONG ulNewMacroSize;
ULONG symvaluetostring( char *dest, char *sym ) ULONG symvaluetostring( char *dest, char *sym )
{ {
if( sym_isString(sym) ) if( sym_isString(sym) )
strcpy( dest, sym_GetStringValue(sym) ); strcpy( dest, sym_GetStringValue(sym) );
else else
sprintf( dest, "$%lX", sym_GetConstantValue(sym) ); sprintf( dest, "$%lX", sym_GetConstantValue(sym) );
return( strlen(dest) ); return( strlen(dest) );
} }
ULONG str2int( char *s ) ULONG str2int( char *s )
{ {
ULONG r=0; ULONG r=0;
while( *s ) while( *s )
{ {
r<<=8; r<<=8;
r|=(UBYTE)(*s++); r|=(UBYTE)(*s++);
} }
return( r ); return( r );
} }
ULONG isWhiteSpace( char s ) ULONG isWhiteSpace( char s )
{ {
return( s==' ' || s=='\t' || s=='\0' || s=='\n' ); return( s==' ' || s=='\t' || s=='\0' || s=='\n' );
} }
ULONG isRept( char *s ) ULONG isRept( char *s )
{ {
return( (strnicmp(s,"REPT",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) ); return( (strnicmp(s,"REPT",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
} }
ULONG isEndr( char *s ) ULONG isEndr( char *s )
{ {
return( (strnicmp(s,"Endr",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) ); return( (strnicmp(s,"Endr",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
} }
void copyrept( void ) void copyrept( void )
{ {
SLONG level=1, len, instring=0; SLONG level=1, len, instring=0;
char *src=pCurrentBuffer->pBuffer; char *src=pCurrentBuffer->pBuffer;
while( *src && level ) while( *src && level )
{ {
if( instring==0 ) if( instring==0 )
{ {
if( isRept(src) ) if( isRept(src) )
{ {
level+=1; level+=1;
src+=4; src+=4;
} }
else if( isEndr(src) ) else if( isEndr(src) )
{ {
level-=1; level-=1;
src+=4; src+=4;
} }
else else
{ {
if( *src=='\"' ) if( *src=='\"' )
instring=1; instring=1;
src+=1; src+=1;
} }
} }
else else
{ {
if( *src=='\\' ) if( *src=='\\' )
{ {
src+=2; src+=2;
} }
else if( *src=='\"' ) else if( *src=='\"' )
{ {
src+=1; src+=1;
instring=0; instring=0;
} }
else else
{ {
src+=1; src+=1;
} }
} }
} }
len=src-pCurrentBuffer->pBuffer-4; len=src-pCurrentBuffer->pBuffer-4;
src=pCurrentBuffer->pBuffer; src=pCurrentBuffer->pBuffer;
ulNewMacroSize=len; ulNewMacroSize=len;
if( (tzNewMacro=(char *)malloc(ulNewMacroSize+1))!=NULL ) if( (tzNewMacro=(char *)malloc(ulNewMacroSize+1))!=NULL )
{ {
ULONG i; ULONG i;
tzNewMacro[ulNewMacroSize]=0; tzNewMacro[ulNewMacroSize]=0;
for( i=0; i<ulNewMacroSize; i+=1 ) for( i=0; i<ulNewMacroSize; i+=1 )
{ {
if( (tzNewMacro[i]=src[i])=='\n' ) if( (tzNewMacro[i]=src[i])=='\n' )
nLineNo+=1; nLineNo+=1;
} }
} }
else else
fatalerror( "No mem for REPT block" ); fatalerror( "No mem for REPT block" );
yyskipbytes( ulNewMacroSize+4 ); yyskipbytes( ulNewMacroSize+4 );
} }
ULONG isMacro( char *s ) ULONG isMacro( char *s )
{ {
return( (strnicmp(s,"MACRO",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[5]) ); return( (strnicmp(s,"MACRO",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[5]) );
} }
ULONG isEndm( char *s ) ULONG isEndm( char *s )
{ {
return( (strnicmp(s,"Endm",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) ); return( (strnicmp(s,"Endm",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
} }
void copymacro( void ) void copymacro( void )
{ {
SLONG level=1, len, instring=0; SLONG level=1, len, instring=0;
char *src=pCurrentBuffer->pBuffer; char *src=pCurrentBuffer->pBuffer;
while( *src && level ) while( *src && level )
{ {
if( instring==0 ) if( instring==0 )
{ {
if( isMacro(src) ) if( isMacro(src) )
{ {
level+=1; level+=1;
src+=4; src+=4;
} }
else if( isEndm(src) ) else if( isEndm(src) )
{ {
level-=1; level-=1;
src+=4; src+=4;
} }
else else
{ {
if( *src=='\"' ) if( *src=='\"' )
instring=1; instring=1;
src+=1; src+=1;
} }
} }
else else
{ {
if( *src=='\\' ) if( *src=='\\' )
{ {
src+=2; src+=2;
} }
else if( *src=='\"' ) else if( *src=='\"' )
{ {
src+=1; src+=1;
instring=0; instring=0;
} }
else else
{ {
src+=1; src+=1;
} }
} }
} }
len=src-pCurrentBuffer->pBuffer-4; len=src-pCurrentBuffer->pBuffer-4;
src=pCurrentBuffer->pBuffer; src=pCurrentBuffer->pBuffer;
ulNewMacroSize=len; ulNewMacroSize=len;
if( (tzNewMacro=(char *)malloc(ulNewMacroSize+2))!=NULL ) if( (tzNewMacro=(char *)malloc(ulNewMacroSize+2))!=NULL )
{ {
ULONG i; ULONG i;
tzNewMacro[ulNewMacroSize]='\n'; tzNewMacro[ulNewMacroSize]='\n';
tzNewMacro[ulNewMacroSize+1]=0; tzNewMacro[ulNewMacroSize+1]=0;
for( i=0; i<ulNewMacroSize; i+=1 ) for( i=0; i<ulNewMacroSize; i+=1 )
{ {
if( (tzNewMacro[i]=src[i])=='\n' ) if( (tzNewMacro[i]=src[i])=='\n' )
nLineNo+=1; nLineNo+=1;
} }
} }
else else
fatalerror( "No mem for MACRO definition" ); fatalerror( "No mem for MACRO definition" );
yyskipbytes( ulNewMacroSize+4 ); yyskipbytes( ulNewMacroSize+4 );
} }
ULONG isIf( char *s ) ULONG isIf( char *s )
{ {
return( (strnicmp(s,"If",2)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[2]) ); return( (strnicmp(s,"If",2)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[2]) );
} }
ULONG isElse( char *s ) ULONG isElse( char *s )
{ {
return( (strnicmp(s,"Else",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) ); return( (strnicmp(s,"Else",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
} }
ULONG isEndc( char *s ) ULONG isEndc( char *s )
{ {
return( (strnicmp(s,"Endc",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) ); return( (strnicmp(s,"Endc",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
} }
void if_skip_to_else( void ) void if_skip_to_else( void )
{ {
SLONG level=1, len, instring=0; SLONG level=1, len, instring=0;
char *src=pCurrentBuffer->pBuffer; char *src=pCurrentBuffer->pBuffer;
while( *src && level ) while( *src && level )
{ {
if( *src=='\n' ) if( *src=='\n' )
nLineNo+=1; nLineNo+=1;
if( instring==0 ) if( instring==0 )
{ {
if( isIf(src) ) if( isIf(src) )
{ {
level+=1; level+=1;
src+=2; src+=2;
} }
else if( level==1 && isElse(src) ) else if( level==1 && isElse(src) )
{ {
level-=1; level-=1;
src+=4; src+=4;
} }
else if( isEndc(src) ) else if( isEndc(src) )
{ {
level-=1; level-=1;
if( level!=0 ) if( level!=0 )
src+=4; src+=4;
} }
else else
{ {
if( *src=='\"' ) if( *src=='\"' )
instring=1; instring=1;
src+=1; src+=1;
} }
} }
else else
{ {
if( *src=='\\' ) if( *src=='\\' )
{ {
src+=2; src+=2;
} }
else if( *src=='\"' ) else if( *src=='\"' )
{ {
src+=1; src+=1;
instring=0; instring=0;
} }
else else
{ {
src+=1; src+=1;
} }
} }
} }
len=src-pCurrentBuffer->pBuffer; len=src-pCurrentBuffer->pBuffer;
yyskipbytes( len ); yyskipbytes( len );
yyunput( '\n' ); yyunput( '\n' );
nLineNo-=1; nLineNo-=1;
} }
void if_skip_to_endc( void ) void if_skip_to_endc( void )
{ {
SLONG level=1, len, instring=0; SLONG level=1, len, instring=0;
char *src=pCurrentBuffer->pBuffer; char *src=pCurrentBuffer->pBuffer;
while( *src && level ) while( *src && level )
{ {
if( *src=='\n' ) if( *src=='\n' )
nLineNo+=1; nLineNo+=1;
if( instring==0 ) if( instring==0 )
{ {
if( isIf(src) ) if( isIf(src) )
{ {
level+=1; level+=1;
src+=2; src+=2;
} }
else if( isEndc(src) ) else if( isEndc(src) )
{ {
level-=1; level-=1;
if( level!=0 ) if( level!=0 )
src+=4; src+=4;
} }
else else
{ {
if( *src=='\"' ) if( *src=='\"' )
instring=1; instring=1;
src+=1; src+=1;
} }
} }
else else
{ {
if( *src=='\\' ) if( *src=='\\' )
{ {
src+=2; src+=2;
} }
else if( *src=='\"' ) else if( *src=='\"' )
{ {
src+=1; src+=1;
instring=0; instring=0;
} }
else else
{ {
src+=1; src+=1;
} }
} }
} }
len=src-pCurrentBuffer->pBuffer; len=src-pCurrentBuffer->pBuffer;
yyskipbytes( len ); yyskipbytes( len );
yyunput( '\n' ); yyunput( '\n' );
nLineNo-=1; nLineNo-=1;
} }
#ifdef PCENGINE #ifdef PCENGINE
ULONG ZP( struct Expression *expr ) ULONG ZP( struct Expression *expr )
{ {
return( (!rpn_isReloc(expr)) && (expr->nVal>0x1FFF) && (expr->nVal<0x2100) ); return( (!rpn_isReloc(expr)) && (expr->nVal>0x1FFF) && (expr->nVal<0x2100) );
} }
void out_ZPByte( struct Expression *expr ) void out_ZPByte( struct Expression *expr )
{ {
if( rpn_isReloc(expr) ) if( rpn_isReloc(expr) )
{ {
rpn_CheckZP(expr,expr); rpn_CheckZP(expr,expr);
out_RelByte(expr); out_RelByte(expr);
} }
else else
{ {
if( ZP(expr) ) if( ZP(expr) )
out_AbsByte(expr->nVal-0x2000); out_AbsByte(expr->nVal-0x2000);
else else
fatalerror( "Value not in zeropage"); fatalerror( "Value not in zeropage");
} }
} }
#endif #endif
%} %}
%union %union
{ {
char tzSym[MAXSYMLEN+1]; char tzSym[MAXSYMLEN+1];
char tzString[256]; char tzString[256];
struct Expression sVal; struct Expression sVal;
SLONG nConstValue; SLONG nConstValue;
} }
%type <sVal> relocconst %type <sVal> relocconst
%type <nConstValue> const %type <nConstValue> const
%type <nConstValue> const_3bit %type <nConstValue> const_3bit
%type <sVal> const_8bit %type <sVal> const_8bit
%type <sVal> const_16bit %type <sVal> const_16bit
%type <sVal> const_PCrel %type <sVal> const_PCrel
%type <nConstValue> sectiontype %type <nConstValue> sectiontype
%type <tzString> string %type <tzString> string
%token <nConstValue> T_NUMBER %token <nConstValue> T_NUMBER
%token <tzString> T_STRING %token <tzString> T_STRING
%left T_OP_LOGICNOT %left T_OP_LOGICNOT
%left T_OP_LOGICOR T_OP_LOGICAND T_OP_LOGICEQU %left T_OP_LOGICOR T_OP_LOGICAND T_OP_LOGICEQU
%left T_OP_LOGICGT T_OP_LOGICLT T_OP_LOGICGE T_OP_LOGICLE T_OP_LOGICNE %left T_OP_LOGICGT T_OP_LOGICLT T_OP_LOGICGE T_OP_LOGICLE T_OP_LOGICNE
%left T_OP_ADD T_OP_SUB %left T_OP_ADD T_OP_SUB
%left T_OP_OR T_OP_XOR T_OP_AND %left T_OP_OR T_OP_XOR T_OP_AND
%left T_OP_SHL T_OP_SHR %left T_OP_SHL T_OP_SHR
%left T_OP_MUL T_OP_DIV T_OP_MOD %left T_OP_MUL T_OP_DIV T_OP_MOD
%left T_OP_NOT %left T_OP_NOT
%left T_OP_DEF %left T_OP_DEF
%left T_OP_BANK %left T_OP_BANK
%left T_OP_SIN %left T_OP_SIN
%left T_OP_COS %left T_OP_COS
%left T_OP_TAN %left T_OP_TAN
%left T_OP_ASIN %left T_OP_ASIN
%left T_OP_ACOS %left T_OP_ACOS
%left T_OP_ATAN %left T_OP_ATAN
%left T_OP_ATAN2 %left T_OP_ATAN2
%left T_OP_FDIV %left T_OP_FDIV
%left T_OP_FMUL %left T_OP_FMUL
%left T_OP_STRCMP %left T_OP_STRCMP
%left T_OP_STRIN %left T_OP_STRIN
%left T_OP_STRSUB %left T_OP_STRSUB
%left T_OP_STRLEN %left T_OP_STRLEN
%left T_OP_STRCAT %left T_OP_STRCAT
%left T_OP_STRUPR %left T_OP_STRUPR
%left T_OP_STRLWR %left T_OP_STRLWR
%left NEG /* negation--unary minus */ %left NEG /* negation--unary minus */
%token <tzSym> T_LABEL %token <tzSym> T_LABEL
%token <tzSym> T_ID %token <tzSym> T_ID
%token <tzSym> T_POP_EQU %token <tzSym> T_POP_EQU
%token <tzSym> T_POP_SET %token <tzSym> T_POP_SET
%token <tzSym> T_POP_EQUS %token <tzSym> T_POP_EQUS
%token T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV T_POP_IF T_POP_ELSE T_POP_ENDC %token T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV T_POP_IF T_POP_ELSE T_POP_ENDC
%token T_POP_IMPORT T_POP_EXPORT T_POP_GLOBAL %token T_POP_IMPORT T_POP_EXPORT T_POP_GLOBAL
%token T_POP_DB T_POP_DS T_POP_DW T_POP_DL %token T_POP_DB T_POP_DS T_POP_DW T_POP_DL
%token T_POP_SECTION %token T_POP_SECTION
%token T_POP_RB %token T_POP_RB
%token T_POP_RW %token T_POP_RW
%token T_POP_RL %token T_POP_RL
%token T_POP_MACRO %token T_POP_MACRO
%token T_POP_ENDM %token T_POP_ENDM
%token T_POP_RSRESET T_POP_RSSET %token T_POP_RSRESET T_POP_RSSET
%token T_POP_INCBIN T_POP_REPT %token T_POP_INCBIN T_POP_REPT
%token T_POP_SHIFT %token T_POP_SHIFT
%token T_POP_ENDR %token T_POP_ENDR
%token T_POP_FAIL %token T_POP_FAIL
%token T_POP_WARN %token T_POP_WARN
%token T_POP_PURGE %token T_POP_PURGE
%token T_POP_POPS %token T_POP_POPS
%token T_POP_PUSHS %token T_POP_PUSHS
%token T_POP_POPO %token T_POP_POPO
%token T_POP_PUSHO %token T_POP_PUSHO
%token T_POP_OPT %token T_POP_OPT