%option nounput %{ // // tikzparser.l // TikZiT // // Copyright 2010 Chris Heunen. All rights reserved. // // // This file is part of TikZiT. // // TikZiT is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // TikZiT is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with TikZiT. If not, see . // #import #ifdef __APPLE__ #include "y.tab.h" #else #include "tikzparser.h" #endif %} %% \n /* ignore end of line */; [ \t]+ /* ignore whitespace */; \\begin return LATEXBEGIN; \\end return LATEXEND; \{tikzpicture\} return TIKZPICTURE; \{pgfonlayer\} return PGFONLAYER; \.center return ANCHORCENTER; \( return LEFTPARENTHESIS; \) return RIGHTPARENTHESIS; \[ return LEFTBRACKET; \] return RIGHTBRACKET; ; return SEMICOLON; , return COMMA; = return EQUALS; \\draw return DRAW; to return TO; \\node return NODE; \\path return PATH; node return ALTNODE; rectangle return RECTANGLE; at return AT; [0-9]+ { yylval.nsstr=[NSString stringWithUTF8String:yytext]; return NATURALNUMBER; } (\-?[0-9]*\.[0-9]+)|(\-?[0-9]+) { yylval.nsstr=[NSString stringWithUTF8String:yytext]; return REALNUMBER; } \\?[a-zA-Z<>\-\']+ { //' yylval.nsstr=[NSString stringWithUTF8String:yytext]; return LWORD; } \"[^\"]*\" /* " */ { yylval.nsstr=[NSString stringWithUTF8String:yytext]; return QUOTEDSTRING; } \{ { NSMutableString *buf = [NSMutableString string]; unsigned int brace_depth = 1; while (1) { char c = input(); // eof reached before closing brace if (c == '\0' || c == EOF) yyterminate(); if (c == '{') brace_depth++; else if (c == '}') { brace_depth--; if (brace_depth == 0) break; } [buf appendFormat:@"%c", c]; } NSString *s = [buf copy]; [s autorelease]; yylval.nsstr = s; return DELIMITEDSTRING; } /* vi:ft=lex:noet:ts=4:sts=4:sw=4: */