diff --git a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt
index 478e80d..bf99d0d 100644
--- a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt
+++ b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt
@@ -65,4 +65,5 @@
 TOKEN_SKIN_STATES_KEYWORD=54
 TOKEN_ASDOC_COMMENT = 55
 TOKEN_HOST_COMPONENT_KEYWORD = 56
-TOKEN_RESOURCEBUNDLE_KEYWORD = 59
\ No newline at end of file
+TOKEN_RESOURCEBUNDLE_KEYWORD = 59
+TOKEN_ATTR_OPERATOR_NS_QUALIFIER = 62
\ No newline at end of file
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java
index fa8b149..6c2d1c3 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java
@@ -616,6 +616,7 @@
             case TOKEN_KEYWORD_NULL:
             case TOKEN_LITERAL_NUMBER:
             case TOKEN_LITERAL_STRING:
+            case TOKEN_OPERATOR_NS_QUALIFIER:
                 return true;
         }
         return false;
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
index de180fb..7e02f6a 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
@@ -1256,6 +1256,33 @@
             metadataTokens = tokenizer.parseTokens();
         }
 
+        // manage namespace variables 
+        int i = 2;// skip the metadata type 
+        while (i<metadataTokens.size()-1) {
+            MetadataToken t = metadataTokens.get(i);
+            if (t.getType()==MetadataTokenTypes.TOKEN_ATTR_OPERATOR_NS_QUALIFIER) {
+                // get the previous and next tokens to check there types and transform them as the left and right parts of the operator
+                MetadataToken prev = metadataTokens.get(i - 1);
+                MetadataToken next = metadataTokens.get(i + 1);
+                if (prev.getType()==MetadataTokenTypes.TOKEN_ATTR_UNKNOWN && next.getType()==MetadataTokenTypes.TOKEN_ATTR_UNKNOWN) {
+                    // trasform to literal node if possible
+                    NamespaceIdentifierNode nsNode = new NamespaceIdentifierNode(prev.getText());
+                    nsNode.setIsConfigNamespace(true);
+                    ASToken op = new ASToken(TOKEN_OPERATOR_NS_QUALIFIER, t.getStart(), t.getEnd(), t.getLine(), t.getColumn(), t.getText());
+                    IdentifierNode idNode = new IdentifierNode(next.getText());
+                    IASNode n = transformToNSAccessExpression(nsNode, (ASToken) op, idNode);
+                    if (n instanceof LiteralNode) {
+                        // replace the left, operator and right tokens by the result string token
+                        t = new MetadataToken(MetadataTokenTypes.TOKEN_STRING, prev.getSourcePath(), prev.getStart(), next.getEnd(), prev.getLine(), prev.getColumn(), ((LiteralNode)n).getValue());
+                        metadataTokens.remove(i+1);
+                        metadataTokens.remove(i--);
+                        metadataTokens.set(i, t);
+                    }
+                }
+            }
+            ++i;
+        }
+
         // Initialize metadata parser.
         final GenericTokenStream metadataTokenStream = new GenericTokenStream(metadataTokens);
         final MetadataParser metadataParser = new MetadataParser(metadataTokenStream);
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java
index 56d82b9..663279f 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java
@@ -292,6 +292,15 @@
             {
                 return null;
             }
+            case ASTokenTypes.TOKEN_OPERATOR_NS_QUALIFIER:
+            {
+                if (inAttrList)
+                {
+                    return new MetadataToken(MetadataTokenTypes.TOKEN_ATTR_OPERATOR_NS_QUALIFIER,
+                                         sourcePath, startOffset, endOffset,
+                                         line, column, tokenString);
+                }
+            }
         }
 
         return null;
