#===================================================================================================
# Example Script: For Statement
# Demonstrates the use of the 'for' statement in normal methods and compiler methods.
#===================================================================================================
# Source code is created dynamically at compile-time and compiled to create arrays with these names.
data<string> const VowelArrayName = 'VowelArray'
data<string> const ConsonantArrayName = 'ConsonantArray'
# Call the compiler method to create the vowel and consonant arrays.
CompilerCreateArrays()
#---------------------------------------------------------------------------------------------
# Compiler method to loop through character list and create vowel array and consonant array.
# It creates the lists dynamically in Aztec source code and then calls the LoadModule method
# to compile each of the two code strings as separate modules. That creates the Aztec arrays.
#---------------------------------------------------------------------------------------------
method compiler CompilerCreateArrays()
{
data<string> Char
data<string> CharCode
data<string> VowelArrayCode = "public data<string[]> " + VowelArrayName + " = { "
data<string> ConsonantArrayCode = "public data<string[]> " + ConsonantArrayName + " = { "
data<bool> VowelListEmpty = true
data<bool> ConsonantListEmpty = true
# Loop through all characters in the alphabet.
for ( Char = 'a' ; Char <= 'z' ; Char = CompilerStrInc(Char) )
{
# Determine if vowel or consonant and attach code for appropriate list.
if ( IsVowel(Char) )
{
if ( VowelListEmpty )
CharCode = "'" + Char + "'"
else
CharCode = ",'" + Char + "'"
# Add this item to the vowel array creation code and turn off empty flag.
CompilerStrAdd(@VowelArrayCode,CharCode)
VowelListEmpty = false
}
else
{
if ( ConsonantListEmpty )
CharCode = "'" + Char + "'"
else
CharCode = ",'" + Char + "'"
# Add this item to the consonant array creation code and turn off empty flag.
CompilerStrAdd(@ConsonantArrayCode,CharCode)
ConsonantListEmpty = false
}
}
# Attach the ending brace to each of the code strings.
CompilerStrAdd(@VowelArrayCode,'}')
CompilerStrAdd(@ConsonantArrayCode,'}')
# Now compile each of the source code strings to create the actual Aztec arrays.
CompilerLoadModule(VowelArrayCode,false)
CompilerLoadModule(ConsonantArrayCode,false)
}
# Compiler method to determine if a character is a vowel or consonant.
method<bool> compiler IsVowel(string Character)
{
data<bool> Result = false
data<string> UpperCase = CompilerStrUpr(Character)
if ( (UpperCase == 'A') | (UpperCase == 'E') | (UpperCase == 'I') |
(UpperCase == 'O') | (UpperCase == 'U') )
{
Result = true
}
return(Result)
}
#-----------------------------------------------------------------------------------
# Run-time entry point for the script. This method loops through each of the two
# array that were created with the above compile-time logic (VowelArray and
# ConsonantArray). It creates a formatted string for each to dump out the contents.
#-----------------------------------------------------------------------------------
method Main()
{
data<int> Count
data<string> ArrayString
# Loop through the vowel array and create a formatted string to write them out.
for ( Count = 1 ; Count <= VowelArray.Size() ; Count.Inc() )
{
if ( Count == 1 )
ArrayString = VowelArray[Count]
else
ArrayString.Add(", " + VowelArray[Count])
}
StdIO.Write("Vowel array contents: " + ArrayString)
# Loop through the consonant array and create a formatted string to write them out.
for ( Count = 1 ; Count <= ConsonantArray.Size() ; Count.Inc() )
{
if ( Count == 1 )
ArrayString = ConsonantArray[Count]
else
ArrayString.Add(", " + ConsonantArray[Count])
}
StdIO.Write("Consonant array contents: " + ArrayString)
}