[erlang-questions] problem making my first parser
zxq9
zxq9@REDACTED
Sat Sep 26 09:08:35 CEST 2015
On Saturday 26 September 2015 09:01:30 Roelof Wobben wrote:
> Hello,
>
> I try to make a very easy parser to practice to make a json parser in
> the future.
> As first I try to make a parser which can calculate some basic things.
>
> So far I have this :
>
> -module(number_parser).
>
> -export([scan/1]).
>
> scan(String) ->
> scan(String, []).
>
> scan([], List) ->
> List;
>
> scan([Head | Rest], List_parse) when Head >= $0, Head =< $9 ->
> scan(Rest, [(Head - 48) | List_parse]);
>
> scan([Head | Rest], List_parse) when Head =:= "+" ->
> scan(Rest, [Head | List_parse] ).
>
>
> but when I try this code on scan("1+1") I see this error message :
>
> ** exception error: no function clause matching
> number_parser:scan("+1",[1]) (number_parser.erl, line 8)
>
> Which does not make sense. +1 makes as far as I know [+, 1] so I have a
> head and tail so the last clause schould work.
>
>
> Why do I then see this error message ?
What happens if you try `[1] >= $0, [1] =< $9.`?
How about `[1] =:= "+".` ?
What are you actually comparing here?
Do you care about plus signs as strings, or do you care about plus as a symbol that represents an operation?
-Craig
More information about the erlang-questions
mailing list