Luck 3.1.1 - Reference


Key

replace with something else
optional
optional, replace with something else


Contents
A. Luck Source Files
   * General Info
   * File Format
B. Data Types
   * General Info
   * Strings
   * Numbers
   * Decimals
C. Subroutines
   * Procedures
   * Functions
D. Standard Orders & Blocks
   * Comment ">>"
   * Convert Data Types "convert"
   * Delay "delay"
   * End Current Block "end"
   * Hear Input "hear"
   * Hear Program Argument "heararg"
   * If Block "if:"
   * Infinite Loop Block "infinite:"
   * Loop Block "loop:"
   * New Variable "new"
   * Random Number "random"
   * Return Value "return"
   * Say "say"
   * Say Without New Line "saysolo"
   * String I/O Read "sio_read"
   * String I/O Write "sio_write"
   * Quit Program "quit"
E. Native Code Support
   * General Info
   * Native Language "@lang"
   * Native Code at Beginning "@<"
   * Native Code "@@"
F. Other
   * Assignment Operator "="
   * Bracket Operator "[ ]"

[A] Luck Source Files
General Info

Luck source files hold the code that will compile into an application. Luck source files should have the extension "LUK". LUK files are ASCII text files with 7-bit encoding. Luck is case-sensitive. For example, 'foo' and 'FOO' are different names.

top


File Setup

   luck: program_name

   proc: main
     starting_code
   end

   other_procedures_and_functions

top


[B] Data Types
General Info

Variables must be created with the 'new' order before they can be used elsewhere. Also, variables can only be used in the procedure that they are created in. Note that variables are initialized to 0 when they are created.

top


Strings

Strings are groups of characters (letters, numbers, symbols, etc.). They can be used in two ways. One way is to enclose a group of characters with quotation marks, creating a unit called a literal string:

"My name is not John Doe!"

Another way is to use a variable. String variables are preceded by a "$" at all times:

$string

top


Numbers

Numbers cannot have decimal points. They can be used in two ways. One way is to create a number literal:

4

Another way is to use a variable. Number variables are preceded by a "#" at all times:

#number

top


Decimals

Decimals are numbers that have decimal points. They can be used in two ways. One way is to create a decimal literal:

4.0

Another way is to use a variable. Decimal variables are preceded by a "&" at all times:

&decimal

top


[C] Subroutines
Procedures

Procedures are code blocks that can be called by a program to perform a set of instructions. They do not return a value. Procedures allow two optional arguments.

   proc: procedure_name argument(s)
     code
   end

top


Functions

Functions are code blocks that can be called by a program to perform a set of instructions. They return a value to the program. Functions allow two optional arguments. If the function return is placed within an 'if:' or 'loop:' block, there must be another return outside of all blocks.

   func: data_type_and_function_name argument(s)
     code
     return value_to_return
   end

top


[D] Standard Orders & Blocks
Comment ">>"

The comment order renders everything after it invisible to the program.

>> commented_code

top


Convert Data Type "convert"

Takes the value in the source variable, and puts it in the destination variable (data type is converted). Note that the source and destination variables must be of different data types.

convert source_variable to destination_variable

top


Delay "delay"

The delay order creates a delay for the number of seconds specified.

delay number_literal_or_variable

top


End Current Block "end"

The end order specifies the end of a function, procedure, or if block.

end

top


Hear Input "hear"

The hear order reads input from the user into a variable.

hear string_variable

top


Hear Program Argument "heararg"

The heararg order reads the program's command line argument to the specified variable. Note that this may only be used in the 'main' procedure.

heararg string_variable

top


If Block "if:"

The if block determines if the expression is true, if it is, the code within the block is executed. The comparison operator can be "=", ">", "<", ">=", or "<=".

if: variable_or_number_literal comparison_operator variable_or_number_literal
  code
end

top


Infinite Loop Block "infinite:"

The infinite loop block is identical to a 'loop:' block, except that it reapeats indefinitely. The only way to end an 'infinite:' block is to use the 'quit' order.

infinite:
  code
  quit
end

top


Loop Block "loop:"

The loop block determines if the expression is true, if it is, the code within the block is executed. Then, the process begins again. The process will continue until the expression is no longer true. The comparison operator can be "=", ">", "<", ">=", or "<=".

loop: variable_or_number_literal comparison_operator variable_or_number_literal
  code
end

top


New Variable "new"

The new order creates a new variable. Note that the variable must be created with this order before it can be used elsewhere. Also, the variable can optionally be assigned a value.

new variable = expression_or_function_call

top


Random Number "random"

The random order puts a random number from 0 to 9 into the specified variable.

random number_variable

top


Return Value "return"

The return order returns the specified variable to the program from a function.

return literal_or_variable

top


Say "say"

Prints the specified string to the output with a new line. Note that the last use of 'say' or 'saysolo' in a program must be 'say'. Using 'say' without an argument causes a blank line to be printed.

say literal_or_variable

top


Say Without New Line "saysolo"

Prints the specified string to the output without a new line.Note that the last use of 'say' or 'saysolo' in a program must be 'say'.

saysolo literal_or_variable

top


String I/O Read "sio_read"

The sio_read order reads a specified file into a string.

sio_read (file)_string_literal_or_variable to string_variable

top


String I/O Write "sio_write"

The sio_write order writes a string into a specified file.

sio_write (file)_string_literal_or_variable from string_variable

top


Quit Program "quit"

The quit order ends the program prematurely.

quit

top


[E] Native Code Support
General Info

Luck supports the ability to use features from a more established language that Luck does not have. Currently, Luck only supports native code from Java 1.0.2.

top


Native Language "@lang"

The native language order specifies the language and version number of the following native code.

@lang native_language native_language_version

top


Native Code at Beginning "@<"

The native code at beginning order inserts native code at the beginning of the generated file.

@< code

top


Native Code "@@"

The native code order inserts native code in the generated file.

@@ code

top


[F] Other
Assignment Operator "="

The assignment operator assigns the value after the equals sign to the variable before the equals sign. Note that when a mathematical expression is after the equals sign, there must be spaces between every symbol or variable.

Mathematical Assignment:

variable = expression

Functional Assignment:

variable = [return_type_and_function_name argument(s)]

top


Bracket Operator "[ ]"

The bracket operator executes the procedure or function within it. Also, the arguments, if there are any, are placed after the subroutine name but before the end of the operator.

Procedures:

[procedure_name argument(s)]

Functions:

variable = [return_type_and_function_name argument(s)]

top