diff --git a/Language/GLSL/Parser.hs b/Language/GLSL/Parser.hs
--- a/Language/GLSL/Parser.hs
+++ b/Language/GLSL/Parser.hs
@@ -739,11 +739,10 @@
 structDeclarator = do
   i <- identifier
   choice
-    [ lbracket >> rbracket >> return (StructDeclarator i (Just Nothing))
-    , do lbracket
-         e <- constantExpression
+    [ do lbracket
+         e <- optionMaybe constantExpression
          rbracket
-         return $ StructDeclarator i (Just $ Just e)
+         return $ StructDeclarator i (Just e)
     , return $ StructDeclarator i Nothing
     ]
 
diff --git a/language-glsl.cabal b/language-glsl.cabal
--- a/language-glsl.cabal
+++ b/language-glsl.cabal
@@ -1,5 +1,5 @@
 name:                language-glsl
-version:             0.0.1
+version:             0.0.2
 Cabal-Version:       >= 1.8
 synopsis:            GLSL abstract syntax tree, parser, and pretty-printer
 description:
