aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/config/pswrap/lexer.l
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/config/pswrap/lexer.l')
-rw-r--r--nx-X11/config/pswrap/lexer.l814
1 files changed, 0 insertions, 814 deletions
diff --git a/nx-X11/config/pswrap/lexer.l b/nx-X11/config/pswrap/lexer.l
deleted file mode 100644
index fdd6d03c2..000000000
--- a/nx-X11/config/pswrap/lexer.l
+++ /dev/null
@@ -1,814 +0,0 @@
-%{
-/*
- * lexer.l
- *
- * (c) Copyright 1988-1994 Adobe Systems Incorporated.
- * All rights reserved.
- *
- * Permission to use, copy, modify, distribute, and sublicense this software
- * and its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notices appear in all copies and that
- * both those copyright notices and this permission notice appear in
- * supporting documentation and that the name of Adobe Systems Incorporated
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. No trademark license
- * to use the Adobe trademarks is hereby granted. If the Adobe trademark
- * "Display PostScript"(tm) is used to describe this software, its
- * functionality or for any other purpose, such use shall be limited to a
- * statement that this software works in conjunction with the Display
- * PostScript system. Proper trademark attribution to reflect Adobe's
- * ownership of the trademark shall be given whenever any such reference to
- * the Display PostScript system is made.
- *
- * ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
- * ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
- * ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON- INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE
- * TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT
- * PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
- *
- * Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
- * Incorporated which may be registered in certain jurisdictions
- *
- * Author: Adobe Systems Incorporated
- */
-/* $XFree86: xc/config/pswrap/lexer.l,v 1.10 2001/10/28 03:32:03 tsi Exp $ */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "pswpriv.h"
-#include "pswparser.h"
-
-/* flex of EMX seems to be too old */
-#if defined(FLEX_SCANNER) && !defined(YY_FLEX_LEX_COMPAT) && !defined(__UNIXOS2__)
-int yylineno = 1;
-#endif
-
-static int parens = 0; /* current paren balancing */
-static char *sbody; /* cur pointer into string_temp */
-static int curleng = 0; /* current scanned string length */
-static int strlineno; /* start line of current string */
-
-static int nonComment = true; /* are we outside C comments? */
-static int newLine = true; /* are we starting a new line? */
-static int hexstringerrs = 0; /* found an error in this hex string */
-
-int errorCount = 0; /* number of non-fatal errors */
-
-#ifdef PSWDEBUG
-int lexdebug = 1; /* debug flag */
-#define DEBUGP(x) {if (lexdebug) { fprintf x ; };}
-#else /* PSWDEBUG */
-#define DEBUGP(x)
-#endif /* PSWDEBUG */
-
-#undef YYLMAX
-#define YYLMAX 16384
-
-/* ErrIntro prints a standard intro for error messages;
- * change it if your system uses something else. We have many options:
- *
- * to match Macintosh: #define FMT "File \"%s\"; Line %d # "
- * to match BSD cc: #define FMT "\"%s\", line %d: "
- * to match gcc: #define FMT "%s:%d: "
- * to match Mips cc: #define FMT "pswrap: Error: %s, line %d: "
- */
-#define INTRO "# In function %s -\n"
-
-#ifdef macintosh
-#define FMT "File \"%s\"; Line %d # "
-#else /* macintosh */
-#define FMT "\"%s\", line %d: "
-#endif /* macintosh */
-
-void ErrIntro(int line)
-{
- if (! reportedPSWName && currentPSWName) {
- reportedPSWName = 1;
- fprintf(stderr,INTRO,currentPSWName);
- }
- fprintf(stderr,FMT,ifile,line);
- errorCount++;
-}
-
-
-void yyerror(char *errmsg)
-{
- ErrIntro(yylineno);
- fprintf(stderr,"%s near text \"%s\"\n",errmsg,yytext);
-}
-%}
-
-%o 3500
-%a 2500
-
-%START PS STR HEX DEF SUB
-
-DIGIT ([0-9])
-HEXDIGIT ([a-fA-F0-9])
-RADIXDIGIT ([a-zA-Z0-9])
-LETTER ([a-zA-Z])
-SIGN ([+-])
-EXP ([eE]{SIGN}?{DIGIT}+)
-W ([ \t\n\r])
-
-%%
-
-<PS>^defineps { /* inside a wrap - just a PS token */
- if (nonComment) {
- newLine = false;
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- DEBUGP((stderr,"PSNAME ->%s\n",yytext));
- return PSNAME;
- }
-}
-
-<DEF>^defineps { /* treat as a C name inside the def part */
- if (nonComment) {
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- DEBUGP((stderr,"CNAME ->%s\n",yytext));
- return CNAME;
- }
-}
-
-<STR>^defineps { /* part of string text */
- register int i = yyleng;
- register unsigned char *c = (unsigned char *) yytext;
-
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
- for (; i > 0; --i) *sbody++ = *c++;
-}
-
-^{W}*defineps { /* start of a wrap definition */
- if (nonComment) {
- BEGIN DEF;
- DEBUGP((stderr,"DEFINEPS\n"));
- return DEFINEPS;
- } else ECHO;
-}
-
-<PS>endps { /* end of a wrap */
- if (nonComment){
- if (newLine) {
- newLine = false;
- DEBUGP((stderr,"ENDPS\n"));
- BEGIN 0;
- return ENDPS;
- } else {
- DEBUGP((stderr,"PSNAME %s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- return PSNAME;
- }
- }
-}
-
-<DEF>^endps { /* treat as a C name inside the def part? */
- if (nonComment) {
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- DEBUGP((stderr,"CNAME ->%s\n",yytext));
- return CNAME;
- }
-}
-
-<STR>^defineps { /* part of string text */
- register int i = yyleng;
- register unsigned char *c = (unsigned char *) yytext;
-
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
- for (; i > 0; --i) *sbody++ = *c++;
-}
-
-endps { /* BOGUS end of a wrap */
- if (nonComment) {
- ErrIntro(yylineno);
- fprintf(stderr,"endps without matching defineps\n");
- } else ECHO;
-}
-
-%{
- /* real definition stuff */
-%}
-
-<DEF>"/*" { /* C comments on */
- nonComment = false;
-}
-
-<DEF>"*/" { /* C comments off */
- nonComment = true;
-}
-
-<DEF>"(" { /* formals start */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->(\n"));
- return '(';
- }
-}
-
-<DEF>")" { /* formals end */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->)\n"));
- BEGIN PS;
- return ')';
- }
-}
-
-<DEF>[|,;[\]*:] { /* special single chars */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->%c\n",yytext[0]));
- return (yytext[0]);
- }
-}
-
-%{
- /* formals type names */
-%}
-
-<DEF>"static" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->static\n"));
- return STATIC;
- }
-}
-
-<DEF>"boolean" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->boolean\n"));
- return BOOLEAN;
- }
-}
-
-<DEF>"char" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->char\n"));
- return CHAR;
- }
-}
-
-<DEF>"int" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->int\n"));
- return INT;
- }
-}
-
-<DEF>"short" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->short\n"));
- return SHORT;
- }
-}
-
-<DEF>"long" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->long\n"));
- return LONG;
- }
-}
-
-<DEF>"unsigned" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->unsigned\n"));
- return UNSIGNED;
- }
-}
-
-<DEF>"float" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->float\n"));
- return FLOAT;
- }
-}
-
-<DEF>"double" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->double\n"));
- return DOUBLE;
- }
-}
-
-<DEF>"userobject" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->userobject\n"));
- return USEROBJECT;
- }
-}
-
-<DEF>"numstring" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->numstring\n"));
- return NUMSTRING;
- }
-}
-
-<DEF>"DPSContext" {
- if (nonComment) {
- DEBUGP((stderr,"DEF ->DPScontext\n"));
- return PSCONTEXT;
- }
-}
-
-%{
- /* C format numbers in formals part */
-%}
-
-<DEF>[1-9]{DIGIT}* { /* base 10 number */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->CINTEGER %s\n",yytext));
- yylval.intobj = atoi((char *) yytext);
- return CINTEGER;
- }
-}
-
-<DEF>0{DIGIT}* { /* octal number (and zero) */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->CINTEGER %s\n",yytext));
- /* I have no idea why the cast is needed in the next line,
- but it seems to make the compiler happy on alpha */
- sscanf((char *) yytext,"%lo",&yylval.intobj);
- return CINTEGER;
- }
-}
-
-<DEF>0[xX]{HEXDIGIT}+ { /* hex number */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->CINTEGER %s\n",yytext));
- /* See previous comment... */
- sscanf((char *) yytext,"0x%lx",&yylval.intobj);
- return CINTEGER;
- }
-}
-
-<DEF>[a-zA-Z_][a-zA-Z0-9_]* { /* C identifier */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->CNAME %s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- return CNAME;
- }
-}
-
-<DEF>{W}+ {
-}
-
-<DEF>[^a-zA-Z0-9_|,;[\]*:\(\)/ \t\n\r]+ { /* all else - ERROR */
- if (nonComment) {
- DEBUGP((stderr,"DEF ->JUNK %s\n",yytext));
- ErrIntro(yylineno);
- fprintf(stderr,"invalid characters '%s' in definition\n",
- yytext);
- }
-}
-
-
-%{
- /* body part - PostScript code */
-%}
-
-<PS>\%.* { /* a PS comment, ignore */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"comment %s\n",yytext));
- /* yylval = yytext; return PSCOMMENT; */
- }
-}
-
-<PS>{SIGN}?{DIGIT}+ { /* a decimal integer */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSINTEGER ->%s\n",yytext));
- yylval.intobj = atoi((char *) yytext);
- return PSINTEGER;
- }
-}
-
-<PS>{DIGIT}+#{RADIXDIGIT}+ { /* a radix number */
-#define MAX_ULONG ((unsigned long) -1)
- unsigned base = 0;
- unsigned char *s = (unsigned char *) yytext;
- register unsigned long x, limit;
- register unsigned long i = 0;
-
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSINTEGER radix->%s\n",yytext));
- while (*s != '#') {
- base *= 10;
- base += *s++ - '0';
- if (base > 32) break;
- }
-
- if ((base < 2) || (base > 36)) {goto error;}
- else {
- limit = MAX_ULONG / base;
- s++; /* skip # sign */
- while (*s != '\0') {
- if (i > limit) goto error;
- i *= base;
- if (isdigit(*s)) { x = *s - '0';}
- else { x = (*s | 040) - ('a'-10);}
- if (x >= base) goto error;
- if (x > (MAX_ULONG - i)) goto error;
- i += x;
- s++;
- }
- }
- yylval.intobj = i;
- return PSINTEGER;
-
- error:;
- ErrIntro(yylineno);
- fprintf(stderr,"invalid radix number %s\n",yytext);
- yylval.intobj = 0; /* ERROR */
- return PSINTEGER;
- }
-}
-
-<PS>(({SIGN}?{DIGIT}+(\.{DIGIT}*)?{EXP}?)|({SIGN}?{DIGIT}*\.{DIGIT}+{EXP}?)) {
- /* a float */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSREAL ->%s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object,yytext);
- return PSREAL;
- }
-}
-
-<PS>"(" { /* start PS string */
- if (nonComment) {
- newLine = false;
- BEGIN STR;
- parens=1;
- sbody = string_temp;
- curleng = 0;
- strlineno = yylineno;
- *sbody = '\0';
- }
-}
-
-%{
- /* inside PS strings */
-%}
-
-<STR>"(" { /* balancing parens */
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
- parens++;
- *sbody++ = '(';
-}
-
-<STR>")" { /* balancing parens or end string */
- if ((--parens) == 0) {
- BEGIN PS;
- *sbody = '\0';
- yylval.object = psw_malloc(strlen(string_temp) + 1);
- strcpy(yylval.object, string_temp);
- DEBUGP((stderr,"PSSTRING ->%s\n",string_temp));
- return PSSTRING;
- }
- else if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
- *sbody++ = ')';
-}
-
-<STR>"\\"[0-7]([0-7]?)([0-7]?) { /* quoted octal byte */
- if (4 + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += 4;
- sprintf(sbody,"\\%3.3s",(yytext + 1));
- while (*sbody) {
- if (*sbody == ' ') *sbody = '0';
- sbody++;
- }
-}
-
-
-<STR>"\\\n" { /* ignore quoted newline */
-}
-
-<STR>"\\\\" { /* keep quoted backslashes in */
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- *sbody++ = '\\';
- *sbody++ = '\\';
- curleng += 2;
-}
-
-
-<STR>("\\".) { /* other quoted char, including parens */
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- switch (yytext[1]) {
- case 'b':
- *sbody++ = '\b';
- break;
- case 'f':
- *sbody++ = '\f';
- break;
- case 'n':
- *sbody++ = '\012';
- break;
- case 'r':
- *sbody++ = '\015';
- break;
- case 't':
- *sbody++ = '\t';
- break;
- default:
- *sbody++ = yytext[1];
- break;
- }
- curleng++;
-}
-
-
-<STR>"\n" { /* newline in a string */
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
-
- *sbody++ = '\n';
-}
-
-<STR>[^()\\\n]+ { /* anything else */
- register int i = yyleng;
- register unsigned char *c = (unsigned char *) yytext;
-
- if (yyleng + curleng >= maxstring) {
- stringerr(1);
- BEGIN PS;
- *sbody = '\0';
- return PSSTRING;
- }
- curleng += yyleng;
- for (; i > 0; --i) *sbody++ = *c++;
-}
-
-%{
- /* hexidecimal strings "< >" */
-%}
-
-<PS>"<" { /* begin hex string */
- if (nonComment) {
- newLine = false;
- BEGIN HEX;
- sbody = string_temp;
- *sbody = '\0';
- curleng = 0;
- strlineno = yylineno;
- hexstringerrs = 0;
- }
-}
-
-<HEX>{W}+ { /* hex whitespace */
- /* ignore */
-}
-
-<HEX>[0-9A-Fa-f]+ { /* hex string data */
- if (yyleng + curleng >= maxstring) {
- stringerr(2);
- *sbody = '\0';
- BEGIN PS;
- return PSHEXSTRING;
- }
- curleng += yyleng;
- strcpy(sbody,yytext);
- sbody += yyleng;
-}
-
-<HEX>">" { /* end hex string */
- BEGIN PS;
- *sbody = '\0';
- DEBUGP((stderr,"PSHEXSTRING ->%s\n",string_temp));
- yylval.object = psw_malloc(strlen(string_temp) + 1);
- strcpy(yylval.object, string_temp);
- return PSHEXSTRING;
-}
-
-<HEX>[^a-fA-F0-9> \t\n\r]+ { /* ERROR */
- if (hexstringerrs == 0) { /* only complain once per string */
- ErrIntro(yylineno);
- fprintf(stderr,"invalid characters in hex string '%s'\n",yytext);
- hexstringerrs++;
- }
-}
-
-
-%{
- /* straight postscript */
-%}
-
-<PS>"<<" { /* just a PS token (for level 2 compatablity) */
- if (nonComment) {
- newLine = false;
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- DEBUGP((stderr,"PSNAME ->%s\n",yytext));
- return PSNAME;
- }
-}
-
-<PS>">>" { /* just a PS token (for level 2 compatablity) */
- if (nonComment) {
- newLine = false;
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- DEBUGP((stderr,"PSNAME ->%s\n",yytext));
- return PSNAME;
- }
-}
-
-<PS>[\[\]\{\}] { /* PS self delimiter */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PS ->%s\n",yytext));
- return (yytext[0]);
- }
-}
-
-<PS>"true"|"false" { /* boolean */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSBOOLEAN %s\n",yytext));
- yylval.intobj = (*yytext == 't');
- return PSBOOLEAN;
- }
-}
-
-<PS>"/"[^ <>\(\)\[\]\{\}\%\/\t\n\r]* { /* literal name */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSLITNAME %s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext));
- strcpy(yylval.object, yytext+1);
- return PSLITNAME;
- }
-}
-
-<PS>[^ <>\(\)\[\]\{\}\%\/\\\t\n\r]+ { /* executable name */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PSNAME %s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext) + 1);
- strcpy(yylval.object, yytext);
- return PSNAME;
- }
-}
-
-<PS>"*/" { /* special case */
- if (nonComment) {
- newLine = false;
- unput('/');
- yylval.object = psw_malloc(2);
- strcpy(yylval.object, "*");
- return PSNAME;
- }
-}
-
-<PS>"\\"[^ <>\(\)\[\]\{\}\%\/\\\t\n\r]+/"[" { /* \name[index] */
- if (nonComment) {
- DEBUGP((stderr,"\\PSNAME %s\n",yytext));
- yylval.object = psw_malloc(strlen(yytext));
- strcpy(yylval.object, yytext+1);
- BEGIN SUB;
- return PSSUBNAME;
- }
-}
-
-<SUB>[\[][^ \t\]]*[\]] { /* [index] */
- if (nonComment) {
- int len = strlen(yytext);
- DEBUGP((stderr,"PSINDEX %s\n",yytext));
- if (len == 2) {
- ErrIntro(yylineno);
- fprintf(stderr,"parameter index expression empty\n");
- yylval.object = "0";
- }
- else {
- yylval.object = psw_malloc(len);
- strncpy(yylval.object, yytext+1, len-2);
- yylval.object[len-2] = '\0';
- }
- BEGIN PS;
- return PSINDEX;
- }
-}
-
-<SUB>[\[][^\]]*[\]] { /* error */
- if (nonComment) {
- ErrIntro(yylineno);
- fprintf(stderr,"parameter index expression error\n");
- yylval.object = "0";
- BEGIN PS;
- return PSINDEX;
- }
-}
-
-<PS>[\)\>\\]+ { /* ERROR */
- if (nonComment) {
- newLine = false;
- DEBUGP((stderr,"PS JUNK ->%s\n",yytext));
- ErrIntro(yylineno);
- fprintf(stderr,"invalid characters '%s'\n",yytext);
- }
-}
-
-<PS>[ \t\r]+ { }
-
-<PS>[\n]+ {
- newLine = true;
-}
-
-[ \t]+ { /* passthru stuff */
- ECHO;
-}
-
-\n {
- outlineno++;
- ECHO;
-};
-
-"/*" { /* C comments on */
- nonComment = false;
- ECHO;
-}
-
-"*/" { /* C comments off */
- if (!nonComment) {
- nonComment = true;
- ECHO;
- }
-}
-
-%%
-
-int yywrap (void) {
- if (!feof(yyin))
- return (0);
-/* The following appears not to work with flex. As it is error
- handling code, we just comment it out. */
-#if !defined(FLEX_SCANNER)
- if (yybgin != (yysvec+1)) { /* make sure we are in state 0 */
- ErrIntro(yylineno);
- fprintf(stderr,"end of input file/missing endps\n");
- }
-#endif
- return (1);
-}
-
-void stringerr(int type)
-{
- ErrIntro(strlineno);
- fprintf(stderr,"%sstring too long (caught at line %d)\n",
- ((type==1)?"":"hex "),yylineno);
- errorCount++;
- return;
-}