Mercurial > repos > tabletprog
comparison modules/parser.tp @ 244:ae5188be523e
Improve compatibility of new parser with the old one
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 06 Jan 2014 00:48:19 -0800 |
parents | 5b830147c1cd |
children | 3590ecca6bc9 |
comparison
equal
deleted
inserted
replaced
243:5b830147c1cd | 244:ae5188be523e |
---|---|
699 litbits <- 32 | 699 litbits <- 32 |
700 if: (Suffix length) > 0 { | 700 if: (Suffix length) > 0 { |
701 if: (Suffix from: 0 withLength: 1) = "u" { | 701 if: (Suffix from: 0 withLength: 1) = "u" { |
702 signed <- false | 702 signed <- false |
703 } | 703 } |
704 print: (Suffix from: 1) . "\n" | |
705 litbits <- (Suffix from: 1) int32 | 704 litbits <- (Suffix from: 1) int32 |
706 } | 705 } |
707 #{ | 706 #{ |
708 litval <- num | 707 litval <- num |
709 signed? <- signed | 708 signed? <- signed |
782 } | 781 } |
783 ] | 782 ] |
784 | 783 |
785 funcall <- match: hws . Initial . Parts where: { | 784 funcall <- match: hws . Initial . Parts where: { |
786 Initial <- match: namepart | 785 Initial <- match: namepart |
787 Parts <- onePlus: argpart | 786 Parts <- zeroPlus: argpart |
788 } yield: { | 787 } yield: { |
788 if: (Parts length) = 0 { | |
789 Parts <- [] | |
790 } | |
789 Initial | Parts foldr: #{ | 791 Initial | Parts foldr: #{ |
790 name <- "" | 792 name <- "" |
791 args <- [] | 793 args <- [] |
792 } with: :acc el { | 794 } with: :acc el { |
793 nextName <- acc name | 795 nextName <- acc name |
900 ] | 902 ] |
901 } yield: { | 903 } yield: { |
902 Expr | 904 Expr |
903 } | 905 } |
904 | 906 |
907 opsym <- match: Name where: { | |
908 Name <- matchOne: ["&&" "||" "<=" ">=" "<" ">" "=" "!=" "=" "-" "." "*" "/" "%" "|"] | |
909 } yield: { | |
910 #{ | |
911 name <- Name | |
912 string <- { | |
913 name | |
914 } | |
915 } | |
916 } | |
917 | |
905 assignment <- match: ws . Symbol . hws . "<-" . Expr where: { | 918 assignment <- match: ws . Symbol . hws . "<-" . Expr where: { |
906 Symbol <- match: symexpr | 919 Symbol <- matchOne: [ |
920 symexpr | |
921 opsym | |
922 ] | |
907 Expr <- match: expr | 923 Expr <- match: expr |
908 } yield: { | 924 } yield: { |
909 #{ | 925 #{ |
910 assign <- Expr | 926 assign <- Expr |
911 to <- Symbol | 927 to <- Symbol |
914 } | 930 } |
915 } | 931 } |
916 } | 932 } |
917 | 933 |
918 object <- match: "#{" . ws . Messages . "}" where: { | 934 object <- match: "#{" . ws . Messages . "}" where: { |
919 Messages <- zeroPlus: assignment | 935 Messages <- zeroPlus: (match: ws . El where: { |
920 } yield: { | 936 El <- matchOne: [ |
937 assignment | |
938 funcall | |
939 ] | |
940 } yield: { El }) | |
941 } yield: { | |
942 if: (Messages length) = 0 { | |
943 Messages <- [] | |
944 } | |
921 #{ | 945 #{ |
922 messages <- Messages | 946 messages <- Messages |
923 string <- { | 947 string <- { |
924 "#{\n\t". ((messages map: :el { | 948 "#{\n\t". ((messages map: :el { |
925 string: el | 949 string: el |