diff --git a/bin/check-syntax.sh b/bin/check-syntax.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0af1a43cecd2ebd419743dc483427001126f500d
--- /dev/null
+++ b/bin/check-syntax.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+PHP='/usr/bin/env php'
+RETURN=0
+
+# check PHP files
+for FILE in `find attributemap bin lib modules www -name "*.php"`; do
+    $PHP -l $FILE > /dev/null 2>&1
+    if [ $? -ne 0 ]; then
+        echo "Syntax check failed for ${FILE}"
+        RETURN=`expr ${RETURN} + 1`
+    fi
+done
+
+# check JSON files
+for FILE in `find dictionaries modules -name "*.json"`; do
+    $PHP -r "exit((json_decode(file_get_contents('$FILE')) === null) ? 1 : 0);"
+    if [ $? -ne 0 ]; then
+        echo "Syntax check failed for ${FILE}"
+        RETURN=`expr ${RETURN} + 1`
+    fi
+done
+
+exit $RETURN