src/Pure/Isar/parse_spec.ML
changeset 72536 589645894305
parent 69349 7cef9e386ffe
child 72739 e7c2848b78e8
equal deleted inserted replaced
72535:7cb68b5b103d 72536:589645894305
   125 
   125 
   126 val locale_keyword =
   126 val locale_keyword =
   127   Parse.$$$ "fixes" || Parse.$$$ "constrains" || Parse.$$$ "assumes" ||
   127   Parse.$$$ "fixes" || Parse.$$$ "constrains" || Parse.$$$ "assumes" ||
   128   Parse.$$$ "defines" || Parse.$$$ "notes";
   128   Parse.$$$ "defines" || Parse.$$$ "notes";
   129 
   129 
   130 val class_expression = plus1_unless locale_keyword Parse.class;
   130 val locale_keyword' =
       
   131   Parse.$$$ "includes" || locale_keyword;
       
   132 
       
   133 val class_expression = plus1_unless locale_keyword' Parse.class;
   131 
   134 
   132 val locale_expression =
   135 val locale_expression =
   133   let
   136   let
   134     val expr2 = Parse.name_position;
   137     val expr2 = Parse.name_position;
   135     val expr1 =
   138     val expr1 =
   136       locale_prefix -- expr2 --
   139       locale_prefix -- expr2 --
   137       instance >> (fn ((p, l), i) => (l, (p, i)));
   140       instance >> (fn ((p, l), i) => (l, (p, i)));
   138     val expr0 = plus1_unless locale_keyword expr1;
   141     val expr0 = plus1_unless locale_keyword' expr1;
   139   in expr0 -- Scan.optional (Parse.$$$ "for" |-- Parse.!!! locale_fixes) [] end;
   142   in expr0 -- Scan.optional (Parse.$$$ "for" |-- Parse.!!! locale_fixes) [] end;
   140 
   143 
   141 val context_element = Parse.group (fn () => "context element") loc_element;
   144 val context_element = Parse.group (fn () => "context element") loc_element;
   142 
   145 
   143 end;
   146 end;