• I finally completed my lexical analyzer generator (needed by my halt de

    From olcott@21:1/5 to All on Sat Oct 23 20:27:50 2021
    XPost: comp.theory, sci.logic, sci.math

    In order to make my halt decider a pure function it had to have a way to
    look at the inputs to function calls. In order to look at the inputs to function calls it had to know how many inputs that a function has.

    This is DFA analyzes C source code to provide the number of parameters
    of each function in the file. The number of parameters per function is
    the number of {vt} matches per {fn} match.

    The only thing that will change with this file is that the halt decider
    will use different halt deciding criteria so that the halt decider
    becomes a pure function.

    https://www.researchgate.net/publication/351947980_Halting_problem_undecidability_and_infinitely_nested_simulation


    In computer programming, a pure function is a function that has the
    following properties:[1][2]

    (1) The function return values are identical for identical arguments (no variation with local static variables, non-local variables, mutable
    reference arguments or input streams).

    (2) The function application has no side effects (no mutation of local
    static variables, non-local variables, mutable reference arguments or input/output streams).

    https://en.wikipedia.org/wiki/Pure_function



    //
    // Deterministic Finite Automaton (DFA) recognizer
    // of C function headers.

    // Character Classes
    //
    EMPTY [0]
    ALPHA [ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz]
    NUMERIC [0123456789]
    WS [0x09,0x0A,0x0D,0x20]
    LPAREN [(]
    RPAREN [)]
    ASTERISK [*]
    COMMA [,]
    COMMENT [0x2f]
    NEWLINE [0x0A]
    ASCII [0x20-0x7e]
    CONTROL [0x00-0x09,0x0b-0x1f,0x7f]


    // Recognized Patterns
    //
    {et} Empty
    {ft} Function_Type
    {fn} Function_Name
    {vt} Variable_Type
    {vn} Variable_Name
    {fh} Function_Header

    // DFA Definition to recognize C function headers

    // begin of function type
    <00> WS (00) ALPHA(01) NUMERIC(00) [*](00) [/](12)
    <01> WS{ft}(03) ALPHA(01) NUMERIC(01) [*](02)
    <02> WS{ft}(03) ALPHA(00) NUMERIC(00) [*](02)

    // begin of function name
    <03> WS (03) ALPHA(04) NUMERIC(00) [*](00)
    <04> WS{fn}(05) ALPHA(04) NUMERIC(04) [*](00) [(]{fn}(06)
    <05> WS (05) ALPHA(00) NUMERIC(00) [*](00) [(] (06)

    // begin of variable type
    <06> WS (06) ALPHA(07) NUMERIC(00) [*](00) [)]{fh}(00)
    <07> WS{vt}(09) ALPHA(07) NUMERIC(07) [*](08) [)]{fh}(00)
    <08> WS{vt}(09) ALPHA(00) NUMERIC(00) [*](08)

    // begin of variable name
    <09> WS (09) ALPHA(10) NUMERIC(00) [*] (00)
    <10> WS{vn}(11) ALPHA(10) NUMERIC(10) [,]{vn}(06) [)]{vn}(00)
    <11> WS (11) ALPHA(00) NUMERIC(00) [,] (06) [)] (00)

    // ignores all "//" comments
    <12> WS (00) ALPHA(01) NUMERIC(00) [*](00) [/](13)
    <13> CONTROL(13) ASCII(13) [0x0A] (00)

    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)