Changeset 3786
 Timestamp:
 May 26, 2008, 2:03:27 AM (12 years ago)
 Location:
 applications/trunk/LFC
 Files:

 1 added
 1 edited
Legend:
 Unmodified
 Added
 Removed

applications/trunk/LFC/lfc.grammar
 Property svn:keywords set to Author Date Id Revision
r3785 r3786 1 /* $Id$ */ 1 /* $Id$ 2 * 3 * This is LL(1) grammar for LFC based on the "Introduction to LFC Programming 4 * Language" (January 25, 2008) by Zhen Lixiao 5 */ 2 6 3 %token SC COMMA 7 %token SC COLON COMMA 8 %token DEC VAR DEF 9 %token ASTERISK TO EQ 4 10 %token LPAR RPAR 5 11 %token IDENTIFIER STRING UNDEFINED … … 10 16 %% 11 17 12 program : exp;18 program : function_dec var_dec_and_func_def ; 13 19 20 function_dec : DEC funname COLON function_type ; 21 22 var_dec_and_func_def : variable_dec definition 23  definition 24 ; 25 26 variable_dec : VAR vars_decl variable_dec_rest ; 27 28 vars_decl : variable_list COLON concept_name SC ; 29 30 variable_dec_rest : /*empty*/ 31  vars_decl variable_dec_rest 32 ; 33 34 variable_list : variable variable_list_rest ; 35 36 variable_list_rest : /*empty*/ 37  COMMA variable variable_list_rest 38 ; 39 40 definition : DEF equation equation_rest ; 41 42 equation : funname LPAR pattern_list RPAR EQ exp_with_where SC ; 43 44 equation_rest : /*empty*/ 45  equation equation_rest 46 ; 47 48 pattern_list : pattern pattern_list_rest ; 49 50 pattern : STRING pat_concat 51  variable pat_concat 52 ; 53 54 pat_concat : /*empty*/ 55  CONCAT pattern 56 ; 57 58 pattern_list_rest : /*empty*/ 59  COMMA pattern pattern_list_rest 60 ; 61 62 function_type : concept_name concept_list_rest TO concept_name ; 63 64 concept_list_rest : /*empty*/ 65  ASTERISK concept_name concept_list_rest 66 ; 67 68 concept_name : IDENTIFIER ; 69 funname : IDENTIFIER ; 14 70 variable : IDENTIFIER ; 15 /*16 funname : IDENTIFIER ;17 */18 71 19 exp : STRING exp_concat _or_where20  UNDEFINED exp_concat _or_where21  IDENTIFIER exp_var_or_func exp_concat _or_where22  LPAR exp RPAR exp_concat_or_where23  IF exp THEN exp ELSE exp exp_where72 exp : STRING exp_concat 73  UNDEFINED exp_concat 74  IDENTIFIER exp_var_or_func exp_concat 75  LPAR exp_with_where RPAR exp_concat 76  IF exp THEN exp ELSE exp 24 77 ; 25 78 79 exp_with_where : STRING exp_concat_or_where 80  UNDEFINED exp_concat_or_where 81  IDENTIFIER exp_var_or_func exp_concat_or_where 82  LPAR exp_with_where RPAR exp_concat_or_where 83  IF exp_with_where THEN exp_with_where ELSE exp_with_where 84 ; 85 26 86 exp_var_or_func : /*empty*/ 27  LPAR exp_list RPAR87  LPAR arg_list RPAR 28 88 ; 29 89 30 exp_list : /*empty*/31  exp exp_list_rest90 arg_list : /*empty*/ 91  exp arg_list_rest 32 92 ; 33 93 34 exp_list_rest : /*empty*/35  COMMA exp exp_list_rest94 arg_list_rest : /*empty*/ 95  COMMA exp arg_list_rest 36 96 ; 37 97 38 exp_concat_or_where : exp_where 39  CONCAT exp 98 exp_concat : /*empty*/ 99  CONCAT exp 100 ; 101 102 exp_concat_or_where : /*empty*/ 103  CONCAT exp_with_where 104  WHERE varassign_list 40 105 ; 41 42 43 exp_where : /*empty*/44  WHERE varassign_list45 ;46 106 47 107 varassign_list : variable ASSIGN exp varassign_rest ;
Note: See TracChangeset
for help on using the changeset viewer.