blob: 0dbfce39db3487ce154ce40d78b28a5e763e4acb [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<xtext:Grammar xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext" name="org.eclipse.ocl.examples.xtext.markup.Markup" definesHiddenTokens="true">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
<ePackage href="http://www.eclipse.org/ocl/3.2.0/Markup#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="Markup">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//Markup"/>
</type>
<alternatives xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="NUMBER" fragment="true">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="LETTER" fragment="true">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:CharacterRange">
<left value="a"/>
<right value="z"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="A"/>
<right value="Z"/>
</elements>
<elements xsi:type="xtext:Keyword" value="_"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ESCAPED" fragment="true">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="b"/>
<elements xsi:type="xtext:Keyword" value="t"/>
<elements xsi:type="xtext:Keyword" value="n"/>
<elements xsi:type="xtext:Keyword" value="f"/>
<elements xsi:type="xtext:Keyword" value="r"/>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="&lt;"/>
<elements xsi:type="xtext:Keyword" value=">"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Keyword" value="]"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="VERTICAL_WS" fragment="true">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="&#xA;"/>
<elements xsi:type="xtext:Keyword" value="&#xD;"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="HORIZONTAL_WS" fragment="true">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value=" "/>
<elements xsi:type="xtext:Keyword" value="&#x9;"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="INT">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" cardinality="+" rule="//@rules.1"/>
</rules>
<rules xsi:type="xtext:TerminalRule" name="STRING">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="&quot;"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:RuleCall" rule="//@rules.3"/>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ID">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="//@rules.2"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:RuleCall" rule="//@rules.2"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.1"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="WORD">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives" cardinality="+">
<elements xsi:type="xtext:RuleCall" rule="//@rules.3"/>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Keyword" value="]"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Keyword" value="#"/>
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.5"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.4"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="NL">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group" cardinality="+">
<elements xsi:type="xtext:RuleCall" cardinality="*" rule="//@rules.5"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.4"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="WS">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" cardinality="+" rule="//@rules.5"/>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Wildcard"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="MarkupKeyword">
<type metamodel="//@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="b"/>
<elements xsi:type="xtext:Keyword" value="e"/>
<elements xsi:type="xtext:Keyword" value="bullet"/>
<elements xsi:type="xtext:Keyword" value="figure"/>
<elements xsi:type="xtext:Keyword" value="figureRef"/>
<elements xsi:type="xtext:Keyword" value="footnote"/>
<elements xsi:type="xtext:Keyword" value="heading"/>
<elements xsi:type="xtext:Keyword" value="oclCode"/>
<elements xsi:type="xtext:Keyword" value="oclEval"/>
<elements xsi:type="xtext:Keyword" value="oclText"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MarkupElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//MarkupElement"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="//@rules.16"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.21"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.15"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.17"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.18"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.19"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.20"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.22"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.23"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.24"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.25"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.26"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="BulletElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//BulletElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//BulletElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="bullet"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="level" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FontElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FontElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="font" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="b"/>
<elements xsi:type="xtext:Keyword" value="e"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FigureElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FigureElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="figure"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="#"/>
<elements xsi:type="xtext:Assignment" feature="def" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.8"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="src" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.7"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="alt" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.7"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="requiredWidth" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="requiredHeight" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
</elements>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FigureRefElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FigureRefElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="figureRef"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="ref" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FigureElement"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="//@rules.8"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FootnoteElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FootnoteElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//FootnoteElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="footnote"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="HeadingElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//HeadingElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//HeadingElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="heading"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="level" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NewLineElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//NewLineElement"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="text" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.10"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NullElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//NullElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//NullElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OclCodeElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclCodeElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclCodeElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="oclCode"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OclEvalElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclEvalElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclEvalElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="oclEval"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OclTextElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclTextElement"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//OclTextElement"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="oclText"/>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="elements" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TextElement">
<type metamodel="//@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.2.0/Markup#//TextElement"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" cardinality="+" feature="text" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="//@rules.8"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.9"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.6"/>
<elements xsi:type="xtext:RuleCall" rule="//@rules.11"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Keyword" value="#"/>
<elements xsi:type="xtext:Keyword" value=","/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="text" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="//@rules.13"/>
</elements>
</alternatives>
</rules>
</xtext:Grammar>