summaryrefslogtreecommitdiffstats
path: root/ocamldoc/odoc_text_parser.mly
diff options
context:
space:
mode:
Diffstat (limited to 'ocamldoc/odoc_text_parser.mly')
-rw-r--r--ocamldoc/odoc_text_parser.mly74
1 files changed, 22 insertions, 52 deletions
diff --git a/ocamldoc/odoc_text_parser.mly b/ocamldoc/odoc_text_parser.mly
index 41bebea6f..fe2fa7c9e 100644
--- a/ocamldoc/odoc_text_parser.mly
+++ b/ocamldoc/odoc_text_parser.mly
@@ -27,7 +27,6 @@ let remove_trailing_blanks s =
let print_DEBUG s = print_string s; print_newline ()
%}
-%token ERROR
%token END
%token <int * string option> Title
%token BOLD
@@ -49,6 +48,7 @@ let print_DEBUG s = print_string s; print_newline ()
%token END_VERB
%token LATEX
%token END_LATEX
+%token LBRACE
%token ELE_REF
%token VAL_REF
@@ -97,6 +97,20 @@ text_element_list:
| text_element text_element_list { $1 :: $2 }
;
+ele_ref_kind:
+ ELE_REF { None }
+| VAL_REF { Some RK_value }
+| TYP_REF { Some RK_type }
+| EXC_REF { Some RK_exception }
+| MOD_REF { Some RK_module }
+| MODT_REF { Some RK_module_type }
+| CLA_REF { Some RK_class }
+| CLT_REF { Some RK_class_type }
+| ATT_REF { Some RK_attribute }
+| MET_REF { Some RK_method }
+| SEC_REF { Some (RK_section [])}
+;
+
text_element:
Title text END { let n, l_opt = $1 in Title (n, l_opt, $2) }
| BOLD text END { Bold $2 }
@@ -112,61 +126,17 @@ text_element:
| ENUM list END { Enum $2 }
| CODE string END_CODE { Code $2 }
| CODE_PRE string END_CODE_PRE { CodePre $2 }
-| ELE_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, None)
- }
-| VAL_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_value)
- }
-| TYP_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_type)
- }
-| EXC_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_exception)
- }
-| MOD_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_module)
- }
-| MODT_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_module_type)
- }
-| CLA_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_class)
- }
-| CLT_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_class_type)
- }
-| ATT_REF string END {
- let s2 = remove_beginning_blanks $2 in
- let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_attribute)
- }
-| MET_REF string END {
+| ele_ref_kind string END {
let s2 = remove_beginning_blanks $2 in
let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some RK_method)
+ Ref (s3, $1, None)
}
-| SEC_REF string END {
- let s2 = remove_beginning_blanks $2 in
+| LBRACE ele_ref_kind string END text END {
+ let s2 = remove_beginning_blanks $3 in
let s3 = remove_trailing_blanks s2 in
- Ref (s3, Some (RK_section []))
- }
+ Ref (s3, $2, Some $5)
+ }
+
| MOD_LIST_REF string END {
let s2 = remove_beginning_blanks $2 in
let s3 = remove_trailing_blanks s2 in