Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ( 1 1)
- 23 23 23
- ui ui
- %%
- sexpr: atom {printf("matched sexprn");}
- | list
- ;
- list: '(' members ')' {printf("matched listn");}
- | '('')' {printf("matched empty listn");}
- ;
- members: sexpr {printf("members 1n");}
- | sexpr members {printf("members 2n");}
- ;
- atom: ID {printf("IDn");}
- | NUM {printf("NUMn");}
- | STR {printf("STRn");}
- ;
- %%
- program: slist;
- slist: slist sexpr | sexpr;
- ( 1 1
- %{
- #include <stdio.h>
- #include "a.yacc.tab.h"
- int linenumber;
- extern int yylval;
- %}
- %%
- n { linenumber++; }
- [0-9]+ { yylval = atoi(yytext); return NUM; }
- "[^"n]*" { return STR; }
- [a-zA-Z][a-zA-Z0-9]* { return ID; }
- .
- %%
- (1 1 1)
- NUM
- matched sexpr
- NUM
- matched sexpr
- NUM
- matched sexpr
- (1 1
- NUM
- matched sexpr
- NUM
- matched sexpr
- ) { return RPAREN; }
- ( { return LPAREN; }
- program: sexpr*
- program : /* empty */
- | program sexpr
- ;
- program: (sexpr)*;
- sexpr: list
- | atom {Console.WriteLine("matched sexpr");}
- ;
- list:
- '('')' {Console.WriteLine("matched empty list");}
- | '(' members ')' {Console.WriteLine("matched list");}
- ;
- members: (sexpr)+ {Console.WriteLine("members 1");};
- atom: Id {Console.WriteLine("ID");}
- | Num {Console.WriteLine("NUM");}
- ;
- Num: ( '0' .. '9')+;
- Id: ('a' .. 'z' | 'A' .. 'Z')+;
- Whitespace : ( ' ' | 'r' 'n' | 'n' | 't' ) {Skip();};
Add Comment
Please, Sign In to add comment