talkfilters/austro.l

122 lines
2.5 KiB
Plaintext
Executable File

/* GNU Talkfilters
Copyright (C) 1998-2003 Free Software Foundation, Inc.
This file is part of GNU Talkfilters
GNU Talkfilters 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.
This software is distributed in the hope that it will be amusing, 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 software; see the file COPYING. If not, write to the
Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
%option prefix="austro_yy"
%option outfile="lex.yy.c"
%option noyywrap
%option nounput
%e 2000
%p 5000
%n 1000
%k 500
%a 4000
%o 2000
BW [ \t]
EW [ \t.,;!?]
EOT \4
%{
#include "common.h"
#include "talkfilters.h"
#define YY_DECL int yylex(gtf_databuf_t *buf)
%}
%%
\<(\/)?[A-Za-z][^\>]*\> gtf_echo(); // don't damage HTML tags
[Ss]ch gtf_puts_case("sh");
" c" gtf_puts(" k");
" C" gtf_puts(" K");
ec gtf_puts("ek");
ac gtf_puts("ak");
[Pp]h gtf_puts_case("f");
cc gtf_puts("c");
ee gtf_puts("e");
ff gtf_puts("f");
ll gtf_puts("l");
mm gtf_puts("m");
nn gtf_puts("n");
pp gtf_puts("p");
rr gtf_puts("r");
ss gtf_puts("s");
tt gtf_puts("t");
[Tt]h gtf_puts_case("z");
w gtf_puts("v");
ou gtf_puts("u");
"de " gtf_puts("d ");
"le " gtf_puts("l ");
"me " gtf_puts("m ");
"ne " gtf_puts("n ");
"re " gtf_puts("r ");
"ve " gtf_puts("v ");
[Cc] gtf_puts_case("s");
[Pp]ie gtf_puts_case("mozer's pie");
[Ss]teak gtf_puts_case("shnitzel");
[Gg]overnor gtf_puts_case("govenator");
{EOT} /* ignore trailing EOT character */
. gtf_echo();
\n gtf_puts("\n");
%%
#ifdef LIBRARY_MODE
int gtf_filter_austro(const char *input, char *buf, size_t bufsz)
{
gtf_databuf_t buffer;
YY_BUFFER_STATE _yybuf;
gtf_strbuf_init(&buffer, buf, bufsz);
_yybuf = yy_scan_string(input);
yylex(&buffer);
yy_delete_buffer(_yybuf);
gtf_reset();
return(buffer.overflow);
}
int __gtf_filter_austro(const char *input, char *buf, size_t bufsz)
{
return(gtf_filter_austro(input, buf, bufsz));
}
#else /* LIBRARY_MODE */
int main(int argc, char **argv)
{
gtf_parse_args();
gtf_random_seed();
yylex(NULL);
return(EXIT_SUCCESS);
}
#endif /* LIBRARY_MODE */
/* end of source file */