| %{ | |
| /* Copyright 2001 Free Software Foundation, Inc. | |
| This file is part of GLD, the Gnu Linker. | |
| GLD 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 2, or (at your option) | |
| any later version. | |
| GLD 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 GLD; see the file COPYING. If not, write to the Free | |
| Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
| 02111-1307, USA. */ | |
| #include "sysinfo.h" | |
| char *word; | |
| int number; | |
| int unit; | |
| #ifndef yywrap | |
| static int yywrap () { return 1; } | |
| #endif | |
| %} | |
| %% | |
| "(" { return '(';} | |
| ")" { return ')';} | |
| "[" { return '[';} | |
| "]" { return ']';} | |
| " " { ; } | |
| ";".* { ; } | |
| "\t" { ; } | |
| "\n" { ; } | |
| "\""[^\"]*"\"" { | |
| yylval.s = malloc(strlen (yytext)); | |
| strcpy(yylval.s, yytext+1); | |
| yylval.s[strlen(yylval.s)-1] = 0; | |
| return NAME; | |
| } | |
| 0x[0-9a-f]+ { | |
| yylval.i = strtol(yytext,0,16); | |
| return NUMBER; | |
| } | |
| [0-9]+ { | |
| yylval.i = atoi(yytext); | |
| return NUMBER; | |
| } | |
| "bits" { yylval.i =1 ;return UNIT;} | |
| "bit" { yylval.i = 1; return UNIT;} | |
| "bytes" { yylval.i= 8; return UNIT;} | |
| "byte" { yylval.i = 8; return UNIT;} | |
| "int" { yylval.s = "INT"; return TYPE;} | |
| "barray" { yylval.s = "BARRAY"; return TYPE;} | |
| "chars" { yylval.s = "CHARS"; return TYPE;} | |
| "variable" { yylval.i = 0; return NUMBER;} | |
| "counted" { yylval.i = -4; return NUMBER;} | |
| "addrsize" { yylval.i = -2; return NUMBER; } | |
| "segsize" { yylval.i = -1; return NUMBER; } | |
| "cond" { return COND;} | |
| "repeat" { return REPEAT;} |