Mercurial Hosting > luan
comparison website/src/manual.html @ 382:8557581740db
added tutorial
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 22 Apr 2015 20:38:48 -0600 |
parents | 6c6c3537035e |
children |
comparison
equal
deleted
inserted
replaced
381:83efd1e3685c | 382:8557581740db |
---|---|
297 Note that queries for metamethods are always raw; | 297 Note that queries for metamethods are always raw; |
298 the access to a metamethod does not invoke other metamethods. | 298 the access to a metamethod does not invoke other metamethods. |
299 You can emulate how Luan queries a metamethod for an object <tt>obj</tt> | 299 You can emulate how Luan queries a metamethod for an object <tt>obj</tt> |
300 with the following code: | 300 with the following code: |
301 | 301 |
302 <tt><pre> | 302 <p><tt><pre> |
303 raw_get(get_metatable(obj) or {}, "__" .. event_name) | 303 raw_get(get_metatable(obj) or {}, "__" .. event_name) |
304 | 304 </pre></tt></p> |
305 </pre></tt> | |
306 | 305 |
307 <p> | 306 <p> |
308 Here are the events: | 307 Here are the events: |
309 | 308 |
310 <ul> | 309 <ul> |
527 <p> | 526 <p> |
528 The following <i>keywords</i> are reserved | 527 The following <i>keywords</i> are reserved |
529 and cannot be used as names: | 528 and cannot be used as names: |
530 | 529 |
531 | 530 |
532 <pre> | 531 <p><pre> |
533 and break do else elseif end | 532 and break do else elseif end |
534 false for function goto if in | 533 false for function goto if in |
535 local nil not or repeat return | 534 local nil not or repeat return |
536 then true until while | 535 then true until while |
537 </pre> | 536 </pre></p> |
538 | 537 |
539 <p> | 538 <p> |
540 Luan is a case-sensitive language: | 539 Luan is a case-sensitive language: |
541 <tt>and</tt> is a reserved word, but <tt>And</tt> and <tt>AND</tt> | 540 <tt>and</tt> is a reserved word, but <tt>And</tt> and <tt>AND</tt> |
542 are two different, valid names. | 541 are two different, valid names. |
543 | 542 |
544 | 543 |
545 <p> | 544 <p> |
546 The following strings denote other tokens: | 545 The following strings denote other tokens: |
547 | 546 |
548 <pre> | 547 <p><pre> |
549 + - * / % ^ # | 548 + - * / % ^ # |
550 & ~ | << >> // | 549 & ~ | << >> // |
551 == ~= <= >= < > = | 550 == ~= <= >= < > = |
552 ( ) { } [ ] :: | 551 ( ) { } [ ] :: |
553 ; : , . .. ... | 552 ; : , . .. ... |
554 | 553 </pre></p> |
555 </pre> | |
556 | 554 |
557 <p> | 555 <p> |
558 <i>Literal strings</i> | 556 <i>Literal strings</i> |
559 can be delimited by matching single or double quotes, | 557 can be delimited by matching single or double quotes, |
560 and can contain the following C-like escape sequences: | 558 and can contain the following C-like escape sequences: |
629 when the opening long bracket is immediately followed by a newline, | 627 when the opening long bracket is immediately followed by a newline, |
630 the newline is not included in the string. | 628 the newline is not included in the string. |
631 As an example | 629 As an example |
632 the five literal strings below denote the same string: | 630 the five literal strings below denote the same string: |
633 | 631 |
634 <pre> | 632 <p><pre> |
635 a = 'alo\n123"' | 633 a = 'alo\n123"' |
636 a = "alo\n123\"" | 634 a = "alo\n123\"" |
637 a = '\97lo\10\04923"' | 635 a = '\97lo\10\04923"' |
638 a = [[alo | 636 a = [[alo |
639 123"]] | 637 123"]] |
640 a = [==[ | 638 a = [==[ |
641 alo | 639 alo |
642 123"]==] | 640 123"]==] |
643 | 641 </pre></p> |
644 </pre> | |
645 | 642 |
646 <p> | 643 <p> |
647 A <i>numerical constant</i> (or <i>numeral</i>) | 644 A <i>numerical constant</i> (or <i>numeral</i>) |
648 can be written with an optional fractional part | 645 can be written with an optional fractional part |
649 and an optional decimal exponent, | 646 and an optional decimal exponent, |
656 A numeric constant with a fractional dot or an exponent | 653 A numeric constant with a fractional dot or an exponent |
657 denotes a float; | 654 denotes a float; |
658 otherwise it denotes an integer. | 655 otherwise it denotes an integer. |
659 Examples of valid integer constants are | 656 Examples of valid integer constants are |
660 | 657 |
661 <pre> | 658 <p><pre> |
662 3 345 0xff 0xBEBADA | 659 3 345 0xff 0xBEBADA |
663 | 660 </pre></p> |
664 </pre><p> | 661 |
662 <p> | |
665 Examples of valid float constants are | 663 Examples of valid float constants are |
666 | 664 |
667 <pre> | 665 <p><pre> |
668 3.0 3.1416 314.16e-2 0.31416E1 34e1 | 666 3.0 3.1416 314.16e-2 0.31416E1 34e1 |
669 0x0.1E 0xA23p-4 0X1.921FB54442D18P+1 | 667 0x0.1E 0xA23p-4 0X1.921FB54442D18P+1 |
670 | 668 </pre></p> |
671 </pre> | |
672 | 669 |
673 <p> | 670 <p> |
674 A <i>comment</i> starts with a double hyphen (<tt>--</tt>) | 671 A <i>comment</i> starts with a double hyphen (<tt>--</tt>) |
675 anywhere outside a string. | 672 anywhere outside a string. |
676 If the text immediately after <tt>--</tt> is not an opening long bracket, | 673 If the text immediately after <tt>--</tt> is not an opening long bracket, |
695 <p> | 692 <p> |
696 A single name can denote a global variable or a local variable | 693 A single name can denote a global variable or a local variable |
697 (or a function's formal parameter, | 694 (or a function's formal parameter, |
698 which is a particular kind of local variable): | 695 which is a particular kind of local variable): |
699 | 696 |
700 <pre> | 697 <p><pre> |
701 var ::= Name | 698 var ::= Name |
702 | 699 </pre></p> |
703 </pre><p> | 700 |
701 <p> | |
704 Name denotes identifiers, as defined in <a href="#3.1">§3.1</a>. | 702 Name denotes identifiers, as defined in <a href="#3.1">§3.1</a>. |
705 | 703 |
706 | 704 |
707 <p> | 705 <p> |
708 Any variable name is assumed to be global unless explicitly declared | 706 Any variable name is assumed to be global unless explicitly declared |
717 | 715 |
718 | 716 |
719 <p> | 717 <p> |
720 Square brackets are used to index a table: | 718 Square brackets are used to index a table: |
721 | 719 |
722 <pre> | 720 <p><pre> |
723 var ::= prefixexp ‘<b>[</b>’ exp ‘<b>]</b>’ | 721 var ::= prefixexp ‘<b>[</b>’ exp ‘<b>]</b>’ |
724 | 722 </pre></p> |
725 </pre><p> | 723 |
724 <p> | |
726 The meaning of accesses to table fields can be changed via metatables. | 725 The meaning of accesses to table fields can be changed via metatables. |
727 An access to an indexed variable <tt>t[i]</tt> is equivalent to | 726 An access to an indexed variable <tt>t[i]</tt> is equivalent to |
728 a call <tt>gettable_event(t,i)</tt>. | 727 a call <tt>gettable_event(t,i)</tt>. |
729 (See <a href="#2.4">§2.4</a> for a complete description of the | 728 (See <a href="#2.4">§2.4</a> for a complete description of the |
730 <tt>gettable_event</tt> function. | 729 <tt>gettable_event</tt> function. |
734 | 733 |
735 <p> | 734 <p> |
736 The syntax <tt>var.Name</tt> is just syntactic sugar for | 735 The syntax <tt>var.Name</tt> is just syntactic sugar for |
737 <tt>var["Name"]</tt>: | 736 <tt>var["Name"]</tt>: |
738 | 737 |
739 <pre> | 738 <p><pre> |
740 var ::= prefixexp ‘<b>.</b>’ Name | 739 var ::= prefixexp ‘<b>.</b>’ Name |
741 | 740 </pre></p> |
742 </pre> | |
743 | 741 |
744 <p> | 742 <p> |
745 An access to a global variable <tt>x</tt> | 743 An access to a global variable <tt>x</tt> |
746 is equivalent to <tt>_ENV.x</tt>. | 744 is equivalent to <tt>_ENV.x</tt>. |
747 Due to the way that chunks are compiled, | 745 Due to the way that chunks are compiled, |