# HG changeset patch # User Mike Pavone # Date 1388998099 28800 # Node ID ae5188be523e7ebaec59f6ba49f5dd2cf8e51eb8 # Parent 5b830147c1cd2a951e80ceebaed7a709e5bf82da Improve compatibility of new parser with the old one diff -r 5b830147c1cd -r ae5188be523e modules/parser.tp --- a/modules/parser.tp Sun Jan 05 23:07:26 2014 -0800 +++ b/modules/parser.tp Mon Jan 06 00:48:19 2014 -0800 @@ -701,7 +701,6 @@ if: (Suffix from: 0 withLength: 1) = "u" { signed <- false } - print: (Suffix from: 1) . "\n" litbits <- (Suffix from: 1) int32 } #{ @@ -784,8 +783,11 @@ funcall <- match: hws . Initial . Parts where: { Initial <- match: namepart - Parts <- onePlus: argpart + Parts <- zeroPlus: argpart } yield: { + if: (Parts length) = 0 { + Parts <- [] + } Initial | Parts foldr: #{ name <- "" args <- [] @@ -902,8 +904,22 @@ Expr } + opsym <- match: Name where: { + Name <- matchOne: ["&&" "||" "<=" ">=" "<" ">" "=" "!=" "=" "-" "." "*" "/" "%" "|"] + } yield: { + #{ + name <- Name + string <- { + name + } + } + } + assignment <- match: ws . Symbol . hws . "<-" . Expr where: { - Symbol <- match: symexpr + Symbol <- matchOne: [ + symexpr + opsym + ] Expr <- match: expr } yield: { #{ @@ -916,8 +932,16 @@ } object <- match: "#{" . ws . Messages . "}" where: { - Messages <- zeroPlus: assignment + Messages <- zeroPlus: (match: ws . El where: { + El <- matchOne: [ + assignment + funcall + ] + } yield: { El }) } yield: { + if: (Messages length) = 0 { + Messages <- [] + } #{ messages <- Messages string <- {