%{ /* * Copyright (c) 1995, 1996 Gunther Schadow. All rights reserved. * * 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 2 of the License, 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. */ #include #include "abl300.h" #include "y.tab.h" #include "misc.h" int yycontext = 0; %} DIGIT [0-9] SIGN [-+] POINT "." COLON ":" QMARK "?" SPACE " " EOLN "\n" NOEOLN [^\n] NOSPACE [^ \n] %x PTID_STATE %s STRING_STATE %s SPACES_STATE %s DISCARD_STATE %% switch(yycontext) { case 0: DBG(if(yy_flex_debug)fprintf(stderr, "switching to INITIAL context\n")); BEGIN(INITIAL); break; case PTIDVAL: DBG(if(yy_flex_debug)fprintf(stderr, "switching to PTIDVAL context\n")); BEGIN(PTID_STATE); break; case STRING: DBG(if(yy_flex_debug)fprintf(stderr, "switching to STRING context\n")); BEGIN(STRING_STATE); break; case SPACES: DBG(if(yy_flex_debug)fprintf(stderr, "switching to SPACES context\n")); BEGIN(SPACES_STATE); break; case DISCARD: DBG(if(yy_flex_debug)fprintf(stderr, "switching to DISCARD context\n")); BEGIN(DISCARD_STATE); break; default: DBG(if(yy_flex_debug)fprintf(stderr, "unknown context: %d\n", yycontext)); yycontext = 0; break; } {SPACE}*({DIGIT}|{COLON})*{SPACE} { BEGIN(INITIAL); yylval.string = strdup(clws(yytext)); return PTIDVAL; } ({SPACE}*{NOSPACE}{NOEOLN}*{EOLN})* { yylval.symbol = DISCARD; return DISCARD; } "KOPI " { yylval.symbol = COPY; return COPY; } "PROG " { yylval.symbol = PROG; return PROG; } "ZEIT " { yylval.symbol = TIME; return TIME; } "DATM " { yylval.symbol = DATE; return DATE; } "PERS " { yylval.symbol = OPID; return OPID; } "PAT " { yylval.symbol = PTID; return PTID; } "TYP " { yylval.symbol = SPEC; return SPEC; } "KAPILLAR " { yylval.symbol = CAPILLARY_SPEC; return CAPILLARY_SPEC; } "ARTERIELL " { yylval.symbol = ARTERIAL_SPEC; return ARTERIAL_SPEC; } "VENOES " { yylval.symbol = VENOUS_SPEC; return VENOUS_SPEC; } "GAS " { yylval.symbol = GAS_SPEC; return GAS_SPEC; } "QC-UNKNOWN " { yylval.symbol = QC_UNKNOWN_SPEC; return QC_UNKNOWN_SPEC; } "QC-S2030 " { yylval.symbol = QC_S2030_SPEC; return QC_S2030_SPEC; } "QC-S2040 " { yylval.symbol = QC_S2040_SPEC; return QC_S2040_SPEC; } "QC-S2050 " { yylval.symbol = QC_S2050_SPEC; return QC_S2050_SPEC; } "QC-S2060 " { yylval.symbol = QC_S2060_SPEC; return QC_S2060_SPEC; } "EINSCHALT-KALIBR. " { yylval.symbol = START_UP_CAL; return START_UP_CAL; } " 1-PUNKT-KAL " { yylval.symbol = ONE_POINT_CAL; return ONE_POINT_CAL; } " 2-PUNKT-KAL " { yylval.symbol = TWO_POINT_CAL; return TWO_POINT_CAL; } "ABE " { yylval.symbol = ABE; return ABE; } "BARO " { yylval.symbol = BARO; return BARO; } "CA " { yylval.symbol = CA; return CA; } "CA-S " { yylval.symbol = CA_S; return CA_S; } "CO2 " { yylval.symbol = CO2; return CO2; } "FCO2 " { yylval.symbol = FCO2; return FCO2; } "FO2 " { yylval.symbol = FO2; return FO2; } "H " { yylval.symbol = H; return H; } "HB " { yylval.symbol = HB; return HB; } "HBCO " { yylval.symbol = HBCO; return HBCO; } "HBO2 " { yylval.symbol = HBO2; return HBO2; } "HCO3 " { yylval.symbol = HCO3; return HCO3; } "K " { yylval.symbol = K; return K; } "METHB " { yylval.symbol = METHB; return METHB; } "NA " { yylval.symbol = NA; return NA; } "O2 " { yylval.symbol = O2; return O2; } "O2GE " { yylval.symbol = O2CT; return O2CT; } "P50E " { yylval.symbol = P50E; return P50E; } "P50C " { yylval.symbol = P50C; return P50C; } "PCO2 " { yylval.symbol = PCO2; return PCO2; } "PH " { yylval.symbol = PH; return PH; } "PO2 " { yylval.symbol = PO2; return PO2; } "SAET " { yylval.symbol = SAT; return SAT; } "SBIC " { yylval.symbol = SBC; return SBC; } "SBE " { yylval.symbol = SBE; return SBE; } "TCO2 " { yylval.symbol = TCO2; return TCO2; } "FIO2 " { yylval.symbol = FIO2; return FIO2; } "TEMP " { yylval.symbol = TEMP; return TEMP; } "C " { yylval.symbol = C_UN; return C_UN; } "F " { yylval.symbol = F_UN; return F_UN; } "MMHG " { yylval.symbol = MMHG_UN; return MMHG_UN; } "KPA " { yylval.symbol = KPA_UN; return KPA_UN; } "PA " { yylval.symbol = PA_UN; return PA_UN; } "% " { yylval.symbol = PC_UN; return PC_UN; } "G% " { yylval.symbol = GPC_UN; return GPC_UN; } "VOL% " { yylval.symbol = VOLPC_UN; return VOLPC_UN; } "NM/L " { yylval.symbol = NMPL_UN; return NMPL_UN; } "MM/L " { yylval.symbol = MMPL_UN; return MMPL_UN; } "OSM:" { yylval.symbol = OSM_ANA; return OSM_ANA; } "ICA:" { yylval.symbol = ICA_ANA; return ICA_ANA; } "KNA:" { yylval.symbol = KNA_ANA; return KNA_ANA; } "JAN " { yylval.integer = 1; return JAN_MON; } "FEB " { yylval.integer = 2; return FEB_MON; } "MAR " { yylval.integer = 3; return MAR_MON; } "APR " { yylval.integer = 4; return APR_MON; } "MAI " { yylval.integer = 5; return MAY_MON; } "JUN " { yylval.integer = 6; return JUN_MON; } "JUL " { yylval.integer = 7; return JUL_MON; } "AUG " { yylval.integer = 8; return AUG_MON; } "SEP " { yylval.integer = 9; return SEP_MON; } "OKT " { yylval.integer = 10; return OCT_MON; } "NOV " { yylval.integer = 11; return NOV_MON; } "DEZ " { yylval.integer = 12; return DEC_MON; } {SPACE}{20}{EOLN} { yylval.symbol = EMPTYLINE; return EMPTYLINE; } {SPACE}{0,19}{EOLN} { yylval.symbol = EOLN; return EOLN; } {SPACE}* { yylval.symbol = SPACES; return SPACES; } {SPACE} { yylval.symbol = SPACE; return SPACE; } {COLON} { yylval.symbol = COLON; return COLON; } {QMARK} { yylval.symbol = QMARK; return QMARK; } {SPACE}*{SIGN}?"9999999"{SPACE}* { yylval.string = strdup(clws(trws(yytext))); return REAL; } {SPACE}*{SIGN}?{DIGIT}*{POINT}{DIGIT}*{SPACE}* { yylval.string = strdup(clws(trws(yytext))); return REAL; } {SPACE}*{DIGIT}{5,} { yylval.integer = strtoul(yytext, NULL, 10); return INT5_; } {SPACE}*{DIGIT}{4} { yylval.integer = strtoul(yytext, NULL, 10); return INT4; } {SPACE}*{DIGIT}{3} { yylval.integer = strtoul(yytext, NULL, 10); return INT3; } {SPACE}*{DIGIT}{2} { yylval.integer = strtoul(yytext, NULL, 10); return INT2; } {SPACE}*{DIGIT}{1}({SPACE}|{COLON}) { yylval.integer = strtoul(yytext, NULL, 10); return INT1; } {NOSPACE} { yylval.chr = *yytext; return STRINGH; } {NOEOLN}*{NOSPACE} { BEGIN(INITIAL); yylval.string = (char *)malloc(1 + yyleng + 1 + 1); memcpy(&yylval.string[1],yytext,yyleng); yylval.string[1 + yyleng] = '.'; yylval.string[1 + yyleng + 1] = '\0'; return STRING; } <> { return END_OF_FILE; }