1string_literal("") --> "\"\"".
    2string_literal(S) --> "\"",string_inner(S),"\"".
    3string_literal1("") --> "\'\'".
    4string_literal1(S) --> "\'",string_inner1(S),"\'","\'\''",{S=""}.
    5string_inner([A]) --> string_inner_(A).
    6string_inner([A|B]) --> string_inner_(A),string_inner(B).
    7string_inner_(A) --> {A="\\\""},A;{dif(A,'"'),dif(A,'\n')},[A].
    8string_inner1([A]) --> string_inner1_(A).
    9string_inner1([A|B]) --> string_inner1_(A),string_inner1(B).
   10string_inner1_(A) --> {A="\\'"},A;{dif(A,'\''),dif(A,'\n')},[A].
   11
   12ws --> "";ws_.
   13ws_ --> (" ";"\n";"\r"),ws.
   14
   15python_ws --> "";python_ws_.
   16python_ws_ --> (" ";"\t"),python_ws.
   17
   18symbol([L|Ls]) --> letter(L), symbol_r(Ls).
   19symbol_r([L|Ls]) --> csym(L), symbol_r(Ls).
   20symbol_r([])     --> [].
   21letter(Let)     --> [Let], { code_type(Let, alpha) }.
   22csym(Let)     --> [Let], {code_type(Let, csym)}.
   23
   24a_double([A,B]) -->
   25        (an_int(A), ".", an_int(B)).
   26a_double([A,['0']]) -->
   27        (an_int(A)).
   28an_int([L|Ls]) --> digit(L), an_int_r(Ls).
   29an_int_r([L|Ls]) --> digit(L), an_int_r(Ls).
   30an_int_r([])     --> [].
   31digit(Let)     --> [Let], { code_type(Let, digit) }