{ parserClass="org.dnltsk.mapfileplugin.parser.MapfileParser" parserUtilClass="org.dnltsk.mapfileplugin.parser.MapfileParserUtil" extends="com.intellij.extapi.psi.ASTWrapperPsiElement" psiClassPrefix="Mapfile" psiImplClassSuffix="Impl" psiPackage="org.dnltsk.mapfileplugin.psi" psiImplPackage="org.dnltsk.mapfileplugin.psi.impl" elementTypeHolderClass="org.dnltsk.mapfileplugin.psi.MapfileTypes" elementTypeClass="org.dnltsk.mapfileplugin.psi.MapfileElementType" tokenTypeClass="org.dnltsk.mapfileplugin.psi.MapfileTokenType" psiImplUtilClass="org.dnltsk.mapfileplugin.psi.impl.MapfilePsiImplUtil" tokens=[ SEMI=';' EQ='=' LP='(' RP=')' attributeToken="regexp:\[.+\]" logicalExpressionToken="regexp:\(.+\)" listExpressionToken="regexp:\{.+\}" regexToken="regexp:/.+/" integer='regexp:[+-]{0,1}\d+' double='regexp:[+-]{0,1}\d+(\.\d*)?' space='regexp:\s+' comment='regexp:#.*' number='regexp:[+-]{0,1}\d+(\.\d*)?' id='regexp:\p{Alpha}\w*' string="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")" op_1='+' op_2='-' op_3='*' op_4='/' op_5='!' ] } /* root ::= MapObject2 * MapObject2 ::= MAP MapObject2_entry * END { pin=1 } MapObject2_entry ::= !END ( TitleAttr2 | NameAttr2 ) {pin=1} private TitleAttr2 ::= NAME string {pin=1 recoverWhile=global_attribute_recover2} private NameAttr2 ::= TITLE string {pin=1 recoverWhile=global_attribute_recover2} private global_attribute_recover2 ::= !(END | NAME | TITLE | MAP) */ root ::= mapfile private mapfile ::= MapObject | WebObject | ScalebarObject | ProjectionObject | MetadataObject | QuerymapObject | ReferenceObject | GridObject | ( LayerObject | ClassObject | SymbolObject | LabelObject | StyleObject | OutputformatObject | LeaderObject | LegendObject | FeatureObject | ClusterObject | CompositeObject | JoinObject | PatternObject | ValidationObject | PointsObject ) * // // OBJECTS // MapObject ::= MAP MapObjectChildren * END { pin=1 } MapObjectChildren ::= !END ( LayerObject | LegendObject | ProjectionObject | OutputformatObject | QuerymapObject | ReferenceObject | ScalebarObject | SymbolObject | WebObject | AngleAttr | ConfigAttr | DatapatternAttr | DebugAttr | DefresolutionAttr | ExtentAttr | FontsetAttr | ImagecolorAttr | ImagetypeAttr | InterlaceAttr | MaxsizeAttr | NameAttr | ResolutionAttr | ScaledenomAttr | ShapepathAttr | SizeAttr | StatusAttr | SymbolsetAttr | TemplatepatternAttr | UnitsAttr | IncludeAttr ) { pin=1 } WebObject ::= WEB WebObjectChildren * END { pin=1 } WebObjectChildren ::= !END ( MetadataObject | ValidationObject | BrowseformatAttr | EmptyAttr | ErrorAttr | FooterAttr | HeaderAttr | ImagepathAttr | ImageurlAttr | LegendformatAttr | MaxscaledenomAttr | MaxtemplateAttr | MinscaledenomAttr | MintemplateAttr | QueryformatAttr | TemplateAttr | TemppathAttr | IncludeAttr ) { pin=1 } LayerObject ::= LAYER LayerObjectChildren * END { pin=1 } LayerObjectChildren ::= !END ( ClassObject | ClusterObject | CompositeObject | FeatureObject | GridObject | JoinObject | MetadataObject | ProjectionObject | ValidationObject | ClassgroupAttr | ClassitemAttr | ConnectionAttr | ConnectiontypeAttr | DataAttr | DebugAttr | DumpAttr | EncodingAttr | ExtentAttr | FilterAttr | FooterAttr | FilteritemAttr | GeomtransformAttr | GroupAttr | HeaderAttr | LabelcacheAttr | LabelitemAttr | LabelmaxscaledenomAttr | LabelminscaledenomAttr | LabelrequiresAttr | MaskAttr | MaxfeaturesAttr | MaxgeowidthAttr | MaxscaledenomAttr | MingeowidthAttr | MinscaledenomAttr | NameAttr | PluginAttr | PostlabelcacheAttr | ProcessingAttr | OffsiteAttr | SizeunitsAttr | RequiresAttr | StatusAttr | StyleitemAttr | SymbolscaledenomAttr | TemplateAttr | TileindexAttr | TileitemAttr | TilesrsAttr | TitleAttr | ToleranceunitsAttr | ToleranceAttr | TransformAttr | TypeAttr | UnitsAttr | UtfdataAttr | UtfitemAttr | IncludeAttr ) { pin=1 } ClassObject ::= CLASS ClassObjectChildren * END { pin=1 } ClassObjectChildren ::= !END ( LabelObject | LeaderObject | StyleObject | ValidationObject | DebugClassAttr | ExpressionAttr | GroupAttr | KeyimageAttr | MaxscaledenomAttr | MinscaledenomAttr | NameAttr | StatusAttr | TemplateAttr | TextAttr | IncludeAttr ) { pin=1 } SymbolObject ::= SYMBOL SymbolObjectChildren * END { pin=1 } SymbolObjectChildren ::= !END ( PointsObject | AnchorpointAttr | AntialiasAttr | CharacterAttr | FilledAttr | FontAttr | ImageAttr | NameAttr | TransparentAttr | TypeSymbolAttr | IncludeAttr ) { pin=1 } LabelObject ::= LABEL LabelObjectChildren * END { pin=1 } LabelObjectChildren ::= !END ( StyleObject | AlignAttr | AngleLabelAttr | AntialiasAttr | BufferAttr | ColorClassEnum | ExpressionAttr | FontLabelAttr | ForceAttr | MaxlengthAttr | MaxoverlapangleAttr | MaxscaledenomAttr | MaxsizeAttr | MindistanceAttr | MinfeaturesizeAttr | MinscaledenomAttr | MinsizeAttr | OffsetAttr | OutlinecolorClassAttr | OutlinewidthAttr | PartialsAttr | PositionAttr | PriorityAttr | RepeatdistanceAttr | ShadowcolorAttr | ShadowsizeAttr | SizeLabelAttr | TextAttr | TypeLabelAttr | WrapAttr | IncludeAttr ) { pin=1 } StyleObject ::= STYLE StyleObjectChildren * END { pin=1 } StyleObjectChildren ::= !END ( PatternObject | AngleClassAttr | AntialiasAttr | ColorClassAttr | GapAttr | GeomtransformClassAttr | InitialgapAttr | LinecapAttr | LinejoinAttr | LinejoinmaxsizeAttr | MaxscaledenomAttr | MaxsizeAttr | MaxwidthAttr | MinscaledenomAttr | MinsizeAttr | MinwidthAttr | OffsetAttr | OpacityClassAttr | OutlinecolorClassAttr | OutlinewidthAttr | PolaroffsetAttr | SizeClassAttr | SymbolClassAttr | WidthClassAttr | IncludeAttr ) { pin=1 } LeaderObject ::= LEADER LeaderObjectChildren * END { pin=1 } // TODO supported layer type: Polygon LeaderObjectChildren ::= !END ( StyleObject | GridstepAttr | MaxdistanceAttr | IncludeAttr ) { pin=1 } LegendObject ::= LEGEND LegendObjectChildren * END { pin=1 } LegendObjectChildren ::= !END ( LabelObject | ImagecolorAttr | InterlaceAttr | KeysizeAttr | KeyspacingAttr | OutlinecolorAttr | PositionAttr | PostlabelcacheAttr | StatusAttr | TemplateAttr | IncludeAttr ) { pin=1 } FeatureObject ::= FEATURE FeatureObjectChildren * END { pin=1 } FeatureObjectChildren ::= !END ( PointsObject | ItemsAttr | TextAttr | WktAttr | IncludeAttr ) { pin=1 } ClusterObject ::= CLUSTER ClusterObjectChildren * END { pin=1 } // TODO: only within POINT layers ClusterObjectChildren ::= !END ( MaxdistanceAttr | RegionAttr | BufferAttr | GroupAttr | FilterAttr | ProcessingAttr | IncludeAttr ) { pin=1 } CompositeObject ::= COMPOSITE CompositeObjectChildren * END { pin=1 } CompositeObjectChildren ::= !END ( OpacityAttr | CompopAttr | IncludeAttr ) { pin=1 } GridObject ::= GRID GridObjectChildren * END { pin=1 } GridObjectChildren ::= !END ( LabelformatAttr | MinarcsAttr | MaxarcsAttr | MinintervalAttr | MaxintervalAttr | MinsubdivideAttr | MaxsubdivideAttr | IncludeAttr ) { pin=1 } JoinObject ::= JOIN JoinObjectChildren * END { pin=1 } JoinObjectChildren ::= !END ( ConnectionAttr | ConnectiontypeJoinAttr | FooterAttr | FromAttr | HeaderAttr | NameAttr | TableAttr | TemplateAttr | ToAttr | TypeJoinAttr | IncludeAttr ) { pin=1 } QuerymapObject ::= QUERYMAP QuerymapObjectChildren * END { pin=1 } QuerymapObjectChildren ::= !END ( ColorAttr | SizeAttr | StatusAttr | StyleQuerymapAttr | IncludeAttr ) { pin=1 } ReferenceObject ::= REFERENCE ReferenceObjectChildren * END { pin=1 } ReferenceObjectChildren ::= !END ( ColorAttr | ExtentAttr | ImageAttr | MarkerAttr | MarkersizeAttr | MinboxsizeAttr | MaxboxsizeAttr | OutlinecolorAttr | SizeAttr | StatusAttr | IncludeAttr ) { pin=1 } ScalebarObject ::= SCALEBAR ScalebarObjectChildren * END { pin=1 } ScalebarObjectChildren ::= !END ( LabelObject | AlignAttr | BackgroundcolorAttr | ColorAttr | ImagecolorAttr | InterlaceAttr | OutlinecolorAttr | PositionAttr | PostlabelcacheAttr | SizeAttr | StatusAttr | StyleScalebarAttr | UnitsAttr | IncludeAttr ) { pin=1 } OutputformatObject ::= OUTPUTFORMAT OutputformatObjectChildren * END { pin=1} OutputformatObjectChildren ::= !END ( DriverAttr | ExtensionAttr | FormatoptionAttr | ImagemodeAttr | MimetypeAttr | NameAttr | TransparentOutputformatAttr ) { pin=1 } PatternObject ::= PATTERN PatternObjectChildren * END { pin=1 } PatternObjectChildren ::= !END ( ( integer integer ) | IncludeAttr) { pin=1 } ValidationObject ::= VALIDATION ValidationObjectChildren * END ValidationObjectChildren ::= !END ( ( string string ) | IncludeAttr ) { pin=1 } MetadataObject ::= METADATA MetadataObjectChildren * END { pin=1 } MetadataObjectChildren ::= !END ( ( string string ) | IncludeAttr ) { pin=1 } PointsObject ::= POINTS PointsObjectChildren * END { pin=1 } PointsObjectChildren ::= !END ( ( double double ) | IncludeAttr ) { pin=1 } ProjectionObject ::= PROJECTION ProjectionObjectChildren * END { pin=1 } ProjectionObjectChildren ::= !END ( string | IncludeAttr ) { pin=1 } // // ATTRIBUTES // private AlignAttr ::= ALIGN AlignEnum {pin=1 recoverWhile=global_attribute_recover} private AnchorpointAttr ::= ANCHORPOINT double double {pin=1 recoverWhile=global_attribute_recover} // double 0-1 private AngleAttr ::= ANGLE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private AngleClassAttr ::= ANGLE AngleClassEnum {pin=1 recoverWhile=global_attribute_recover} private AngleLabelAttr ::= ANGLE AngleLabelEnum {pin=1 recoverWhile=global_attribute_recover} private AntialiasAttr ::= ANTIALIAS BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private BackgroundcolorAttr ::= BACKGROUNDCOLOR ColorEnum {pin=1 recoverWhile=global_attribute_recover} //TODO color private BrowseformatAttr ::= BROWSEFORMAT string {pin=1 recoverWhile=global_attribute_recover} private BufferAttr ::= BUFFER ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private CharacterAttr ::= CHARACTER string {pin=1 recoverWhile=global_attribute_recover} // TODO char private ClassgroupAttr ::= CLASSGROUP string {pin=1 recoverWhile=global_attribute_recover} private ClassitemAttr ::= CLASSITEM string {pin=1 recoverWhile=global_attribute_recover} private ColorAttr ::= COLOR ColorEnum {pin=1 recoverWhile=global_attribute_recover} //TODO color private ColorClassAttr ::= COLOR ColorClassEnum {pin=1 recoverWhile=global_attribute_recover} private ConfigAttr ::= CONFIG ( ( CGI_CONTEXT_URL string ) | ( MS_ENCRYPTION_KEY string ) | ( MS_ERRORFILE string ) | ( MS_NONSQUARE YesNoEnum ) | ( ON_MISSING_DATA OnMissingDataEnum ) | ( PROJ_LIB string ) | ( string string )) {pin=1 recoverWhile=global_attribute_recover} private CompopAttr ::= COMPOP string {pin=1 recoverWhile=global_attribute_recover} // TODO: keywords in string private ConnectionAttr ::= CONNECTION string {pin=1 recoverWhile=global_attribute_recover} private ConnectiontypeAttr ::= CONNECTIONTYPE ConnectiontypeEnum {pin=1 recoverWhile=global_attribute_recover} private ConnectiontypeJoinAttr ::= CONNECTIONTYPE ConnectiontypeJoinEnum {pin=1 recoverWhile=global_attribute_recover} private DataAttr ::= DATA string {pin=1 recoverWhile=global_attribute_recover} private DatapatternAttr ::= DATAPATTERN string {pin=1 recoverWhile=global_attribute_recover} // TODO: regular expression private DebugAttr ::= DEBUG DebugEnum {pin=1 recoverWhile=global_attribute_recover} private DebugClassAttr ::= DEBUG BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private DefresolutionAttr ::= DEFRESOLUTION integer {pin=1 recoverWhile=global_attribute_recover} private DriverAttr ::= DRIVER DriverEnum {pin=1 recoverWhile=global_attribute_recover} private DumpAttr ::= DUMP BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private EmptyAttr ::= EMPTY string {pin=1 recoverWhile=global_attribute_recover} // TODO: url private EncodingAttr ::= ENCODING string {pin=1 recoverWhile=global_attribute_recover} private ErrorAttr ::= ERROR string {pin=1 recoverWhile=global_attribute_recover} // TODO: url private ExpressionAttr ::= EXPRESSION ExpressionEnum {pin=1 recoverWhile=global_attribute_recover} private ExtensionAttr ::= EXTENSION string {pin=1 recoverWhile=global_attribute_recover} private ExtentAttr ::= EXTENT ( integer | double ) ( integer | double ) ( integer | double ) ( integer | double ) {pin=1 recoverWhile=ExtentAttr_recover} private FilledAttr ::= FILLED BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private FilterAttr ::= FILTER ExpressionEnum {pin=1 recoverWhile=global_attribute_recover} // TODO: expression! private FilteritemAttr ::= FILTERITEM string {pin=1 recoverWhile=global_attribute_recover} private FontAttr ::= FONT string {pin=1 recoverWhile=global_attribute_recover} // TODO must be defined in fontset! private FontLabelAttr ::= FONT ( string | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} // TODO must be defined in fontset! private FontsetAttr ::= FONTSET string {pin=1 recoverWhile=global_attribute_recover} // TODO: file private FooterAttr ::= FOOTER string {pin=1 recoverWhile=global_attribute_recover} // TODO: filename private ForceAttr ::= FORCE BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private FormatoptionAttr ::= FORMATOPTION string {pin=1 recoverWhile=global_attribute_recover} private FromAttr ::= FROM string {pin=1 recoverWhile=global_attribute_recover} private GapAttr ::= GAP double {pin=1 recoverWhile=global_attribute_recover} private GeomtransformAttr ::= GEOMTRANSFORM string {pin=1 recoverWhile=global_attribute_recover} // TODO: [|] private GeomtransformClassAttr ::= GEOMTRANSFORM GeomtransformClassEnum {pin=1 recoverWhile=global_attribute_recover} private GridstepAttr ::= GRIDSTEP integer {pin=1 recoverWhile=global_attribute_recover} private GroupAttr ::= GROUP string {pin=1 recoverWhile=global_attribute_recover} private HeaderAttr ::= HEADER string {pin=1 recoverWhile=global_attribute_recover} // TODO: filename private ImageAttr ::= IMAGE string {pin=1 recoverWhile=global_attribute_recover} private ImagecolorAttr ::= IMAGECOLOR ColorEnum {pin=1 recoverWhile=global_attribute_recover} // TODO: hex or RGB private ImagemodeAttr ::= IMAGEMODE ImagemodeEnum {pin=1 recoverWhile=global_attribute_recover} // TODO: hex or RGB private ImagepathAttr ::= IMAGEPATH string {pin=1 recoverWhile=global_attribute_recover} // TODO: path private ImagetypeAttr ::= IMAGETYPE ImagetypeEnum {pin=1 recoverWhile=global_attribute_recover} // TODO: must match one of the defined ones in OutputfomatObject private ImageurlAttr ::= IMAGEURL string {pin=1 recoverWhile=global_attribute_recover} // TODO path? url? private IncludeAttr ::= INCLUDE string {pin=1 recoverWhile=global_attribute_recover} // TODO path? url? private InitialgapAttr ::= INITIALGAP integer {pin=1 recoverWhile=global_attribute_recover} private InterlaceAttr ::= INTERLACE OnOffEnum {pin=1 recoverWhile=global_attribute_recover} private ItemsAttr ::= ITEMS string {pin=1 recoverWhile=global_attribute_recover} // TODO: comma separated list private KeyimageAttr ::= KEYIMAGE string {pin=1 recoverWhile=global_attribute_recover} // TODO filename private KeysizeAttr ::= KEYSIZE integer integer {pin=1 recoverWhile=global_attribute_recover} private KeyspacingAttr ::= KEYSPACING integer integer {pin=1 recoverWhile=global_attribute_recover} private LabelcacheAttr ::= LABELCACHE OnOffEnum {pin=1 recoverWhile=global_attribute_recover} private LabelformatAttr ::= LABELFORMAT LabelFormatEnum {pin=1 recoverWhile=global_attribute_recover} private LabelitemAttr ::= LABELITEM string {pin=1 recoverWhile=global_attribute_recover} private LabelmaxscaledenomAttr ::= LABELMAXSCALEDENOM ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private LabelminscaledenomAttr ::= LABELMINSCALEDENOM ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private LabelrequiresAttr ::= LABELREQUIRES string {pin=1 recoverWhile=global_attribute_recover} // TODO: expression private LegendformatAttr ::= LEGENDFORMAT string {pin=1 recoverWhile=global_attribute_recover} private LinecapAttr ::= LINECAP LinecapEnum {pin=1 recoverWhile=global_attribute_recover} private LinejoinAttr ::= LINEJOIN LinejoinEnum {pin=1 recoverWhile=global_attribute_recover} private LinejoinmaxsizeAttr ::= LINEJOINMAXSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MarkerAttr ::= MARKER ( integer | string) {pin=1 recoverWhile=global_attribute_recover} private MarkersizeAttr ::= MARKERSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MaskAttr ::= MASK string {pin=1 recoverWhile=global_attribute_recover} // TODO: layername validation private MaxarcsAttr ::= MAXARCS double {pin=1 recoverWhile=global_attribute_recover} private MaxboxsizeAttr ::= MAXBOXSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MaxdistanceAttr ::= MAXDISTANCE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxfeaturesAttr ::= MAXFEATURES integer {pin=1 recoverWhile=global_attribute_recover} private MaxgeowidthAttr ::= MAXGEOWIDTH ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxintervalAttr ::= MAXINTERVAL ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxlengthAttr ::= MAXLENGTH integer {pin=1 recoverWhile=global_attribute_recover} private MaxoverlapangleAttr ::= MAXOVERLAPANGLE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxscaledenomAttr ::= MAXSCALEDENOM ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxsizeAttr ::= MAXSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MaxsubdivideAttr ::= MAXSUBDIVIDE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MaxtemplateAttr ::= MAXTEMPLATE string {pin=1 recoverWhile=global_attribute_recover} // TODO: [file/url] private MaxwidthAttr ::= MAXWIDTH ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MimetypeAttr ::= MIMETYPE string {pin=1 recoverWhile=global_attribute_recover} private MinarcsAttr ::= MINARCS ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MinboxsizeAttr ::= MINBOXSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MindistanceAttr ::= MINDISTANCE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MinfeaturesizeAttr ::= MINFEATURESIZE MinfeaturesizeEnum {pin=1 recoverWhile=global_attribute_recover} private MingeowidthAttr ::= MINGEOWIDTH ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MinintervalAttr ::= MININTERVAL ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MinscaledenomAttr ::= MINSCALEDENOM ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MinsizeAttr ::= MINSIZE integer {pin=1 recoverWhile=global_attribute_recover} private MinsubdivideAttr ::= MINSUBDIVIDE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private MintemplateAttr ::= MINTEMPLATE string {pin=1 recoverWhile=global_attribute_recover} // TODO: [file/url] private MinwidthAttr ::= MINWIDTH ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private NameAttr ::= NAME string {pin=1 recoverWhile=global_attribute_recover} // TODO: Unique check private OffsetAttr ::= OFFSET ( integer | double ) ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private OffsiteAttr ::= OFFSITE ColorEnum {pin=1 recoverWhile=global_attribute_recover} private OpacityAttr ::= OPACITY integer {pin=1 recoverWhile=global_attribute_recover} // TODO: 0-100 private OpacityClassAttr ::= OPACITY ( integer | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} private OutlinecolorAttr ::= OUTLINECOLOR ColorEnum {pin=1 recoverWhile=global_attribute_recover} // TODO color private OutlinecolorClassAttr ::= OUTLINECOLOR ColorClassEnum {pin=1 recoverWhile=global_attribute_recover} private OutlinewidthAttr ::= OUTLINEWIDTH ( double | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} private PartialsAttr ::= PARTIALS BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private PluginAttr ::= PLUGIN string {pin=1 recoverWhile=global_attribute_recover} // TODO: filename private PolaroffsetAttr ::= POLAROFFSET ( ( double | attributeToken ) ( double | attributeToken ) ) {pin=1 recoverWhile=global_attribute_recover} private PositionAttr ::= POSITION PositionEnum {pin=1 recoverWhile=global_attribute_recover} private PostlabelcacheAttr ::= POSTLABELCACHE BooleanEnum {pin=1 recoverWhile=global_attribute_recover} private PriorityAttr ::= PRIORITY ( integer | string | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} private ProcessingAttr ::= PROCESSING string {pin=1 recoverWhile=global_attribute_recover} // TODO: keywords in string!! private QueryformatAttr ::= QUERYFORMAT string {pin=1 recoverWhile=global_attribute_recover} private RegionAttr ::= REGION string {pin=1 recoverWhile=global_attribute_recover} private RepeatdistanceAttr ::= REPEATDISTANCE integer {pin=1 recoverWhile=global_attribute_recover} private RequiresAttr ::= REQUIRES string {pin=1 recoverWhile=global_attribute_recover} // TODO: expression private ResolutionAttr ::= RESOLUTION integer {pin=1 recoverWhile=global_attribute_recover} private ScaledenomAttr ::= SCALEDENOM ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private ShadowcolorAttr ::= SHADOWCOLOR ColorEnum {pin=1 recoverWhile=global_attribute_recover} private ShadowsizeAttr ::= SHADOWSIZE ( ( integer | attributeToken ) ( integer | attributeToken ) ) {pin=1 recoverWhile=global_attribute_recover} private ShapepathAttr ::= SHAPEPATH string {pin=1 recoverWhile=global_attribute_recover} // TODO: directory private SizeAttr ::= SIZE integer integer {pin=1 recoverWhile=global_attribute_recover} private SizeClassAttr ::= SIZE ( integer | double | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} private SizeLabelAttr ::= SIZE SizeLabelEnum {pin=1 recoverWhile=global_attribute_recover} private SizeunitsAttr ::= SIZEUNITS SizeUnitEnum {pin=1 recoverWhile=global_attribute_recover} private StatusAttr ::= STATUS StatusEnum {pin=1 recoverWhile=global_attribute_recover} private StyleitemAttr ::= STYLEITEM string {pin=1 recoverWhile=global_attribute_recover} // TODO: [|auto|] private StyleQuerymapAttr ::= STYLE StyleQuerymapEnum {pin=1 recoverWhile=global_attribute_recover} private StyleScalebarAttr ::= STYLE ( 0 | 1) {pin=1 recoverWhile=global_attribute_recover} private SymbolClassAttr ::= SYMBOL (integer | string | attributeToken) {pin=1 recoverWhile=global_attribute_recover} private SymbolscaledenomAttr ::= SYMBOLSCALEDENOM double {pin=1 recoverWhile=global_attribute_recover} private SymbolsetAttr ::= SYMBOLSET string {pin=1 recoverWhile=global_attribute_recover} // TODO: file private TableAttr ::= TABLE string {pin=1 recoverWhile=global_attribute_recover} private TemplateAttr ::= TEMPLATE string {pin=1 recoverWhile=global_attribute_recover} // TODO: [file|url] private TemplatepatternAttr ::= TEMPLATEPATTERN string {pin=1 recoverWhile=global_attribute_recover} // TODO regex private TemppathAttr ::= TEMPPATH string {pin=1 recoverWhile=global_attribute_recover} // TODO: path private TextAttr ::= TEXT string {pin=1 recoverWhile=global_attribute_recover} // TODO string,expression private TileindexAttr ::= TILEINDEX string {pin=1 recoverWhile=global_attribute_recover} // TODO: [filename|layername] private TileitemAttr ::= TILEITEM string {pin=1 recoverWhile=global_attribute_recover} // TODO: [attribute] private TilesrsAttr ::= TILESRS string {pin=1 recoverWhile=global_attribute_recover} // TODO: [attribute] private TitleAttr ::= TITLE string {pin=1 recoverWhile=global_attribute_recover} private ToAttr ::= TO string {pin=1 recoverWhile=global_attribute_recover} private ToleranceAttr ::= TOLERANCE ( integer | double ) {pin=1 recoverWhile=global_attribute_recover} private ToleranceunitsAttr ::= TOLERANCEUNITS ToleranceUnitEnum {pin=1 recoverWhile=global_attribute_recover} private TransformAttr ::= TRANSFORM TransformEnum {pin=1 recoverWhile=global_attribute_recover} private TransparentAttr ::= TRANSPARENT integer {pin=1 recoverWhile=global_attribute_recover} // TODO color-index private TransparentOutputformatAttr ::= TRANSPARENT OnOffEnum {pin=1 recoverWhile=global_attribute_recover} private TypeAttr ::= TYPE TypeEnum {pin=1 recoverWhile=global_attribute_recover} private TypeJoinAttr ::= TYPE TypeJoinEnum {pin=1 recoverWhile=global_attribute_recover} private TypeLabelAttr ::= TYPE TypeLabelEnum {pin=1 recoverWhile=global_attribute_recover} private TypeSymbolAttr ::= TYPE TypeSymbolEnum {pin=1 recoverWhile=global_attribute_recover} private UnitsAttr ::= UNITS UnitsEnum {pin=1 recoverWhile=global_attribute_recover} private UtfdataAttr ::= UTFDATA string {pin=1 recoverWhile=global_attribute_recover} private UtfitemAttr ::= UTFITEM string {pin=1 recoverWhile=global_attribute_recover} private WidthClassAttr ::= WIDTH ( ( integer | double ) | attributeToken ) {pin=1 recoverWhile=global_attribute_recover} private WktAttr ::= WKT string {pin=1 recoverWhile=global_attribute_recover} // TODO wkt standard private WrapAttr ::= WRAP string {pin=1 recoverWhile=global_attribute_recover} // TODO character private global_attribute_recover ::= !( END | MAP | WEB | LAYER | CLASS | SYMBOL | LABEL | STYLE | LEADER | LEGEND | FEATURE | CLUSTER | COMPOSITE | GRID | JOIN | QUERYMAP | REFERENCE | SCALEBAR | PATTERN | VALIDATION | METADATA | POINTS | PROJECTION | ALIGN | ANCHORPOINT | ANGLE | ANTIALIAS | BACKGROUNDCOLOR | BROWSEFORMAT | BUFFER | CHARACTER | CLASSGROUP | CLASSITEM | COLOR | CONFIG | COMPOP | CONNECTION | CONNECTIONTYPE | DATA | DATAPATTERN | DEBUG | DEFRESOLUTION | DRIVER | DUMP | EMPTY | ENCODING | ERROR | EXPRESSION | EXTENSION | EXTENT | FILLED | FILTER | FILTERITEM | FONT | FONTSET | FOOTER | FORCE | FORMATOPTION | FROM | GAP | GEOMTRANSFORM | GRIDSTEP | GROUP | HEADER | IMAGE | IMAGECOLOR | IMAGEMODE | IMAGEPATH | IMAGETYPE | IMAGEURL | INITIALGAP | INTERLACE | ITEMS | KEYIMAGE | KEYSIZE | KEYSPACING | LABELCACHE | LABELFORMAT | LABELITEM | LABELMAXSCALEDENOM | LABELMINSCALEDENOM | LABELREQUIRES | LEGENDFORMAT | LINECAP | LINEJOIN | LINEJOINMAXSIZE | MARKER | MARKERSIZE | MASK | MAXARCS | MAXBOXSIZE | MAXDISTANCE | MAXFEATURES | MAXGEOWIDTH | MAXINTERVAL | MAXLENGTH | MAXOVERLAPANGLE | MAXSCALEDENOM | MAXSIZE | MAXSUBDIVIDE | MAXTEMPLATE | MAXWIDTH | MIMETYPE | MINARCS | MINBOXSIZE | MINDISTANCE | MINFEATURESIZE | MINGEOWIDTH | MININTERVAL | MINSCALEDENOM | MINSIZE | MINSUBDIVIDE | MINTEMPLATE | MINWIDTH | NAME | OFFSET | OFFSITE | OPACITY | OUTLINECOLOR | OUTLINEWIDTH | PARTIALS | PLUGIN | POLAROFFSET | POSITION | POSTLABELCACHE | PRIORITY | PROCESSING | QUERYFORMAT | REGION | REPEATDISTANCE | REQUIRES | RESOLUTION | SCALEDENOM | SHADOWCOLOR | SHADOWSIZE | SHAPEPATH | SIZE | SIZEUNITS | STATUS | STYLEITEM | SYMBOLSCALEDENOM | SYMBOLSET | TABLE | TEMPLATE | TEMPLATEPATTERN | TEMPPATH | TEXT | TILEINDEX | TILEITEM | TILESRS | TITLE | TO | TOLERANCE | TOLERANCEUNITS | TRANSFORM | TRANSPARENT | TYPE | UNITS | UTFDATA | UTFITEM | WIDTH | WKT | WRAP | INCLUDE ) // // ENUMERATIONS // private AlignEnum ::= left|center|right private AngleClassEnum ::= integer|double|attributeToken|auto private AngleLabelEnum ::= AngleClassEnum|auto2|follow private BooleanEnum ::= true|false private ColorClassEnum ::= ColorEnum|attributeToken private ColorEnum ::= string | ( integer integer integer ) private ConnectiontypeEnum ::= contour|kerneldensity|local|ogr|oraclespatial|plugin|postgis|sde|union|uvraster|wfs|wms // TODO check for completeness private ConnectiontypeJoinEnum ::= csv|mysql|postgresql private DebugEnum ::= OnOffEnum|0|1|2|3|4|5 private DriverEnum ::= string|"AGG/PNG"|"GD/GIF"|"AGG/PNG8"|"AGG/JPEG"|"CAIRO/SVG"|"CAIRO/PDF"|"GDAL/GTiff"|KML|KMZ|"CAIRO/PNG"|UTFGRID private ExpressionEnum ::= ( string | logicalExpressionToken | regexToken | listExpressionToken ) // TODO string functions private GeomtransformClassEnum ::= bbox|centroid|"end"|labelpnt|labelpoly|start|vertices|string // TODO string = expression! private ImagemodeEnum ::= PC256|RGB|RGBA|BYTE|INT16|FLOAT32|FEATURE private ImagetypeEnum ::= png|gif|png8|jpeg|svg|pdf|gtiff|kml|kmz|cairopng|string private LabelFormatEnum ::= dd|ddmm|ddmmss|string // TODO string=cformat-string private LinecapEnum ::= butt|round|square private LinejoinEnum ::= round|miter|bevel|none private MinfeaturesizeEnum ::= integer|auto private OnMissingDataEnum ::= fail|log|ignore private OnOffEnum ::= on|off private PositionEnum ::= ul|uc|ur|cl|cc|cr|ll|lc|lr // TODO why not cl\cc\cr? private SizeLabelEnum ::= integer|tiny|small|medium|large|giant|attributeToken private SizeUnitEnum ::= feet|inches|kilometers|meters|miles|nauticalmiles|pixels private StatusEnum ::= OnOffEnum|default private StyleQuerymapEnum ::= normal|hilite|selected private ToleranceUnitEnum ::= SizeUnitEnum|dd private TransformEnum ::= BooleanEnum|ul|uc|ur|cl|cc|cr|ll|lc|lr private TypeEnum ::= chart|circle|line|point|polygon|raster|query private TypeJoinEnum ::= ONE-TO-ONE|ONE-TO-MANY private TypeLabelEnum ::= bitmap|truetype private TypeSymbolEnum ::= ellipse|hatch|pixmap|svg|truetype|vector private UnitsEnum ::= ToleranceUnitEnum|percentages private YesNoEnum ::= yes|no