diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
commit | a8a8dfb90d6a51ae369c042c95162f45754c7c4b (patch) | |
tree | 0e7a5f82febebe7129ebfb015f05b114064c39fd /tikzit/src/common/tikzlexer.lm | |
parent | e1cf0babff63e670e0d550b4072c22649a117fa7 (diff) |
Move tikzit into "trunk" directory
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@365 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/common/tikzlexer.lm')
-rw-r--r-- | tikzit/src/common/tikzlexer.lm | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tikzit/src/common/tikzlexer.lm b/tikzit/src/common/tikzlexer.lm new file mode 100644 index 0000000..4fe39d1 --- /dev/null +++ b/tikzit/src/common/tikzlexer.lm @@ -0,0 +1,101 @@ +%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 <http://www.gnu.org/licenses/>. +// + +#import <Foundation/Foundation.h> +#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 stringWithString:@"{"]; + unsigned int brace_depth = 1; + while (1) { + char c = input(); + // eof reached before closing brace + if (c == '\0' || c == EOF) yyterminate(); + + [buf appendFormat:@"%c", c]; + if (c == '{') brace_depth++; + else if (c == '}') { + brace_depth--; + if (brace_depth == 0) break; + } + } + + NSString *s = [buf copy]; + [s autorelease]; + yylval.nsstr = s; + return DELIMITEDSTRING; +} + +%% |