1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
FIRST_CHARS := words `a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0`;;
CHARS := words `a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 _`;;
letref logical_1
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref logical_expr
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref possible_paren
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref rest_of_expression
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref expression
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref rest_of_bool
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref bool_1
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref poss_rest_of_bool
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref bool_expr
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref assignment_stmnt
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref more_if_stmnts
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref rest_of_if
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref rest_of_while
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref MAIN_LOOP
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref is_spec
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref many_expr_logical
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref more_stmnts
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref many_stmnts
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref meta_logical_stmnt
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letref a_stmnt
(lst:string list) (whitespace:string)(prev:string)
(result_list:term list)
(FIRST_CHARS:string list) (CHARS:string list) (expected:string) =
(fail:term,fail:term list,fail:string,fail:string list);;
letrec TOKEN_1 TOKENS CHARS =
if null TOKENS then ()
else if mem (hd TOKENS) CHARS then
TOKEN_1 (tl TOKENS) CHARS
else
fail;;
let TOKEN TOKENS FIRST_CHARS CHARS next expected =
if mem (hd TOKENS) FIRST_CHARS then
(TOKEN_1 (tl TOKENS) CHARS;
let wrd = implode TOKENS in
if expected = `nil` then
wrd
else if expected = next then
wrd
else fail)
else
fail
? fail;;
|