Blame data/language-specs/language.rng

Packit a7d494
Packit a7d494
Packit a7d494
Packit a7d494
 This file is part of GtkSourceView
Packit a7d494
Packit a7d494
 Copyright (C) 2005-2007 Marco Barisione <barisione@gmail.com>
Packit a7d494
 Copyright (C) 2005-2007 Emanuele Aina
Packit a7d494
Packit a7d494
 gtksourceview is free software; you can redistribute it and/or
Packit a7d494
 modify it under the terms of the GNU Lesser General Public
Packit a7d494
 License as published by the Free Software Foundation; either
Packit a7d494
 version 2.1 of the License, or (at your option) any later version.
Packit a7d494
Packit a7d494
 gtksourceview is distributed in the hope that it will be useful,
Packit a7d494
 but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a7d494
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a7d494
 Lesser General Public License for more details.
Packit a7d494
Packit a7d494
 You should have received a copy of the GNU Lesser General Public
Packit a7d494
 License along with this library; if not, write to the Free Software
Packit a7d494
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit a7d494
Packit a7d494
-->
Packit a7d494
Packit a7d494
  This file describes the XML format used for syntax highlight
Packit a7d494
  descriptions for the GtkSourceView 1.x library.
Packit a7d494
  
Packit a7d494
  .lang files are XML files which describe how to highlight syntax;
Packit a7d494
  this RNG is used for validation purposes.
Packit a7d494
  
Packit a7d494
  .lang files should be located in $PREFIX/gtksourceview-1.0/language-specs/, 
Packit a7d494
  or in ~./gnome2/gtksourceview-1.0/language-specs/
Packit a7d494
  
Packit a7d494
  To check if a .lang file is valid, run
Packit a7d494
  
Packit a7d494
  $ xmllint FILENAME - -relaxng language.rng
Packit a7d494
  
Packit a7d494
  If you create a new .lang file or modify an existing one, please note
Packit a7d494
  that it will be (re)loaded by the application only after it is
Packit a7d494
  restarted.
Packit a7d494
-->
Packit a7d494
Packit a7d494
  Boolean type
Packit a7d494
  
Packit a7d494
  Attributes that are of type boolean allow the following values:
Packit a7d494
  
Packit a7d494
  - 'true', 'TRUE' and '1' 	all meaning true
Packit a7d494
  - 'false', FALSE' and '0' 	all meaning false
Packit a7d494
  
Packit a7d494
  It is encouraged to use 'TRUE' and 'FALSE' instead of the alternatives.
Packit a7d494
-->
Packit a7d494
Packit a7d494
         xmlns="http://relaxng.org/ns/structure/1.0"
Packit a7d494
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
Packit a7d494
  <define name="boolean">
Packit a7d494
    <choice>
Packit a7d494
      <value>true</value>
Packit a7d494
      <value>false</value>
Packit a7d494
      <value>TRUE</value>
Packit a7d494
      <value>FALSE</value>
Packit a7d494
      <value>0</value>
Packit a7d494
      <value>1</value>
Packit a7d494
    </choice>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    Attributes required by all element representing a syntax or pattern tag.
Packit a7d494
    
Packit a7d494
    - name		the name of the tag (it can appear in the UI)
Packit a7d494
    
Packit a7d494
    - style		the style used to highlight the tag. Recognized values
Packit a7d494
    		are (from gtksourcestylescheme.h):
Packit a7d494
    
Packit a7d494
    		- Base-N Integer	used for values with a base
Packit a7d494
    					other than 10
Packit a7d494
    		- Character		used for single characters
Packit a7d494
    		- Comment		used for comments
Packit a7d494
    		- Data Type		used for data types
Packit a7d494
    		- Function		used for function names
Packit a7d494
    		- Decimal		used for decimal values
Packit a7d494
    		- Floating Point	used for floating point values
Packit a7d494
    		- Keyword		used for keywords
Packit a7d494
    		- Preprocessor		used for preprocessor instructions
Packit a7d494
    		- String		used for strings
Packit a7d494
    		- Specials		used for 'special' things
Packit a7d494
    		- Others (DEPRECATED, replaced by "Data Type")
Packit a7d494
    		- Others 2		used for 'other' things
Packit a7d494
    		- Others 3		used for 'other' things
Packit a7d494
    
Packit a7d494
    The "name" attribute can be prefixed with "_" to be marked for
Packit a7d494
    translation.
Packit a7d494
  -->
Packit a7d494
  <define name="tagattrs">
Packit a7d494
    <choice>
Packit a7d494
      <attribute name="_name">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
      <attribute name="name">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
    </choice>
Packit a7d494
    <attribute name="style">
Packit a7d494
      <data type="string"/>
Packit a7d494
    </attribute>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The root of the definition file is the element "language".
Packit a7d494
    
Packit a7d494
    Required attributes:
Packit a7d494
    
Packit a7d494
    - name		the name of the language (it can appear in menus and
Packit a7d494
    		dialog boxes)
Packit a7d494
    
Packit a7d494
    - section	the category the language belongs to (e.g. "Sources",
Packit a7d494
    		"Scripts", etc.)
Packit a7d494
    
Packit a7d494
    - version	version of the .lang file format (1.0)
Packit a7d494
    
Packit a7d494
    - mimetypes	a list of mime-types that identifies the types of file
Packit a7d494
    		that must be highlighted using the .lang file
Packit a7d494
    
Packit a7d494
    Optional attributes:
Packit a7d494
    
Packit a7d494
    - translation-domain
Packit a7d494
    		the translation domain used by the file
Packit a7d494
    
Packit a7d494
    The "name" and "section" attributes can be prefixed with
Packit a7d494
    "_" to be marked for translation.
Packit a7d494
  -->
Packit a7d494
  <define name="language">
Packit a7d494
    <element name="language">
Packit a7d494
      <ref name="attlist.language"/>
Packit a7d494
      <optional>
Packit a7d494
        <ref name="escape-char"/>
Packit a7d494
      </optional>
Packit a7d494
      <oneOrMore>
Packit a7d494
        <choice>
Packit a7d494
          <ref name="line-comment"/>
Packit a7d494
          <ref name="block-comment"/>
Packit a7d494
          <ref name="string"/>
Packit a7d494
          <ref name="syntax-item"/>
Packit a7d494
          <ref name="pattern-item"/>
Packit a7d494
          <ref name="keyword-list"/>
Packit a7d494
        </choice>
Packit a7d494
      </oneOrMore>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
  <define name="attlist.language" combine="interleave">
Packit a7d494
    <choice>
Packit a7d494
      <attribute name="_name">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
      <attribute name="name">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
    </choice>
Packit a7d494
    <choice>
Packit a7d494
      <attribute name="_section">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
      <attribute name="section">
Packit a7d494
        <data type="string"/>
Packit a7d494
      </attribute>
Packit a7d494
    </choice>
Packit a7d494
    <attribute name="version">
Packit a7d494
      <data type="string">
Packit a7d494
        <param name="pattern">1\.0</param>
Packit a7d494
      </data>
Packit a7d494
    </attribute>
Packit a7d494
    <attribute name="mimetypes"/>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="translation-domain"/>
Packit a7d494
    </optional>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
  <define name="escape-char">
Packit a7d494
    <element name="escape-char">
Packit a7d494
      <ref name="attlist.escape-char"/>
Packit a7d494
      <text/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.escape-char" combine="interleave">
Packit a7d494
    <empty/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The line-comment" element represents single line comments.
Packit a7d494
    The "start-regex" subelement defines the regex matching the start of
Packit a7d494
    the comment.
Packit a7d494
  -->
Packit a7d494
  <define name="line-comment">
Packit a7d494
    <element name="line-comment">
Packit a7d494
      <ref name="attlist.line-comment"/>
Packit a7d494
      <ref name="start-regex"/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.line-comment" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The "block-comment" element represents multiple lines comments.
Packit a7d494
    The "start-regex" subelement defines the regex matching the beginning of
Packit a7d494
    the comment.
Packit a7d494
    The "end-regex" subelement defines the regex matching the end of
Packit a7d494
    the comment.
Packit a7d494
  -->
Packit a7d494
  <define name="block-comment">
Packit a7d494
    <element name="block-comment">
Packit a7d494
      <ref name="attlist.block-comment"/>
Packit a7d494
      <ref name="start-regex"/>
Packit a7d494
      <ref name="end-regex"/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.block-comment" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The "string" element represents string.
Packit a7d494
    The "start-regex" subelement defines the regex matching the beginning of
Packit a7d494
    the string.
Packit a7d494
    The "end-regex" subelement defines the regex matching the end of
Packit a7d494
    the string.
Packit a7d494
    
Packit a7d494
    Optional attributes:
Packit a7d494
    
Packit a7d494
    - end-at-line-end	whether the string end at the end of line
Packit a7d494
  -->
Packit a7d494
  <define name="string">
Packit a7d494
    <element name="string">
Packit a7d494
      <ref name="attlist.string"/>
Packit a7d494
      <ref name="start-regex"/>
Packit a7d494
      <ref name="end-regex"/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.string" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="end-at-line-end" a:defaultValue="TRUE">
Packit a7d494
        <ref name="boolean"/>
Packit a7d494
      </attribute>
Packit a7d494
    </optional>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The "syntax-item" element represents a generic region of the document.
Packit a7d494
    The "start-regex" subelement defines the regex matching the beginning of
Packit a7d494
    the region.
Packit a7d494
    The "end-regex" subelement defines the regex matching the end of
Packit a7d494
    the region.
Packit a7d494
  -->
Packit a7d494
  <define name="syntax-item">
Packit a7d494
    <element name="syntax-item">
Packit a7d494
      <ref name="attlist.syntax-item"/>
Packit a7d494
      <ref name="start-regex"/>
Packit a7d494
      <ref name="end-regex"/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.syntax-item" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The "pattern-item" element represents a generic token.
Packit a7d494
    The "regex" subelement defines the regex matching the token.
Packit a7d494
  -->
Packit a7d494
  <define name="pattern-item">
Packit a7d494
    <element name="pattern-item">
Packit a7d494
      <ref name="attlist.pattern-item"/>
Packit a7d494
      <ref name="regex"/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.pattern-item" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
    The "keyword-list" element represents a list of keywords, it can have
Packit a7d494
    one or more "keyword" subelements each one representing a keyword.
Packit a7d494
    A "keyword" subelement defines the regex matching a keyword of the
Packit a7d494
    language.
Packit a7d494
    
Packit a7d494
    Optional attributes:
Packit a7d494
    
Packit a7d494
    - case-sensitive	whether the keywords are case sensitive
Packit a7d494
    
Packit a7d494
    - match-empty-string-at-beginning:
Packit a7d494
    			whether the empty string (\b) should be matched
Packit a7d494
    			at the beginning of the keywords
Packit a7d494
    
Packit a7d494
    - match-empty-string-at-end
Packit a7d494
    			whether the empty string (\b) should be matched
Packit a7d494
    			at the end of the keywords
Packit a7d494
    
Packit a7d494
    - beginning-regex	if all keywords start with a regex, you can
Packit a7d494
    			specify	it here to avoid doing it for
Packit a7d494
    			every single keyword
Packit a7d494
    
Packit a7d494
    - end-regex		if all keywords end with a regex, you can
Packit a7d494
    			specify	it here to avoid doing it for
Packit a7d494
    			every single keyword
Packit a7d494
  -->
Packit a7d494
  <define name="keyword-list">
Packit a7d494
    <element name="keyword-list">
Packit a7d494
      <ref name="attlist.keyword-list"/>
Packit a7d494
      <oneOrMore>
Packit a7d494
        <ref name="keyword"/>
Packit a7d494
      </oneOrMore>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.keyword-list" combine="interleave">
Packit a7d494
    <ref name="tagattrs"/>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="case-sensitive" a:defaultValue="TRUE">
Packit a7d494
        <ref name="boolean"/>
Packit a7d494
      </attribute>
Packit a7d494
    </optional>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="match-empty-string-at-beginning" a:defaultValue="FALSE">
Packit a7d494
        <ref name="boolean"/>
Packit a7d494
      </attribute>
Packit a7d494
    </optional>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="match-empty-string-at-end" a:defaultValue="FALSE">
Packit a7d494
        <ref name="boolean"/>
Packit a7d494
      </attribute>
Packit a7d494
    </optional>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="beginning-regex"/>
Packit a7d494
    </optional>
Packit a7d494
    <optional>
Packit a7d494
      <attribute name="end-regex"/>
Packit a7d494
    </optional>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
  <define name="keyword">
Packit a7d494
    <element name="keyword">
Packit a7d494
      <ref name="attlist.keyword"/>
Packit a7d494
      <text/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.keyword" combine="interleave">
Packit a7d494
    <empty/>
Packit a7d494
  </define>
Packit a7d494
  <define name="regex">
Packit a7d494
    <element name="regex">
Packit a7d494
      <ref name="attlist.regex"/>
Packit a7d494
      <text/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.regex" combine="interleave">
Packit a7d494
    <empty/>
Packit a7d494
  </define>
Packit a7d494
  <define name="start-regex">
Packit a7d494
    <element name="start-regex">
Packit a7d494
      <ref name="attlist.start-regex"/>
Packit a7d494
      <text/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.start-regex" combine="interleave">
Packit a7d494
    <empty/>
Packit a7d494
  </define>
Packit a7d494
  <define name="end-regex">
Packit a7d494
    <element name="end-regex">
Packit a7d494
      <ref name="attlist.end-regex"/>
Packit a7d494
      <text/>
Packit a7d494
    </element>
Packit a7d494
  </define>
Packit a7d494
  <define name="attlist.end-regex" combine="interleave">
Packit a7d494
    <empty/>
Packit a7d494
  </define>
Packit a7d494
  
Packit a7d494
  <start>
Packit a7d494
    <choice>
Packit a7d494
      <ref name="language"/>
Packit a7d494
    </choice>
Packit a7d494
  </start>
Packit a7d494
</grammar>