Fließkommazahlen: C-Standard



  • Hi!

    Ich muss einen Endlichen Automaten basteln, der alle Fließkommazahlen nach C-Standard akzeptieren soll. Kann mir jemand sagen, wie dieser Standard aussieht? Wie müssen Fließkommazahlen in C gebaut sein?



  • Was meinst genau mit "wie müssen Fließkommazahlen" gebaut sein?

    Weißt nicht wie du sie definieren, einlesen, ausgeben sollst?



  • |silver| schrieb:

    Was meinst genau mit "wie müssen Fließkommazahlen" gebaut sein?

    Weißt nicht wie du sie definieren, einlesen, ausgeben sollst?

    Na ich muss eben einen endlichen Automaten bauen und muss wissen, welche Wörter dieser akzeptieren soll. Da ich mich weder mit C noch mit Fließkommazahlen gut auskenne, weiß ich eben nicht genau, wie das auszusehen hat. Ich tippe mal drauf, dass diese Fließkommazahlen irgendwie die Form -100.000e01 oder sowas haben.



  • also die string repräsentation von fließkommazahlen?

    1. ein vorzeichen kann kommen, muss aber nicht
    2. jetz können ziffern kommen, müssen aber nicht
    3. dezimalpunkt
    4. jetz können ziffern kommen, müssen wenn bei 2 keine waren
    5. jetz kann ein "e" kommen für den exponenten
    6. wenn (5) dann muss jetzt ein vorzeichenbehafteter integer kommen, sonst nicht

    verpack das mal in einen regulären ausdruck.
    regex coach/hilfe für windows: http://weitz.de/regex-coach/



  • c.rackwitz schrieb:

    3. dezimalpunkt

    ist auch nur nötig, wenn keine Zahl vorm komma und kein e.
    bsp: 3e0 ist auch eine gültige FKZ.

    auf bald
    oenone



  • stimmt..
    in dem zusammenhang möchte ich auf BNF hinweisen

    emmchen hat mich mal im icq angesprochen.
    sie hat auf mich den eindruck gemacht, dass sie in ihrem informatikustudium im 7ten semester (steht auf ihrer homepage) ziemlich verloren ist. formale sprachen hat sie nicht erwähnt, reguläre ausdrücke noch nie gehört, wenn ich mit "bytestrom" ankomme, stellt sie auf durchzug und dann kommen noch so zeilen:

    [23:33:08] ***: sorry ich studere an der uni - ich habe null ahnung von der praxis
    [23:38:24] ***: ICH NIX PROGRAMMIEREN
    [23:39:37] ***: *lol* geh mal zur uni, dann lernste mal was richtige informatik bedeutet
    

    ich fands lustig 🙂



  • constant:
    integer-constant
    floating-constant
    enumeration-constant
    character-constant

    integer-constant:
    decimal-constant integer-suffixopt
    octal-constant integer-suffixopt
    hexadecimal-constant integer-suffixopt

    decimal-constant:
    nonzero-digit
    decimal-constant digit

    octal-constant:
    0
    octal-constant octal-digit

    hexadecimal-constant:
    hexadecimal-prefix hexadecimal-digit
    hexadecimal-constant hexadecimal-digit

    hexadecimal-prefix: one of
    0x 0X

    nonzero-digit: one of
    1 2 3 4 5 6 7 8 9

    octal-digit: one of
    0 1 2 3 4 5 6 7

    hexadecimal-digit: one of
    0 1 2 3 4 5 6 7 8 9
    a b c d e f
    A B C D E F

    integer-suffix:
    unsigned-suffix long-suffixopt
    unsigned-suffix long-long-suffix
    long-suffix unsigned-suffixopt
    long-long-suffix unsigned-suffixopt

    unsigned-suffix: one of
    u U

    long-suffix: one of
    l L

    long-long-suffix: one of
    ll LL

    floating-constant:
    decimal-floating-constant
    hexadecimal-floating-constant

    decimal-floating-constant:
    fractional-constant exponent-partopt floating-suffixopt
    digit-sequence exponent-part floating-suffixopt

    hexadecimal-floating-constant:
    hexadecimal-prefix hexadecimal-fractional-constant
    binary-exponent-part floating-suffixopt
    hexadecimal-prefix hexadecimal-digit-sequence
    binary-exponent-part floating-suffixopt

    fractional-constant:
    digit-sequenceopt . digit-sequence
    digit-sequence .

    exponent-part:
    e signopt digit-sequence
    E signopt digit-sequence

    sign: one of
    + -

    digit-sequence:
    digit
    digit-sequence digit

    hexadecimal-fractional-constant:
    hexadecimal-digit-sequenceopt .
    hexadecimal-digit-sequence
    hexadecimal-digit-sequence .

    binary-exponent-part:
    p signopt digit-sequence
    P signopt digit-sequence

    hexadecimal-digit-sequence:
    hexadecimal-digit
    hexadecimal-digit-sequence hexadecimal-digit

    floating-suffix: one of
    f l F L

    wenn dir noch irgendein Nichtterminal fehlt - lass es mich wissen


Log in to reply