src/Doc/Isar_Ref/Inner_Syntax.thy
changeset 62969 9f394a16c557
parent 62807 3c4e9a7937b1
child 63138 70f4d67235a0
equal deleted inserted replaced
62968:4e4738698db4 62969:9f394a16c557
    51     ;
    51     ;
    52     @@{command term} @{syntax modes}? @{syntax term}
    52     @@{command term} @{syntax modes}? @{syntax term}
    53     ;
    53     ;
    54     @@{command prop} @{syntax modes}? @{syntax prop}
    54     @@{command prop} @{syntax modes}? @{syntax prop}
    55     ;
    55     ;
    56     @@{command thm} @{syntax modes}? @{syntax thmrefs}
    56     @@{command thm} @{syntax modes}? @{syntax thms}
    57     ;
    57     ;
    58     ( @@{command prf} | @@{command full_prf} ) @{syntax modes}? @{syntax thmrefs}?
    58     ( @@{command prf} | @@{command full_prf} ) @{syntax modes}? @{syntax thms}?
    59     ;
    59     ;
    60     @@{command print_state} @{syntax modes}?
    60     @@{command print_state} @{syntax modes}?
    61     ;
    61     ;
    62     @{syntax_def modes}: '(' (@{syntax name} + ) ')'
    62     @{syntax_def modes}: '(' (@{syntax name} + ) ')'
    63   \<close>}
    63   \<close>}
   502   for explicit notation. This allows to add or delete mixfix annotations for
   502   for explicit notation. This allows to add or delete mixfix annotations for
   503   of existing logical entities within the current context.
   503   of existing logical entities within the current context.
   504 
   504 
   505   @{rail \<open>
   505   @{rail \<open>
   506     (@@{command type_notation} | @@{command no_type_notation}) @{syntax mode}? \<newline>
   506     (@@{command type_notation} | @@{command no_type_notation}) @{syntax mode}? \<newline>
   507       (@{syntax nameref} @{syntax mixfix} + @'and')
   507       (@{syntax name} @{syntax mixfix} + @'and')
   508     ;
   508     ;
   509     (@@{command notation} | @@{command no_notation}) @{syntax mode}? \<newline>
   509     (@@{command notation} | @@{command no_notation}) @{syntax mode}? \<newline>
   510       (@{syntax nameref} @{syntax mixfix} + @'and')
   510       (@{syntax name} @{syntax mixfix} + @'and')
   511     ;
   511     ;
   512     @@{command write} @{syntax mode}? (@{syntax nameref} @{syntax mixfix} + @'and')
   512     @@{command write} @{syntax mode}? (@{syntax name} @{syntax mixfix} + @'and')
   513   \<close>}
   513   \<close>}
   514 
   514 
   515   \<^descr> @{command "type_notation"}~\<open>c (mx)\<close> associates mixfix syntax with an
   515   \<^descr> @{command "type_notation"}~\<open>c (mx)\<close> associates mixfix syntax with an
   516   existing type constructor. The arity of the constructor is retrieved from
   516   existing type constructor. The arity of the constructor is retrieved from
   517   the context.
   517   the context.
  1101 
  1101 
  1102     constdecl: @{syntax name} '::' @{syntax type} @{syntax mixfix}?
  1102     constdecl: @{syntax name} '::' @{syntax type} @{syntax mixfix}?
  1103     ;
  1103     ;
  1104     mode: ('(' ( @{syntax name} | @'output' | @{syntax name} @'output' ) ')')
  1104     mode: ('(' ( @{syntax name} | @'output' | @{syntax name} @'output' ) ')')
  1105     ;
  1105     ;
  1106     transpat: ('(' @{syntax nameref} ')')? @{syntax string}
  1106     transpat: ('(' @{syntax name} ')')? @{syntax string}
  1107   \<close>}
  1107   \<close>}
  1108 
  1108 
  1109   \<^descr> @{command "nonterminal"}~\<open>c\<close> declares a type constructor \<open>c\<close> (without
  1109   \<^descr> @{command "nonterminal"}~\<open>c\<close> declares a type constructor \<open>c\<close> (without
  1110   arguments) to act as purely syntactic type: a nonterminal symbol of the
  1110   arguments) to act as purely syntactic type: a nonterminal symbol of the
  1111   inner syntax.
  1111   inner syntax.