module languages/fdl/syntax/Expressions imports languages/fdl/syntax/Layout languages/fdl/syntax/Names exports sorts FeatureName AtomicFeature FeatureExpression FeatureExpressionList context-free syntax "all" "(" {FeatureExpression ","}+ ")" -> FeatureExpression {cons("all")} "one-of" "(" {FeatureExpression ","}+ ")" -> FeatureExpression {cons("one-of")} "more-of" "(" {FeatureExpression ","}+ ")" -> FeatureExpression {cons("more-of")} FeatureName -> FeatureExpression {cons("featurename")} AtomicFeature -> FeatureExpression {cons("atomicfeature")} FeatureExpression "?" -> FeatureExpression {cons("optional")} "default" "=" AtomicFeature -> FeatureExpression {cons("default")} "..." -> AtomicFeature {cons("dots")} aliases {FeatureExpression ","}+ -> FeatureExpressionList