Aztec® Programming Language
Version 1.1 Alpha 2

Copyright © 2010-2017, Aztec Development Group, All Rights Reserved

Download Aztec

Search        Contact Us

You don't need a weatherman....

To know which way the wind blows.

- Bob Dylan

 

The While statement and the Until statement each provide a mechanism to conditionally execute a single block of statements in a loop based on the value of the boolean expression. The following table shows the syntax for the While and Until statements.

Aztec While and Until Statement Sytntax

 

♦ Conditionally executes the block of statements in a loop based on the value of the boolean expression.

♦ For the 'while' statement (standalone)

♦ The boolean expression is evaluated at the top of the loop, and the block of statements is executed if the expression is true.

♦ The expression is then re-evaluated and the block is again executed if true.

♦ This process is repeated until the expression is false or the code manually exits the block (break, return, etc.).

♦ For the 'until' statement (standalone)

♦ The boolean expression is evaluated at the top of the loop, and the block of statements is executed if the expression is false.

♦ The expression is then re-evaluated and the block is again executed if false.

♦ This process is repeated until the expression is true or the code manually exits the block (break, return, etc.).

♦ Both statements can also be used together with the 'repeat' statement, which is defined in a separate page.

♦ The 'while' and 'until' statements can only be used inside a "compiler" method or a "normal" method.

♦ An example script showing Aztec 'while' and 'until' statements inside a 'compiler' method and inside a normal (run-time) method.

#===================================================================================================
# Example Script: While and Until Statements
# Demonstrates the use of the 'while' statement and 'until' 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 = 'a'
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.
while ( Char <= 'z' )
{
# 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
}

# Manually advance the char through the alphabet.
Char = CompilerStrInc(Char)
}

# 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> Position
data<bool> KeepGoing
data<bool> ArrayDone
data<string> ArrayString

#-----------------------------------------------------------------------------------
# Loop through the vowel array and create a formatted string to write them out.
# We can start out with "keep going" flag of true since we know array is not empty.
#-----------------------------------------------------------------------------------
Position = 1
KeepGoing = true
while ( KeepGoing )
{
if ( Position == 1 )
ArrayString = VowelArray[Position]
else
ArrayString.Add(", " + VowelArray[Position])

# Manually increment the position and check for exceeding end of array.
Position.Inc()
if ( Position > VowelArray.Size() )
{
KeepGoing = false
}
}

StdIO.Write("Vowel array contents: " + ArrayString)

# Loop through the consonant array and create a formatted string to write them out.
Position = 1
ArrayDone = false
until ( ArrayDone )
{
if ( Position == 1 )
ArrayString = ConsonantArray[Position]
else
ArrayString.Add(", " + ConsonantArray[Position])

# Manually increment the position and check for exceeding end of array.
Position.Inc()
if ( Position > ConsonantArray.Size() )
{
ArrayDone = true
}
}

StdIO.Write("Consonant array contents: " + ArrayString)
}

Page UpPage DownCopyright © 2010-2017
Aztec Development Group
All Rights Reserved

Download Aztec