From fc42fe56a57eace2dbdb31574c2e161f0eacf839 Mon Sep 17 00:00:00 2001 From: Ludovic Court`es Date: Wed, 15 Jun 2005 13:00:39 +0000 Subject: Initial import of Skribe 1.2d. Initial import of Skribe 1.2d. git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--base-0 --- skribe/tools/skribebibtex/stklos/bibtex-lex.l | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 skribe/tools/skribebibtex/stklos/bibtex-lex.l (limited to 'skribe/tools/skribebibtex/stklos/bibtex-lex.l') diff --git a/skribe/tools/skribebibtex/stklos/bibtex-lex.l b/skribe/tools/skribebibtex/stklos/bibtex-lex.l new file mode 100644 index 0000000..03b4871 --- /dev/null +++ b/skribe/tools/skribebibtex/stklos/bibtex-lex.l @@ -0,0 +1,75 @@ +;;;; -*- Scheme -*- +;;;; bibtex-lex.l -- SILex input for BibTeX +;;;; +;;;; Copyright © 2004 Erick Gallesio - I3S-CNRS/ESSI +;;;; +;;;; +;;;; 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +;;;; USA. +;;;; +;;;; Author: Erick Gallesio [eg@essi.fr] +;;;; Creation date: 21-Oct-2004 17:47 (eg) +;;;; Last file update: 25-Oct-2004 20:16 (eg) +;;;; + + +space [ \n\9] +alpha [-+a-zA-ZàâäéèêëîïôöûüùÀÂÄÉÈÊËÎÏÔÖÛÜÙ./:()?!'&_~] + +%% + +;; Spaces +{space}+ (list 'BLANK) +;; Comment +\%.*$ (yycontinue) +;; equal sign += (list 'EQUAL) +;; Open Bracket +\{ (list 'LBRACKET) +;; Close Bracket +\} (list 'RBRACKET) +;; Comma +, (list 'COMMA) +;; Strings +\"[^\"]*\" (list 'STRING yytext) +;; Commands +@{alpha}+ (let* ((str (string-downcase + (substring yytext 1 + (string-length yytext)))) + (sym (string->symbol str))) + (case sym + ((string) (list 'BIBSTRING)) + (else (list 'BIBITEM sym)))) +;; Ident +{alpha}({alpha}|[0-9])* (list 'IDENT yytext) +;; Number +[0-9]+ (list 'NUMBER yytext) +;; Diacritic +\\['`^\"][aeiouAEIOU] (lex-char (string-ref yytext 1) + (string-ref yytext 2)) +\{\\['`^\"][aeiouAEIOU]\} (lex-char (string-ref yytext 2) + (string-ref yytext 3)) + +;; Unrecognized character +. (begin + (format (current-error-port) + "Skipping character ~S\n" yytext) + (yycontinue)) + +;;;; ====================================================================== +<> '*eoi* +<> (error 'bibtex-lexer "Parse error" yytext) + + -- cgit v1.2.3