123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- %{
- /* This file is part of the software similarity tester SIM.
- Written by Dick Grune, Vrije Universiteit, Amsterdam.
- $Id: miralang.l,v 1.3 2007/08/29 09:10:34 dick Exp $
- */
- /*
- Miranda language front end for the similarity tester.
- Author: Emma Norling ([email protected])
- Date: Nov 1998
- */
- #include "language.h"
- #include "token.h"
- #include "lex.h"
- #include "lang.h"
- /* Language-dependent Code */
- #include "idf.h"
- static const struct idf reserved[] = {
- {"abstype", NORM('a')},
- {"bool", NORM('b')},
- {"char", NORM('c')},
- {"const", META('c')},
- {"div", NORM('d')},
- {"False", NORM('F')},
- {"if", NORM('i')},
- {"mod", NORM('m')},
- {"num", NORM('n')},
- {"otherwise", NORM('o')},
- {"readvals", NORM('r')},
- {"show", NORM('s')},
- {"sys_message", META('s')},
- {"True", NORM('T')},
- {"type", NORM('t')},
- {"where", NORM('w')},
- {"with", META('w')}
- };
- /* Token sets for module algollike */
- const TOKEN NonFinals[] = {
- NORM('('),
- NORM('['),
- NORM('='),
- NOTOKEN
- };
- const TOKEN NonInitials[] = {
- NORM(')'),
- NORM(']'),
- NOTOKEN
- };
- const TOKEN Openers[] = {
- NORM('('),
- NORM('['),
- NORM('='),
- NOTOKEN
- };
- const TOKEN Closers[] = {
- NORM(')'),
- NORM(']'),
- NOTOKEN
- };
- %}
- %option nounput
- %option never-interactive
- %Start Comment
- Layout ([ \t\r\f])
- ASCII95 ([- !"#$%&'()*+,./0-9:;<=>?@A-Z\[\\\]^_`a-z{|}~])
- AnyQuoted (\\.)
- StrChar ([^"\n\\]|{AnyQuoted})
- ChrChar ([^'\\]|{AnyQuoted})
- Idf ([A-Za-z][A-Za-z0-9_']*)
- %%
- "||".*$ { /* comment */
- }
- \"{StrChar}*\" { /* strings */
- return_ch('"');
- }
- \'{ChrChar}\' { /* characters */
- return_ch('\'');
- }
- \%{Layout}*include.* { /* skip %include line */
- }
- \%{Layout}*insert.* { /* skip %insert line */
- }
- {Idf} { /* identifier */
- return_tk(idf_in_list(yytext, reserved, sizeof reserved, IDF));
- }
- \n { /* count newlines */
- return_eol();
- }
- {Layout} { /* ignore layout */
- }
- {ASCII95} { /* copy other text */
- return_ch(yytext[0]);
- }
- . { /* count non-ASCII chars */
- lex_non_ascii_cnt++;
- }
- %%
- /* Language-INdependent Code */
- void
- yystart(void) {
- BEGIN INITIAL;
- }
- int
- yywrap(void) {
- return 1;
- }
|