diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 18:59:29 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 18:59:29 (GMT) |
commit | d4d595fa7fb12903db9227d33d48b2b00120dbd1 (patch) | |
tree | 7d18365de0d6d1b29399b6a17c7eb01c2eb3ed49 /tksao/frame/ds9lex.L | |
parent | 949f96e29bfe0bd8710d775ce220e597064e2589 (diff) | |
download | blt-d4d595fa7fb12903db9227d33d48b2b00120dbd1.zip blt-d4d595fa7fb12903db9227d33d48b2b00120dbd1.tar.gz blt-d4d595fa7fb12903db9227d33d48b2b00120dbd1.tar.bz2 |
Initial commit
Diffstat (limited to 'tksao/frame/ds9lex.L')
-rw-r--r-- | tksao/frame/ds9lex.L | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/tksao/frame/ds9lex.L b/tksao/frame/ds9lex.L new file mode 100644 index 0000000..1b38a16 --- /dev/null +++ b/tksao/frame/ds9lex.L @@ -0,0 +1,323 @@ +/* Copyright (C) 1999-2016 + * Smithsonian Astrophysical Observatory, Cambridge, MA, USA + * For conditions of distribution and use, see copyright notice in "copyright" + */ + +%option noyywrap +%option caseless +%option never-interactive +%option c++ + +%{ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> + + #include "util.h" + #include "ds9parser.H" + + extern YYSTYPE* mklval; + extern mkFlexLexer* mklexx; +%} + +%x DISCARD + +D [0-9] +E [Ee][+-]?{D}+ +H [0-9a-fA-F] + +/* rules */ + +%% + +<DISCARD>[\n] { // special case-- #\n + BEGIN INITIAL; + yyless(0); // put back the terminator + strcpy(mklval->str,""); // feed a blank string + return STRING; + } + +<DISCARD>[^\n]* { // Discard reset of line + BEGIN INITIAL; + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return STRING; + } + +amplifier {return AMPLIFIER_;} +ann[u][l][u][s] {return ANNULUS_;} +arcmin {return ARCMIN_;} +arcsec {return ARCSEC_;} +arrow {return ARROW_;} +b1950 {return B1950_;} +background {return BACKGROUND_;} +begin {return BEGIN_;} +box {return BOX_;} +boxcircle {return BOXCIRCLE_;} +bpanda {return BPANDA_;} +callback {return CALLBACK_;} +cir[c][l][e] {return CIRCLE_;} +circle3d {return CIRCLE3D_;} +color {return COLOR_;} +compass {return COMPASS_;} +composite {return COMPOSITE_;} +cpanda {return CPANDA_;} +cross {return CROSS_;} +dash {return DASH_;} +dashlist {return DASHLIST_;} +debug {return DEBUG_;} +degrees {return DEGREES_;} +delete {return DELETE_;} +detector {return DETECTOR_;} +diamond {return DIAMOND_;} +edit {return EDIT_;} +ell[i][p][s][e] {return ELLIPSE_;} +ecliptic {return ECLIPTIC_;} +epanda {return EPANDA_;} +end {return END_;} +false {return FALSE_;} +fie[l][d] {return FIELD_;} +fixed {return FIXED_;} +fk4 {return FK4_;} +fk4-no-e {return FK4_NO_E_;} +fk5 {return FK5_;} +font {return FONT_;} +galactic {return GALACTIC_;} +global {return GLOBAL_;} +helioecliptic {return HELIOECLIPTIC_;} +highlite {return HIGHLITE_;} +icrs {return ICRS_;} +ignore {return IGNORE_;} +include {return INCLUDE_;} +image {return IMAGE_;} +key {return KEY_;} +j2000 {return J2000_;} +lin[e] {return LINE_;} +linear {return LINEAR_;} +move {return MOVE_;} +n {return N_;} +no {return NO_;} +off {return OFF_;} +on {return ON_;} +panda {return CPANDA_;} +physical {return PHYSICAL_;} +pie {return PIE_;} +pixels {return PIXELS_;} +poi[n][t] {return POINT_;} +pol[y][g][o][n] {return POLYGON_;} +projection {return PROJECTION_;} +property {return PROPERTY_;} +rotate {return ROTATE_;} +rotbox {return ROTBOX_;} +ruler {return RULER_;} +select {return SELECT_;} +segment {return SEGMENT_;} +source {return SOURCE_;} +supergalactic {return SUPERGALACTIC_;} +tag {return TAG_;} +text {return TEXT_;} +textangle {return TEXTANGLE_;} +textrotate {return TEXTROTATE_;} +tile {return TILE_;} +true {return TRUE_;} +vector {return VECTOR_;} +version {return VERSION_;} +update {return UPDATE_;} +unhighlite {return UNHIGHLITE_;} +unselect {return UNSELECT_;} +wcs {return WCS_;} +wcsa {return WCSA_;} +wcsb {return WCSB_;} +wcsc {return WCSC_;} +wcsd {return WCSD_;} +wcse {return WCSE_;} +wcsf {return WCSF_;} +wcsg {return WCSG_;} +wcsh {return WCSH_;} +wcsi {return WCSI_;} +wcsj {return WCSJ_;} +wcsk {return WCSK_;} +wcsl {return WCSL_;} +wcsm {return WCSM_;} +wcsn {return WCSN_;} +wcso {return WCSO_;} +wcsp {return WCSP_;} +wcsq {return WCSQ_;} +wcsr {return WCSR_;} +wcss {return WCSS_;} +wcst {return WCST_;} +wcsu {return WCSU_;} +wcsv {return WCSV_;} +wcsw {return WCSW_;} +wcsx {return WCSX_;} +wcsy {return WCSY_;} +wcsz {return WCSZ_;} +wcs0 {return WCS0_;} +width {return WIDTH_;} +x {return X_;} +y {return Y_;} +yes {return YES_;} + + +[+-]?{D}+ { // Integer + mklval->integer = atoi(yytext); + return INT; + } + +[+-]?{D}+"."?({E})? | +[+-]?{D}*"."{D}+({E})? { // Real Number + mklval->real = atof(yytext); + return REAL; + } + +[+-]?{D}+"."?d | +[+-]?{D}*"."{D}+d { // degrees + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return ANGDEGREE; + } + +[+-]?{D}+"."?r | +[+-]?{D}*"."{D}+r { // radians + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return ANGRADIAN; + } + +[+-]?{D}+"."?p | +[+-]?{D}*"."{D}+p { // physical coords + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return PHYCOORD; + } + +[+-]?{D}+"."?i | +[+-]?{D}*"."{D}+i { // image coords + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return IMGCOORD; + } + +{D}+"."?' | +{D}*"."{D}+' | +[+-]?{D}+"."?({E})?' | +[+-]?{D}*"."{D}+({E})?' { // minutes of arc + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return ARCMINUTE; + } + +{D}+"."?\" | +{D}*"."{D}+\" | +[+-]?{D}+"."?({E})?\" | +[+-]?{D}*"."{D}+({E})?\" { // seconds of arc + yytext[yyleng-1] = '\0'; + mklval->real = atof(yytext); + return ARCSECOND; + } + +[+-]?{D}+:{D}+:{D}+"."? | +[+-]?{D}+:{D}+:{D}*"."{D}+ { // Sexagesimal + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return SEXSTR; + } + +[+-]?{D}+h{D}+m{D}+"."?s | +[+-]?{D}+h{D}+m{D}*"."{D}+s { // HMS + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return HMSSTR; + } + +[+-]?{D}+d{D}+m{D}+"."?s | +[+-]?{D}+d{D}+m{D}*"."{D}+s { // DMS + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return DMSSTR; + } + +#({H}){3} { // 8 bit Hex Color + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return STRING; + } + +#({H}){6} { // 16 bit Hex Color + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return STRING; + } + +#({H}){12} { // 32 bit Hex Color + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return STRING; + } + +\"[^\"\n]*\" | +\'[^\'\n]*\' { // Quoted String + int ll = (yyleng-2)<(MKBUFSIZE-1) ? (yyleng-2):(MKBUFSIZE-1); + strncpy(mklval->str,yytext+1,ll); // skip the " " + mklval->str[ll] = '\0'; // Remove the '"' + return STRING; + } + +\{[^\}\n]*\} { // Quoted String + int ll = (yyleng-2)<(MKBUFSIZE-1) ? (yyleng-2):(MKBUFSIZE-1); + strncpy(mklval->str,yytext+1,ll); // skip the '{' + mklval->str[ll] = '\0'; // Remove the '}' + return STRING; + } + +[0-9A-Za-z]+ { // General String + int ll = yyleng <(MKBUFSIZE-1) ? yyleng:(MKBUFSIZE-1); + strncpy(mklval->str,yytext,ll); + mklval->str[ll] = '\0'; + return STRING; + } + +[ \t]+ { // White Spaces + } + +\r\n { // windows line feed + return '\n'; + } + +\\n { // fake line feed + return '\n'; + } + +\n { // linefeed + return '\n'; + } + +<<EOF>> { // eof + return EOF_; + } + +. { // Else, return the char + return yytext[0]; + } + +%% + +void mkDiscard(int doit) +{ + if (mklexx) + mklexx->begin(DISCARD, doit); +} + +void mkFlexLexer::begin(int which, int doit) +{ + BEGIN which; + if (doit) + yyless(0); +} |