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)