Alright. So. I am trying to make a script that will verify a function in predicate calculus.
Essentially, it must be of the form:
function(var1,var2,var3)
Here is what I've got so far:
$constants = '[a-z][A-Za-z0-9_]*';
$variables = '[A-Z][A-Za-z0-9_]*';
$functions = '((' . $constants . ') \\( ((' . $constants . ')|(' . $variables . ')) ( \\, ((' . $constants . ')|(' . $variables . ')) )* \\) )';
$s = 'function_name(var1,var2,var3)';
if( ($c1 = preg_match( '/^' . $functions . '$/mx', $s, $matches1 ) ) ) echo 'function<br><br>';
else if( ($c2 = preg_match( '/^' . $constants . '$/mx', $s, $matches2 ) ) ) echo 'constant<br><br>';
else if( ($c3 = preg_match( '/^' . $variables . '$/mx', $s, $matches3 ) ) ) echo 'variable<br><br>';
else echo 'NOTHING';
echo 'matches1(' . $c1 . ') = '; print_r( $matches1 ); echo '<br />';
echo 'matches2(' . $c2 . ') = '; print_r( $matches2 ); echo '<br />';
echo 'matches3(' . $c3 . ') = '; print_r( $matches3 ); echo '<br />';
This is something like what I expect to see:
function
matches1(1) = Array ( [0] => function_name(var1,var2,var3) [1] => function_name(var1,var2,var3) [2] => function_name [3] => var1 [4] => var2 [5] => var3 )
matches2() =
matches3() =
This is what I do see:
function
matches1(1) = Array ( [0] => function_name(var1,var2,var3) [1] => function_name(var1,var2,var3) [2] => function_name [3] => var1 [4] => var1 [5] => [6] => ,var3 [7] => var3 [8] => var3 )
matches2() =
matches3() =
Thoughts?
Thanks!
- Jared