Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

epatel/ParserTest

Open more actions menu

Repository files navigation

Parser Test with Xcode

Xcode can handle bison and flex definition files. Xcode can even compile the generated files as Objective-C making it easier to bridge a parser into Objective-C. Pretty nice I think.

This demo shows a simple calculator. tokenizer.lm contain the parts for divinding the character stream into parts for the parser which is in the parser.ym file. The added m on the extension is that detail that makes Xcode compile the generated files as Objective-C files.

To make it a little bit more interesting I added identifiers that is dynamically handled between the tokenizer and parser. In the tokenizer you can see that it will be set as a retained string. The parser only knows about pi at the moment and everything else will have the value 0.0

There are two possible places for a identifier string to be released, either in the last part of this rule

number : INTEGER { $$ = $1; }
| FLOAT { $$ = $1; }
| IDENTIFIER { if ([$1 isEqualToString:@"pi"]) $$ = M_PI; else $$ = 0.0; [$1 release]; }

or the defined destructor

%destructor { [$$ release]; } IDENTIFIER 

The defined destructor is used if the parser need to clean up some intermediate handling, by error or not.

One caveat I stumbled upon was that I couldn't get "[[" to work in the tokenizer, which seem to use that for some internal marker. So instead I use "[ [" which may look strange. The line in the tokenizer is this

[a-zA-Z]+ { yylval.identifier = [ [NSString stringWithFormat:@"%s", yytext] retain]; return IDENTIFIER; }

Now I wish I had a task to solve with my own language...

About

A demo project showing the use of yacc and lex (bison, flex) in a Xcode project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.