]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java
Added module header feature to SCL language.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / annotations / AnnotationUtils.java
index fb7334cd2b2cf52cdbd1faf85dc266b762af9bc8..8cc088b955b8ded475ba86d150551f5a5f2ec44c 100644 (file)
@@ -5,8 +5,30 @@ import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
 import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral;
 import org.simantics.scl.compiler.elaboration.expressions.EVar;
 import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.errors.ErrorLog;
+import org.simantics.scl.compiler.internal.parsing.declarations.DAnnotationAst;
 
 public class AnnotationUtils {
+    /**
+     * Processes an annotation of form
+     * <pre>&#64;Annotation "text"</pre>
+     * or
+     * <pre>&#64;Annotation text</pre>
+     */
+    public static String processStringAnnotation(ErrorLog errorLog, DAnnotationAst annotation) {
+        if(annotation.parameters.length != 1)
+            errorLog.log(annotation.location, "Expected one string parameter for " + annotation.id.text);
+        String result = extractString(annotation.parameters[0]);
+        if(result == null)
+            errorLog.log(annotation.location, "Expected a string parameter for " + annotation.id.text);
+        return result;
+    }
+    
+    public static void processTagAnnotation(ErrorLog errorLog, DAnnotationAst annotation) {
+        if(annotation.parameters.length != 0)
+            errorLog.log(annotation.location, "Expected no parameters for " + annotation.id.text);
+    }
+    
     public static String extractString(Expression expression) {
         if(expression instanceof EVar)
             return ((EVar)expression).name;