<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI 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">
<xtext:Grammar name="com.perforce.example.p4dsl.P4Dsl" usedGrammars="/1">
<metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="p4Dsl">
<ePackage href="http://www.perforce.com/example/p4dsl/P4Dsl#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="Model">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Model"/>
</type>
<alternatives xsi:type="xtext:Assignment" cardinality="*" feature="command" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Command">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Command"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="p4"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="P4Command">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//P4Command"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PUCFlag">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//PUCFlag"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Port">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Port"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="-p"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="p4command" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="User">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//User"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="-u"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="p4command" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Client">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Client"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="-c"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="p4command" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FileBasedCommand">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//FileBasedCommand"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Add">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Add"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="add"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Edit">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Edit"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="edit"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Delete">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.perforce.com/example/p4dsl/P4Dsl#//Delete"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="delete"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="P4PORT">
<type metamodel="/1/@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="/1/@rules.0"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FILE">
<type metamodel="/1/@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:RuleCall" rule="/1/@rules.0"/>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
</xtext:Grammar>
<xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:TerminalRule" name="ID">
<type metamodel="/1/@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" cardinality="?" value="^"/>
<elements 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="_"/>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<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="_"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="INT">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</type>
<alternatives xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="STRING">
<type metamodel="/1/@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:Group">
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements 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="u"/>
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
</elements>
</elements>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="""/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="""/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements 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="u"/>
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
</elements>
</elements>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="'"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="'"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
<type metamodel="/1/@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:UntilToken">
<terminal xsi:type="xtext:Keyword" value="*/"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
<type metamodel="/1/@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:NegatedToken" cardinality="*">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" cardinality="?" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="WS">
<type metamodel="/1/@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:Keyword" value=" "/>
<elements xsi:type="xtext:Keyword" value="	"/>
<elements xsi:type="xtext:Keyword" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Wildcard"/>
</rules>
</xtext:Grammar>
</xmi:XMI>
# |
Change |
User |
Description |
Committed |
|
#1
|
8258 |
Liz Lam |
Initial add of p4dsl - an exploration of Xtext using the p4 command line as an example. |
|
|