2
/* This file is part of the software similarity tester SIM.
3
Written by Dick Grune, Vrije Universiteit, Amsterdam.
4
$Id: lisplang.l,v 2.9 2007/08/29 09:10:33 dick Exp $
8
LISP language front end for the similarity tester.
9
Author: Gertjan Akkerman <akkerm@cs.vu.nl>
10
Date: Thu, 9 Apr 87 11:15:23 MDT
18
/* Language-dependent Code */
21
static const struct idf reserved[] = {
22
{"append", NORM('a')},
23
{"append1", NORM('b')},
32
{"equal", NORM('e')}, /* See eq */
37
{"rplaca", NORM('A')},
41
/* Token sets for module algollike */
42
const TOKEN NonFinals[] = {
47
const TOKEN NonInitials[] = {
52
const TOKEN Openers[] = {
57
const TOKEN Closers[] = {
66
%option never-interactive
71
ASCII95 ([- !"#$%&'()*+,./0-9:;<=>?@A-Z\[\\\]^_`a-z{|}~])
74
StrChar ([^"\n\\]|{AnyQuoted})
75
ChrChar ([^'\\]|{AnyQuoted})
77
IdfChar ([-!#$%&*+,/0-9:;<=>?@A-Z\\^_`a-z{}~])
79
EscIdf (({IdfChar}|\\.)+)
80
QuotIdf ("|"[^\|\n]*"|")
81
Idf ({EscIdf}|{QuotIdf})
85
";".*$ { /* comment */
88
\"{StrChar}*\" { /* strings */
92
{Idf} { /* identifier */
93
return_tk(idf_in_list(yytext, reserved, sizeof reserved, IDF));
96
\n { /* count newlines */
100
{Layout} { /* ignore layout */
103
{ASCII95} { /* copy other text */
104
return_ch(yytext[0]);
107
. { /* count non-ASCII chars */
113
/* Language-INdependent Code */