| Module | SExpressionParser |
| In: |
sexpressions.rb
|
| Integer | = | integer.map{|x| x.to_i } |
| Float | = | number.map{|x| x.to_f } |
| Number | = | longest(Integer, Float) |
| Special | = | Regexp.escape('+-*/=<>?!@#$%^&:~') |
| Symbol | = | regexp(/[\w#{Special}]*[A-Za-z#{Special}][\w#{Special}]*/).map{|s| s.to_sym } |
| String | = | stringer(%q{"}, %q{"}, "n" => "\n", "t" => "\t") |
| List | = | char('(') >> lazy{Values} << char(')') |
| Quoted | = | char("'") >> lazy{Value}.map{|value| [:quote, value] } |
| Value | = | whitespace.many_ >> alt(Quoted, List, String, Symbol, Number) << whitespace.many_ |
| Values | = | Value.many |
| Parser | = | Values << eof |