home *** CD-ROM | disk | FTP | other *** search
Lex Description | 1993-02-26 | 2.2 KB | 179 lines |
- %{
- #include "fd2gcc.tab.h"
-
- #define YY_USER_INIT BEGIN FD
-
- extern int yylineno;
- extern char *identifyer;
- %}
-
- %START FD FDCMT PROTO PROTOCMT
-
- WHITE [ \t]
- NUMBER [0-9]
- LETTER [A-Za-z_]
- ALFNUM [A-Za-z_0-9]
- REGCHAR [dDaA]
- REGNUM [0-7]
-
- CMTSTART "/*"
- CMTEND "*/"
-
- PTR "*"
- BUILTIN "char"|"int"|"long"|"float"|"double"|"void"|"BYTE"|"UBYTE"|"WORD"|"UWORD"|"LONG"|"ULONG"|"FLOAT"|"DOUBLE"|"VOID"|"BOOL"|"APTR"|"BPTR"|"CPTR"|"STRPTR"
- OTHER "Tag"|"CxObj"|"IX"|"CxMsg"|"PLANEPTR"|"DisplayInfoHandle"|"Msg"
- UNSIGNED "unsigned"
-
- %%
-
- {WHITE}+ {
- }
-
- <FD>^"*".*"\n" {
- yylineno++;
- return(COMMENT);
- }
- <FD>^"##private" {
- return(PRIVATE);
- }
- <FD>^"##public" {
- return(PUBLIC);
- }
- <FD>^"##base" {
- return(BASE);
- }
- <FD>^"##bias" {
- return(BIAS);
- }
- <FD>^"##end" {
- return(END);
- }
- <FD>{NUMBER}+ {
- return(NUMBER);
- }
- <FD>{REGCHAR}{REGNUM} {
- return(REGISTER);
- }
- <FD>{LETTER}+{ALFNUM}* {
- strcpy(identifyer, yytext);
- return(IDENTIFYER);
- }
- <FD>"(" {
- return(OPEN);
- }
- <FD>")" {
- return(CLOSE);
- }
- <FD>"," {
- return(ARGSEP);
- }
- <FD>"/" {
- return(REGSEP);
- }
-
- <FD>{CMTSTART} {
- BEGIN FDCMT;
- }
-
- <FDCMT>{CMTEND} {
- BEGIN FD;
- }
- <FDCMT>"\n" {
- yylineno++;
- }
- <FDCMT>. {
- }
-
- <FD>"#ifndef".*"\n" {
- yylineno++;
- BEGIN PROTO;
- }
-
- <PROTO>"struct" {
- return(STRUCT);
- }
-
- <PROTO>{UNSIGNED}{WHITE}+({BUILTIN}|{OTHER}) {
- return(BUILTIN);
- }
-
- <PROTO>({BUILTIN}|{OTHER}) {
- return(BUILTIN);
- }
-
- <PROTO>{LETTER}+{ALFNUM}* {
- strcpy(identifyer, yytext);
- return(IDENTIFYER);
- }
-
- <PROTO>"..." {
- return(VARARGS);
- }
-
- <PROTO>({PTR}{WHITE}*)+ {
- return(PTR);
- }
-
- <PROTO>"(" {
- return(OPEN);
- }
- <PROTO>")" {
- return(CLOSE);
- }
- <PROTO>"," {
- return(ARGSEP);
- }
-
- <PROTO>";" {
- return(SEMICOL);
- }
-
- <PROTO>{CMTSTART} {
- BEGIN PROTOCMT;
- }
-
- <PROTOCMT>{CMTEND} {
- BEGIN PROTO;
- }
- <PROTOCMT>"\n" {
- yylineno++;
- }
- <PROTOCMT>. {
- }
-
- <PROTO>"#ifndef".*"\n" {
- yylineno++;
- }
- <PROTO>"#define".*"\n" {
- yylineno++;
- }
- <PROTO>"#endif".*"\n" {
- yylineno++;
- }
- <PROTO>"#include".*"\n" {
- yylineno++;
- }
-
- <PROTO>"\n" {
- yylineno++;
- }
-
- <PROTO>. {
- }
-
-
- "\n" {
- yylineno++;
- return(NEWLINE);
- }
-
- . {
- return(yytext[0]);
- }
-
- %%
-
- /* lexical part of .fd file parsing */
-
- int yylineno = 0;
-