<?xml version="1.0"?>
<clause number="20.1" title="Interface declarations">
  <paragraph>An <non_terminal where="20.1">interface-declaration</non_terminal> is a <non_terminal where="16.5">type-declaration</non_terminal> (<hyperlink>16.5</hyperlink>) that declares a new interface type. <grammar_production><name><non_terminal where="20.1">interface-declaration</non_terminal></name> : <rhs><non_terminal where="24.2">attributes</non_terminal><opt/><non_terminal where="20.1.1">interface-modifiers</non_terminal><opt/><keyword>interface</keyword><non_terminal where="9.4.2">identifier</non_terminal><non_terminal where="20.1.2">interface-base</non_terminal><opt/><non_terminal where="20.1.3">interface-body</non_terminal><terminal>;</terminal><opt/></rhs></grammar_production></paragraph>
  <paragraph>An <non_terminal where="20.1">interface-declaration</non_terminal> consists of an optional set of attributes (<hyperlink>24</hyperlink>), followed by an optional set of <non_terminal where="20.1.1">interface-modifier</non_terminal>s (<hyperlink>20.1.1</hyperlink>), followed by the keyword interface and an identifier that names the interface, optionally followed by an optional <non_terminal where="20.1.2">interface-base</non_terminal> specification (<hyperlink>20.1.2</hyperlink>), followed by a  <non_terminal where="20.1.3">interface-body</non_terminal> (<hyperlink>20.1.3</hyperlink>), optionally followed by a semicolon. </paragraph>
</clause>
