Change test templating syntax to be valid C

For the benefit of auto-formatting tools, move from the '$placeholder'
templating syntax to a new syntax of the form:

__MBEDTLS_TEST_TEMPLATE__PLACEHOLDER

This change allows the test code template to be almost entirely valid C.

Signed-off-by: David Horstmann <david.horstmann@arm.com>
diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py
index f5750aa..6d65986 100755
--- a/tests/scripts/generate_test_code.py
+++ b/tests/scripts/generate_test_code.py
@@ -126,33 +126,33 @@
 This script replaces following fields in the template and generates
 the test source file:
 
-$test_common_helpers        <-- All common code from helpers.function
-                                is substituted here.
-$functions_code             <-- Test functions are substituted here
-                                from the input test_suit_xyz.function
-                                file. C preprocessor checks are generated
-                                for the build dependencies specified
-                                in the input file. This script also
-                                generates wrappers for the test
-                                functions with code to expand the
-                                string parameters read from the data
-                                file.
-$expression_code            <-- This script enumerates the
-                                expressions in the .data file and
-                                generates code to handle enumerated
-                                expression Ids and return the values.
-$dep_check_code             <-- This script enumerates all
-                                build dependencies and generate
-                                code to handle enumerated build
-                                dependency Id and return status: if
-                                the dependency is defined or not.
-$dispatch_code              <-- This script enumerates the functions
-                                specified in the input test data file
-                                and generates the initializer for the
-                                function table in the template
-                                file.
-$platform_code              <-- Platform specific setup and test
-                                dispatch code.
+__MBEDTLS_TEST_TEMPLATE__TEST_COMMON_HELPERS    <-- All common code from helpers.function
+                                                    is substituted here.
+__MBEDTLS_TEST_TEMPLATE__FUNCTIONS_CODE         <-- Test functions are substituted here
+                                                    from the input test_suit_xyz.function
+                                                    file. C preprocessor checks are generated
+                                                    for the build dependencies specified
+                                                    in the input file. This script also
+                                                    generates wrappers for the test
+                                                    functions with code to expand the
+                                                    string parameters read from the data
+                                                    file.
+__MBEDTLS_TEST_TEMPLATE__EXPRESSION_CODE        <-- This script enumerates the
+                                                    expressions in the .data file and
+                                                    generates code to handle enumerated
+                                                    expression Ids and return the values.
+__MBEDTLS_TEST_TEMPLATE__DEP_CHECK_CODE         <-- This script enumerates all
+                                                    build dependencies and generate
+                                                    code to handle enumerated build
+                                                    dependency Id and return status: if
+                                                    the dependency is defined or not.
+__MBEDTLS_TEST_TEMPLATE__DISPATCH_CODE          <-- This script enumerates the functions
+                                                    specified in the input test data file
+                                                    and generates the initializer for the
+                                                    function table in the template
+                                                    file.
+__MBEDTLS_TEST_TEMPLATE__PLATFORM_CODE          <-- Platform specific setup and test
+                                                    dispatch code.
 
 """
 
@@ -974,11 +974,30 @@
     :param snippets: Generated and code snippets
     :return:
     """
+
+    # Create a placeholder pattern with the correct named capture groups
+    # to override the default provided with Template.
+    # Match nothing (no way of escaping placeholders).
+    escaped = "(?P<escaped>(?!))"
+    # Match the "__MBEDTLS_TEST_TEMPLATE__PLACEHOLDER_NAME" pattern.
+    named = "__MBEDTLS_TEST_TEMPLATE__(?P<named>[A-Z][_A-Z0-9]*)"
+    # Match nothing (no braced placeholder syntax).
+    braced = "(?P<braced>(?!))"
+    # If not already matched, a "__MBEDTLS_TEST_TEMPLATE__" prefix is invalid.
+    invalid = "(?P<invalid>__MBEDTLS_TEST_TEMPLATE__)"
+    placeholder_pattern = re.compile(escaped \
+            + "|" + named \
+            + "|" + braced \
+            + "|" + invalid)
+
     with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f:
         for line_no, line in enumerate(template_f.readlines(), 1):
             # Update line number. +1 as #line directive sets next line number
             snippets['line_no'] = line_no + 1
-            code = string.Template(line).substitute(**snippets)
+            template = string.Template(line)
+            template.pattern = placeholder_pattern
+            snippets = {k.upper():v for (k, v) in snippets.items()}
+            code = template.substitute(**snippets)
             c_f.write(code)