comparison website/src/manual.html.luan @ 395:a7cb58532846

work on manual
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 24 Apr 2015 17:42:22 -0600
parents 2f5cc9c2cbf0
children ba8b0aae6453
comparison
equal deleted inserted replaced
394:c3d21bdc83b5 395:a7cb58532846
52 <li><a href="#vars">Variables</a></li> 52 <li><a href="#vars">Variables</a></li>
53 <li> 53 <li>
54 <a href="#stmts">Statements</a> 54 <a href="#stmts">Statements</a>
55 <ul> 55 <ul>
56 <li><a href="#blocks">Blocks</a></li> 56 <li><a href="#blocks">Blocks</a></li>
57 <li><a href="#chunks">Chunks</a></li>
58 <li><a href="#assignment">Assignment</a></li>
59 <li><a href="#control">Control Structures</a></li>
60 <li><a href="#for">For Statement</a></li>
61 <li><a href="#fn_stmt">Function Calls as Statements</a></li>
62 <li><a href="#local_stmt">Local Declarations</a></li>
63 </ul>
64 </li>
65 <li>
66 <a href="#expressions">Expressions</a>
67 <ul>
68 <li><a href="#arithmetic">Arithmetic Operators</a></li>
57 </ul> 69 </ul>
58 </li> 70 </li>
59 </ul> 71 </ul>
60 </div> 72 </div>
61 73
763 assignments, control structures, function calls, 775 assignments, control structures, function calls,
764 and variable declarations. 776 and variable declarations.
765 777
766 778
767 779
768 <h3 margin-top="1em"><a name="blocks">Blocks</a></h3> 780 <h4 margin-top="1em"><a name="blocks">Blocks</a></h4>
769 781
770 <p> 782 <p>
771 A block is a list of statements, 783 A block is a list of statements,
772 which are executed sequentially: 784 which are executed sequentially:
773 785
801 813
802 814
803 815
804 816
805 817
806 <h3>3.3.2 &ndash; <a name="3.3.2">Chunks</a></h3> 818 <h4 margin-top="1em"><a name="chunks">Chunks</a></h4>
807 819
808 <p> 820 <p>
809 The unit of compilation of Lua is called a <em>chunk</em>. 821 The unit of compilation of Luan is called a <i>chunk</i>.
810 Syntactically, 822 Syntactically,
811 a chunk is simply a block: 823 a chunk is simply a block:
812 824
813 <pre> 825 <p><tt><pre>
814 chunk ::= block 826 chunk ::= block
815 </pre> 827 </pre></tt></p>
816 828
817 <p> 829 <p>
818 Lua handles a chunk as the body of an anonymous function 830 Luan handles a chunk as the body of an anonymous function
819 with a variable number of arguments 831 with a variable number of arguments
820 (see <a href="#3.4.11">&sect;3.4.11</a>). 832 (see <a href="#3.4.11">&sect;3.4.11</a>).
821 As such, chunks can define local variables, 833 As such, chunks can define local variables,
822 receive arguments, and return values. 834 receive arguments, and return values.
823 Moreover, such anonymous function is compiled as in the
824 scope of an external local variable called <code>_ENV</code> (see <a href="#2.2">&sect;2.2</a>).
825 The resulting function always has <code>_ENV</code> as its only upvalue,
826 even if it does not use that variable.
827 835
828 836
829 <p> 837 <p>
830 A chunk can be stored in a file or in a string inside the host program. 838 A chunk can be stored in a file or in a string inside the host program.
831 To execute a chunk, 839 To execute a chunk,
832 Lua first <em>loads</em> it, 840 Luan first <i>loads</i> it,
833 precompiling the chunk's code into instructions for a virtual machine, 841 compiling the chunk's code,
834 and then Lua executes the compiled code 842 and then Luan executes the compiled code.
835 with an interpreter for the virtual machine. 843
836 844
837 845
838 <p> 846
839 Chunks can also be precompiled into binary form; 847
840 see program <code>luac</code> and function <a href="#pdf-string.dump"><code>string.dump</code></a> for details. 848 <h4 margin-top="1em"><a name="assignment">Assignment</a></h4>
841 Programs in source and compiled forms are interchangeable; 849
842 Lua automatically detects the file type and acts accordingly (see <a href="#pdf-load"><code>load</code></a>). 850 <p>
843 851 Luan allows multiple assignments.
844
845
846
847
848 <h3>3.3.3 &ndash; <a name="3.3.3">Assignment</a></h3>
849
850 <p>
851 Lua allows multiple assignments.
852 Therefore, the syntax for assignment 852 Therefore, the syntax for assignment
853 defines a list of variables on the left side 853 defines a list of variables on the left side
854 and a list of expressions on the right side. 854 and a list of expressions on the right side.
855 The elements in both lists are separated by commas: 855 The elements in both lists are separated by commas:
856 856
857 <pre> 857 <p><tt><pre>
858 stat ::= varlist &lsquo;<b>=</b>&rsquo; explist 858 stat ::= varlist &lsquo;<b>=</b>&rsquo; explist
859 varlist ::= var {&lsquo;<b>,</b>&rsquo; var} 859 varlist ::= var {&lsquo;<b>,</b>&rsquo; var}
860 explist ::= exp {&lsquo;<b>,</b>&rsquo; exp} 860 explist ::= exp {&lsquo;<b>,</b>&rsquo; exp}
861 </pre><p> 861 </pre></tt></p>
862
863 <p>
862 Expressions are discussed in <a href="#3.4">&sect;3.4</a>. 864 Expressions are discussed in <a href="#3.4">&sect;3.4</a>.
863 865
864 866
865 <p> 867 <p>
866 Before the assignment, 868 Before the assignment,
867 the list of values is <em>adjusted</em> to the length of 869 the list of values is <i>adjusted</i> to the length of
868 the list of variables. 870 the list of variables.
869 If there are more values than needed, 871 If there are more values than needed,
870 the excess values are thrown away. 872 the excess values are thrown away.
871 If there are fewer values than needed, 873 If there are fewer values than needed,
872 the list is extended with as many <b>nil</b>'s as needed. 874 the list is extended with as many <b>nil</b>'s as needed.
879 <p> 881 <p>
880 The assignment statement first evaluates all its expressions 882 The assignment statement first evaluates all its expressions
881 and only then the assignments are performed. 883 and only then the assignments are performed.
882 Thus the code 884 Thus the code
883 885
884 <pre> 886 <p><tt><pre>
885 i = 3 887 i = 3
886 i, a[i] = i+1, 20 888 i, a[i] = i+1, 20
887 </pre><p> 889 </pre></tt></p>
888 sets <code>a[3]</code> to 20, without affecting <code>a[4]</code> 890
889 because the <code>i</code> in <code>a[i]</code> is evaluated (to 3) 891 <p>
892 sets <tt>a[3]</tt> to 20, without affecting <tt>a[4]</tt>
893 because the <tt>i</tt> in <tt>a[i]</tt> is evaluated (to 3)
890 before it is assigned&nbsp;4. 894 before it is assigned&nbsp;4.
891 Similarly, the line 895 Similarly, the line
892 896
893 <pre> 897 <p><tt><pre>
894 x, y = y, x 898 x, y = y, x
895 </pre><p> 899 </pre></tt></p>
896 exchanges the values of <code>x</code> and <code>y</code>, 900
901 <p>
902 exchanges the values of <tt>x</tt> and <tt>y</tt>,
897 and 903 and
898 904
899 <pre> 905 <p><tt><pre>
900 x, y, z = y, z, x 906 x, y, z = y, z, x
901 </pre><p> 907 </pre></tt></p>
902 cyclically permutes the values of <code>x</code>, <code>y</code>, and <code>z</code>. 908
909 <p>
910 cyclically permutes the values of <tt>x</tt>, <tt>y</tt>, and <tt>z</tt>.
903 911
904 912
905 <p> 913 <p>
906 The meaning of assignments to global variables 914 The meaning of assignments to global variables
907 and table fields can be changed via metatables. 915 and table fields can be changed via metatables.
908 An assignment to an indexed variable <code>t[i] = val</code> is equivalent to 916 An assignment to an indexed variable <tt>t[i] = val</tt> is equivalent to
909 <code>settable_event(t,i,val)</code>. 917 <tt>settable_event(t,i,val)</tt>.
910 (See <a href="#2.4">&sect;2.4</a> for a complete description of the 918 (See <a href="#2.4">&sect;2.4</a> for a complete description of the
911 <code>settable_event</code> function. 919 <tt>settable_event</tt> function.
912 This function is not defined or callable in Lua. 920 This function is not defined or callable in Luan.
913 We use it here only for explanatory purposes.) 921 We use it here only for explanatory purposes.)
914 922
915 923
916 <p> 924 <p>
917 An assignment to a global name <code>x = val</code> 925 An assignment to a global name <tt>x = val</tt>
918 is equivalent to the assignment 926 is equivalent to the assignment
919 <code>_ENV.x = val</code> (see <a href="#2.2">&sect;2.2</a>). 927 <tt>_ENV.x = val</tt> (see <a href="#2.2">&sect;2.2</a>).
920 928
921 929
922 930
923 931
924 932 <h4 margin-top="1em"><a name="control">Control Structures</a></h4>
925 <h3>3.3.4 &ndash; <a name="3.3.4">Control Structures</a></h3><p> 933
934 <p>
926 The control structures 935 The control structures
927 <b>if</b>, <b>while</b>, and <b>repeat</b> have the usual meaning and 936 <b>if</b>, <b>while</b>, and <b>repeat</b> have the usual meaning and
928 familiar syntax: 937 familiar syntax:
929 938
930 939 <p><tt><pre>
931
932
933 <pre>
934 stat ::= <b>while</b> exp <b>do</b> block <b>end</b> 940 stat ::= <b>while</b> exp <b>do</b> block <b>end</b>
935 stat ::= <b>repeat</b> block <b>until</b> exp 941 stat ::= <b>repeat</b> block <b>until</b> exp
936 stat ::= <b>if</b> exp <b>then</b> block {<b>elseif</b> exp <b>then</b> block} [<b>else</b> block] <b>end</b> 942 stat ::= <b>if</b> exp <b>then</b> block {<b>elseif</b> exp <b>then</b> block} [<b>else</b> block] <b>end</b>
937 </pre><p> 943 </pre></tt></p>
938 Lua also has a <b>for</b> statement, in two flavors (see <a href="#3.3.5">&sect;3.3.5</a>). 944
945 <p>
946 Luan also has a <b>for</b> statement (see <a href="#3.3.5">&sect;3.3.5</a>).
939 947
940 948
941 <p> 949 <p>
942 The condition expression of a 950 The condition expression of a
943 control structure can return any value. 951 control structure must be a boolean.
944 Both <b>false</b> and <b>nil</b> are considered false. 952 Any other value type will produce an error.
945 All values different from <b>nil</b> and <b>false</b> are considered true 953 This helps catch errors and makes code more readable.
946 (in particular, the number 0 and the empty string are also true).
947 954
948 955
949 <p> 956 <p>
950 In the <b>repeat</b>&ndash;<b>until</b> loop, 957 In the <b>repeat</b>&ndash;<b>until</b> loop,
951 the inner block does not end at the <b>until</b> keyword, 958 the inner block does not end at the <b>until</b> keyword,
953 So, the condition can refer to local variables 960 So, the condition can refer to local variables
954 declared inside the loop block. 961 declared inside the loop block.
955 962
956 963
957 <p> 964 <p>
958 The <b>goto</b> statement transfers the program control to a label.
959 For syntactical reasons,
960 labels in Lua are considered statements too:
961
962
963
964 <pre>
965 stat ::= <b>goto</b> Name
966 stat ::= label
967 label ::= &lsquo;<b>::</b>&rsquo; Name &lsquo;<b>::</b>&rsquo;
968 </pre>
969
970 <p>
971 A label is visible in the entire block where it is defined,
972 except
973 inside nested blocks where a label with the same name is defined and
974 inside nested functions.
975 A goto may jump to any visible label as long as it does not
976 enter into the scope of a local variable.
977
978
979 <p>
980 Labels and empty statements are called <em>void statements</em>,
981 as they perform no actions.
982
983
984 <p>
985 The <b>break</b> statement terminates the execution of a 965 The <b>break</b> statement terminates the execution of a
986 <b>while</b>, <b>repeat</b>, or <b>for</b> loop, 966 <b>while</b>, <b>repeat</b>, or <b>for</b> loop,
987 skipping to the next statement after the loop: 967 skipping to the next statement after the loop:
988 968
989 969
990 <pre> 970 <p><tt><pre>
991 stat ::= <b>break</b> 971 stat ::= <b>break</b>
992 </pre><p> 972 </pre></tt></p>
973
974 <p>
993 A <b>break</b> ends the innermost enclosing loop. 975 A <b>break</b> ends the innermost enclosing loop.
994 976
995 977
996 <p> 978 <p>
997 The <b>return</b> statement is used to return values 979 The <b>return</b> statement is used to return values
999 (which is an anonymous function). 981 (which is an anonymous function).
1000 982
1001 Functions can return more than one value, 983 Functions can return more than one value,
1002 so the syntax for the <b>return</b> statement is 984 so the syntax for the <b>return</b> statement is
1003 985
1004 <pre> 986 <p><tt><pre>
1005 stat ::= <b>return</b> [explist] [&lsquo;<b>;</b>&rsquo;] 987 stat ::= <b>return</b> [explist] [&lsquo;<b>;</b>&rsquo;]
1006 </pre> 988 </pre></tt></p>
1007 989
1008 <p> 990
1009 The <b>return</b> statement can only be written 991
1010 as the last statement of a block. 992
1011 If it is really necessary to <b>return</b> in the middle of a block, 993 <h4 margin-top="1em"><a name="for">For Statement</a></h4>
1012 then an explicit inner block can be used, 994
1013 as in the idiom <code>do return end</code>, 995 <p>
1014 because now <b>return</b> is the last statement in its (inner) block. 996 The <b>for</b> statement works over functions,
1015 997 called <i>iterators</i>.
1016 998 On each iteration, the iterator function is called to produce a new value,
1017 999 stopping when this new value is <b>nil</b>.
1018 1000 The <b>for</b> loop has the following syntax:
1019 1001
1020 <h3>3.3.5 &ndash; <a name="3.3.5">For Statement</a></h3> 1002 <p><tt><pre>
1021 1003 stat ::= <b>for</b> namelist <b>in</b> exp <b>do</b> block <b>end</b>
1022 <p> 1004 namelist ::= Name {&lsquo;<b>,</b>&rsquo; Name}
1023 1005 </pre></tt></p>
1024 The <b>for</b> statement has two forms: 1006
1025 one numeric and one generic. 1007 <p>
1026 1008 A <b>for</b> statement like
1027 1009
1028 <p> 1010 <p><tt><pre>
1029 The numeric <b>for</b> loop repeats a block of code while a 1011 for <i>var_1</i>, &middot;&middot;&middot;, <i>var_n</i> in <i>exp</i> do <i>block</i> end
1030 control variable runs through an arithmetic progression. 1012 </pre></tt></p>
1031 It has the following syntax: 1013
1032 1014 <p>
1033 <pre>
1034 stat ::= <b>for</b> Name &lsquo;<b>=</b>&rsquo; exp &lsquo;<b>,</b>&rsquo; exp [&lsquo;<b>,</b>&rsquo; exp] <b>do</b> block <b>end</b>
1035 </pre><p>
1036 The <em>block</em> is repeated for <em>name</em> starting at the value of
1037 the first <em>exp</em>, until it passes the second <em>exp</em> by steps of the
1038 third <em>exp</em>.
1039 More precisely, a <b>for</b> statement like
1040
1041 <pre>
1042 for v = <em>e1</em>, <em>e2</em>, <em>e3</em> do <em>block</em> end
1043 </pre><p>
1044 is equivalent to the code: 1015 is equivalent to the code:
1045 1016
1046 <pre> 1017 <p><tt><pre>
1047 do 1018 do
1048 local <em>var</em>, <em>limit</em>, <em>step</em> = tonumber(<em>e1</em>), tonumber(<em>e2</em>), tonumber(<em>e3</em>) 1019 local <i>f</i> = <i>exp</i>
1049 if not (<em>var</em> and <em>limit</em> and <em>step</em>) then error() end
1050 <em>var</em> = <em>var</em> - <em>step</em>
1051 while true do 1020 while true do
1052 <em>var</em> = <em>var</em> + <em>step</em> 1021 local <i>var_1</i>, &middot;&middot;&middot;, <i>var_n</i> = <i>f</i>()
1053 if (<em>step</em> &gt;= 0 and <em>var</em> &gt; <em>limit</em>) or (<em>step</em> &lt; 0 and <em>var</em> &lt; <em>limit</em>) then 1022 if <i>var_1</i> == nil then break end
1054 break 1023 <i>block</i>
1055 end
1056 local v = <em>var</em>
1057 <em>block</em>
1058 end 1024 end
1059 end 1025 end
1060 </pre> 1026 </pre></tt></p>
1061 1027
1062 <p> 1028 <p>
1063 Note the following: 1029 Note the following:
1064 1030
1065 <ul> 1031 <ul>
1066 1032
1067 <li> 1033 <li>
1068 All three control expressions are evaluated only once, 1034 <tt><i>exp</i></tt> is evaluated only once.
1069 before the loop starts. 1035 Its result is an <i>iterator</i> function.
1070 They must all result in numbers.
1071 </li> 1036 </li>
1072 1037
1073 <li> 1038 <li>
1074 <code><em>var</em></code>, <code><em>limit</em></code>, and <code><em>step</em></code> are invisible variables. 1039 <tt><i>f</i></tt> is an invisible variable.
1075 The names shown here are for explanatory purposes only. 1040 The name is here for explanatory purposes only.
1076 </li>
1077
1078 <li>
1079 If the third expression (the step) is absent,
1080 then a step of&nbsp;1 is used.
1081 </li>
1082
1083 <li>
1084 You can use <b>break</b> and <b>goto</b> to exit a <b>for</b> loop.
1085 </li>
1086
1087 <li>
1088 The loop variable <code>v</code> is local to the loop body.
1089 If you need its value after the loop,
1090 assign it to another variable before exiting the loop.
1091 </li>
1092
1093 </ul>
1094
1095 <p>
1096 The generic <b>for</b> statement works over functions,
1097 called <em>iterators</em>.
1098 On each iteration, the iterator function is called to produce a new value,
1099 stopping when this new value is <b>nil</b>.
1100 The generic <b>for</b> loop has the following syntax:
1101
1102 <pre>
1103 stat ::= <b>for</b> namelist <b>in</b> explist <b>do</b> block <b>end</b>
1104 namelist ::= Name {&lsquo;<b>,</b>&rsquo; Name}
1105 </pre><p>
1106 A <b>for</b> statement like
1107
1108 <pre>
1109 for <em>var_1</em>, &middot;&middot;&middot;, <em>var_n</em> in <em>explist</em> do <em>block</em> end
1110 </pre><p>
1111 is equivalent to the code:
1112
1113 <pre>
1114 do
1115 local <em>f</em>, <em>s</em>, <em>var</em> = <em>explist</em>
1116 while true do
1117 local <em>var_1</em>, &middot;&middot;&middot;, <em>var_n</em> = <em>f</em>(<em>s</em>, <em>var</em>)
1118 if <em>var_1</em> == nil then break end
1119 <em>var</em> = <em>var_1</em>
1120 <em>block</em>
1121 end
1122 end
1123 </pre><p>
1124 Note the following:
1125
1126 <ul>
1127
1128 <li>
1129 <code><em>explist</em></code> is evaluated only once.
1130 Its results are an <em>iterator</em> function,
1131 a <em>state</em>,
1132 and an initial value for the first <em>iterator variable</em>.
1133 </li>
1134
1135 <li>
1136 <code><em>f</em></code>, <code><em>s</em></code>, and <code><em>var</em></code> are invisible variables.
1137 The names are here for explanatory purposes only.
1138 </li> 1041 </li>
1139 1042
1140 <li> 1043 <li>
1141 You can use <b>break</b> to exit a <b>for</b> loop. 1044 You can use <b>break</b> to exit a <b>for</b> loop.
1142 </li> 1045 </li>
1143 1046
1144 <li> 1047 <li>
1145 The loop variables <code><em>var_i</em></code> are local to the loop; 1048 The loop variables <tt><i>var_i</i></tt> are local to the loop;
1146 you cannot use their values after the <b>for</b> ends. 1049 you cannot use their values after the <b>for</b> ends.
1147 If you need these values, 1050 If you need these values,
1148 then assign them to other variables before breaking or exiting the loop. 1051 then assign them to other variables before breaking or exiting the loop.
1149 </li> 1052 </li>
1150 1053
1151 </ul> 1054 </ul>
1152 1055
1153 1056
1154 1057
1155 1058
1156 <h3>3.3.6 &ndash; <a name="3.3.6">Function Calls as Statements</a></h3><p> 1059 <h4 margin-top="1em"><a name="fn_stmt">Function Calls as Statements</a></h4>
1060
1061 <p>
1157 To allow possible side-effects, 1062 To allow possible side-effects,
1158 function calls can be executed as statements: 1063 function calls can be executed as statements:
1159 1064
1160 <pre> 1065 <p><tt><pre>
1161 stat ::= functioncall 1066 stat ::= functioncall
1162 </pre><p> 1067 </pre></tt></p>
1068
1069 <p>
1163 In this case, all returned values are thrown away. 1070 In this case, all returned values are thrown away.
1164 Function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>. 1071 Function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>.
1165 1072
1166 1073
1167 1074
1168 1075 <h4 margin-top="1em"><a name="local_stmt">Local Declarations</a></h4>
1169 1076
1170 <h3>3.3.7 &ndash; <a name="3.3.7">Local Declarations</a></h3><p> 1077 <p>
1171 Local variables can be declared anywhere inside a block. 1078 Local variables can be declared anywhere inside a block.
1172 The declaration can include an initial assignment: 1079 The declaration can include an initial assignment:
1173 1080
1174 <pre> 1081 <p><tt><pre>
1175 stat ::= <b>local</b> namelist [&lsquo;<b>=</b>&rsquo; explist] 1082 stat ::= <b>local</b> namelist [&lsquo;<b>=</b>&rsquo; explist]
1176 </pre><p> 1083 </pre></tt></p>
1084
1085 <p>
1177 If present, an initial assignment has the same semantics 1086 If present, an initial assignment has the same semantics
1178 of a multiple assignment (see <a href="#3.3.3">&sect;3.3.3</a>). 1087 of a multiple assignment (see <a href="#3.3.3">&sect;3.3.3</a>).
1179 Otherwise, all variables are initialized with <b>nil</b>. 1088 Otherwise, all variables are initialized with <b>nil</b>.
1180 1089
1181 1090
1188 The visibility rules for local variables are explained in <a href="#3.5">&sect;3.5</a>. 1097 The visibility rules for local variables are explained in <a href="#3.5">&sect;3.5</a>.
1189 1098
1190 1099
1191 1100
1192 1101
1193 1102 <h3 margin-top="1em"><a name="expressions">Expressions</a></h3>
1194 1103
1195 1104 <p>
1196 <h2>3.4 &ndash; <a name="3.4">Expressions</a></h2> 1105 The basic expressions in Luan are the following:
1197 1106
1198 <p> 1107 <p><tt><pre>
1199 The basic expressions in Lua are the following:
1200
1201 <pre>
1202 exp ::= prefixexp 1108 exp ::= prefixexp
1203 exp ::= <b>nil</b> | <b>false</b> | <b>true</b> 1109 exp ::= <b>nil</b> | <b>false</b> | <b>true</b>
1204 exp ::= Numeral 1110 exp ::= Numeral
1205 exp ::= LiteralString 1111 exp ::= LiteralString
1206 exp ::= functiondef 1112 exp ::= functiondef
1207 exp ::= tableconstructor 1113 exp ::= tableconstructor
1208 exp ::= &lsquo;<b>...</b>&rsquo; 1114 exp ::= &lsquo;<b>...</b>&rsquo;
1209 exp ::= exp binop exp 1115 exp ::= exp binop exp
1210 exp ::= unop exp 1116 exp ::= unop exp
1211 prefixexp ::= var | functioncall | &lsquo;<b>(</b>&rsquo; exp &lsquo;<b>)</b>&rsquo; 1117 prefixexp ::= var | functioncall | &lsquo;<b>(</b>&rsquo; exp &lsquo;<b>)</b>&rsquo;
1212 </pre> 1118 </pre></tt></p>
1213 1119
1214 <p> 1120 <p>
1215 Numerals and literal strings are explained in <a href="#3.1">&sect;3.1</a>; 1121 Numerals and literal strings are explained in <a href="#3.1">&sect;3.1</a>;
1216 variables are explained in <a href="#3.2">&sect;3.2</a>; 1122 variables are explained in <a href="#3.2">&sect;3.2</a>;
1217 function definitions are explained in <a href="#3.4.11">&sect;3.4.11</a>; 1123 function definitions are explained in <a href="#3.4.11">&sect;3.4.11</a>;
1218 function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>; 1124 function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>;
1219 table constructors are explained in <a href="#3.4.9">&sect;3.4.9</a>. 1125 table constructors are explained in <a href="#3.4.9">&sect;3.4.9</a>.
1220 Vararg expressions, 1126 Vararg expressions,
1221 denoted by three dots ('<code>...</code>'), can only be used when 1127 denoted by three dots ('<tt>...</tt>'), can only be used when
1222 directly inside a vararg function; 1128 directly inside a vararg function;
1223 they are explained in <a href="#3.4.11">&sect;3.4.11</a>. 1129 they are explained in <a href="#3.4.11">&sect;3.4.11</a>.
1224 1130
1225 1131
1226 <p> 1132 <p>
1227 Binary operators comprise arithmetic operators (see <a href="#3.4.1">&sect;3.4.1</a>), 1133 Binary operators comprise arithmetic operators (see <a href="#3.4.1">&sect;3.4.1</a>),
1228 bitwise operators (see <a href="#3.4.2">&sect;3.4.2</a>),
1229 relational operators (see <a href="#3.4.4">&sect;3.4.4</a>), logical operators (see <a href="#3.4.5">&sect;3.4.5</a>), 1134 relational operators (see <a href="#3.4.4">&sect;3.4.4</a>), logical operators (see <a href="#3.4.5">&sect;3.4.5</a>),
1230 and the concatenation operator (see <a href="#3.4.6">&sect;3.4.6</a>). 1135 and the concatenation operator (see <a href="#3.4.6">&sect;3.4.6</a>).
1231 Unary operators comprise the unary minus (see <a href="#3.4.1">&sect;3.4.1</a>), 1136 Unary operators comprise the unary minus (see <a href="#3.4.1">&sect;3.4.1</a>),
1232 the unary bitwise not (see <a href="#3.4.2">&sect;3.4.2</a>),
1233 the unary logical <b>not</b> (see <a href="#3.4.5">&sect;3.4.5</a>), 1137 the unary logical <b>not</b> (see <a href="#3.4.5">&sect;3.4.5</a>),
1234 and the unary <em>length operator</em> (see <a href="#3.4.7">&sect;3.4.7</a>). 1138 and the unary <em>length operator</em> (see <a href="#3.4.7">&sect;3.4.7</a>).
1235 1139
1236 1140
1237 <p> 1141 <p>
1242 If an expression is used as the last (or the only) element 1146 If an expression is used as the last (or the only) element
1243 of a list of expressions, 1147 of a list of expressions,
1244 then no adjustment is made 1148 then no adjustment is made
1245 (unless the expression is enclosed in parentheses). 1149 (unless the expression is enclosed in parentheses).
1246 In all other contexts, 1150 In all other contexts,
1247 Lua adjusts the result list to one element, 1151 Luan adjusts the result list to one element,
1248 either discarding all values except the first one 1152 either discarding all values except the first one
1249 or adding a single <b>nil</b> if there are no values. 1153 or adding a single <b>nil</b> if there are no values.
1250 1154
1251 1155
1252 <p> 1156 <p>
1253 Here are some examples: 1157 Here are some examples:
1254 1158
1255 <pre> 1159 <p><tt><pre>
1256 f() -- adjusted to 0 results 1160 f() -- adjusted to 0 results
1257 g(f(), x) -- f() is adjusted to 1 result 1161 g(f(), x) -- f() is adjusted to 1 result
1258 g(x, f()) -- g gets x plus all results from f() 1162 g(x, f()) -- g gets x plus all results from f()
1259 a,b,c = f(), x -- f() is adjusted to 1 result (c gets nil) 1163 a,b,c = f(), x -- f() is adjusted to 1 result (c gets nil)
1260 a,b = ... -- a gets the first vararg parameter, b gets 1164 a,b = ... -- a gets the first vararg parameter, b gets
1267 return ... -- returns all received vararg parameters 1171 return ... -- returns all received vararg parameters
1268 return x,y,f() -- returns x, y, and all results from f() 1172 return x,y,f() -- returns x, y, and all results from f()
1269 {f()} -- creates a list with all results from f() 1173 {f()} -- creates a list with all results from f()
1270 {...} -- creates a list with all vararg parameters 1174 {...} -- creates a list with all vararg parameters
1271 {f(), nil} -- f() is adjusted to 1 result 1175 {f(), nil} -- f() is adjusted to 1 result
1272 </pre> 1176 </pre></tt></p>
1273 1177
1274 <p> 1178 <p>
1275 Any expression enclosed in parentheses always results in only one value. 1179 Any expression enclosed in parentheses always results in only one value.
1276 Thus, 1180 Thus,
1277 <code>(f(x,y,z))</code> is always a single value, 1181 <tt>(f(x,y,z))</tt> is always a single value,
1278 even if <code>f</code> returns several values. 1182 even if <tt>f</tt> returns several values.
1279 (The value of <code>(f(x,y,z))</code> is the first value returned by <code>f</code> 1183 (The value of <tt>(f(x,y,z))</tt> is the first value returned by <tt>f</tt>
1280 or <b>nil</b> if <code>f</code> does not return any values.) 1184 or <b>nil</b> if <tt>f</tt> does not return any values.)
1281 1185
1282 1186
1283 1187
1284 <h3>3.4.1 &ndash; <a name="3.4.1">Arithmetic Operators</a></h3><p> 1188 <h4 margin-top="1em"><a name="arithmetic">Arithmetic Operators</a></h4>
1285 Lua supports the following arithmetic operators: 1189
1190 <p>
1191 Luan supports the following arithmetic operators:
1286 1192
1287 <ul> 1193 <ul>
1288 <li><b><code>+</code>: </b>addition</li> 1194 <li><b><tt>+</tt>: </b>addition</li>
1289 <li><b><code>-</code>: </b>subtraction</li> 1195 <li><b><tt>-</tt>: </b>subtraction</li>
1290 <li><b><code>*</code>: </b>multiplication</li> 1196 <li><b><tt>*</tt>: </b>multiplication</li>
1291 <li><b><code>/</code>: </b>float division</li> 1197 <li><b><tt>/</tt>: </b>division</li>
1292 <li><b><code>//</code>: </b>floor division</li> 1198 <li><b><tt>%</tt>: </b>modulo</li>
1293 <li><b><code>%</code>: </b>modulo</li> 1199 <li><b><tt>^</tt>: </b>exponentiation</li>
1294 <li><b><code>^</code>: </b>exponentiation</li> 1200 <li><b><tt>-</tt>: </b>unary minus</li>
1295 <li><b><code>-</code>: </b>unary minus</li>
1296 </ul> 1201 </ul>
1297 1202
1298 <p> 1203 <p>
1299 With the exception of exponentiation and float division, 1204 Addition, subtraction, multiplication, division, and unary minus are the same as these operators in Java. Exponentiation uses Java's <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#pow(double,%20double)">Math.pow</a> function.
1300 the arithmetic operators work as follows:
1301 If both operands are integers,
1302 the operation is performed over integers and the result is an integer.
1303 Otherwise, if both operands are numbers
1304 or strings that can be converted to
1305 numbers (see <a href="#3.4.3">&sect;3.4.3</a>),
1306 then they are converted to floats,
1307 the operation is performed following the usual rules
1308 for floating-point arithmetic
1309 (usually the IEEE 754 standard),
1310 and the result is a float.
1311
1312
1313 <p>
1314 Exponentiation and float division (<code>/</code>)
1315 always convert their operands to floats
1316 and the result is always a float.
1317 Exponentiation uses the ISO&nbsp;C function <code>pow</code>,
1318 so that it works for non-integer exponents too.
1319
1320
1321 <p>
1322 Floor division (<code>//</code>) is a division
1323 that rounds the quotient towards minus infinite,
1324 that is, the floor of the division of its operands.
1325
1326 1205
1327 <p> 1206 <p>
1328 Modulo is defined as the remainder of a division 1207 Modulo is defined as the remainder of a division
1329 that rounds the quotient towards minus infinite (floor division). 1208 that rounds the quotient towards minus infinite (floor division).
1330 1209 (The Java modulo operator is not used.)
1331
1332 <p>
1333 In case of overflows in integer arithmetic,
1334 all operations <em>wrap around</em>,
1335 according to the usual rules of two-complement arithmetic.
1336 (In other words,
1337 they return the unique representable integer
1338 that is equal modulo <em>2<sup>64</sup></em> to the mathematical result.)
1339
1340
1341
1342 <h3>3.4.2 &ndash; <a name="3.4.2">Bitwise Operators</a></h3><p>
1343 Lua supports the following bitwise operators:
1344
1345 <ul>
1346 <li><b><code>&amp;</code>: </b>bitwise and</li>
1347 <li><b><code>&#124;</code>: </b>bitwise or</li>
1348 <li><b><code>~</code>: </b>bitwise exclusive or</li>
1349 <li><b><code>&gt;&gt;</code>: </b>right shift</li>
1350 <li><b><code>&lt;&lt;</code>: </b>left shift</li>
1351 <li><b><code>~</code>: </b>unary bitwise not</li>
1352 </ul>
1353
1354 <p>
1355 All bitwise operations convert its operands to integers
1356 (see <a href="#3.4.3">&sect;3.4.3</a>),
1357 operate on all bits of those integers,
1358 and result in an integer.
1359
1360
1361 <p>
1362 Both right and left shifts fill the vacant bits with zeros.
1363 Negative displacements shift to the other direction;
1364 displacements with absolute values equal to or higher than
1365 the number of bits in an integer
1366 result in zero (as all bits are shifted out).
1367
1368
1369 1210
1370 1211
1371 1212
1372 <h3>3.4.3 &ndash; <a name="3.4.3">Coercions and Conversions</a></h3><p> 1213 <h3>3.4.3 &ndash; <a name="3.4.3">Coercions and Conversions</a></h3><p>
1373 Lua provides some automatic conversions between some 1214 Lua provides some automatic conversions between some