summaryrefslogtreecommitdiffstats
path: root/ocamldoc/odoc_text_parser.mly
diff options
context:
space:
mode:
authorMaxence Guesdon <maxence.guesdon@inria.fr>2009-12-18 11:52:23 +0000
committerMaxence Guesdon <maxence.guesdon@inria.fr>2009-12-18 11:52:23 +0000
commite904577b6b0e68911c9169eb7c1629f6f3b9534c (patch)
treefb7538d389604e899974c0d4b2004d09a76fa7d5 /ocamldoc/odoc_text_parser.mly
parent758e4cd86078a89af5790872f9704c5ea019b4e7 (diff)
PR#4914: ability to specify a text for links to elements
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@9477 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
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