reset(); while($state->next()) { $token = &$state->current(); if(isset($this->_loose[$i+1]) && !$state->hasNext()) { $ret = FALSE; break; } if(!isset($this->_loose[$i+1]) && $state->hasNext()) { $ret = FALSE; break; } if($this->_loose[$i] != FA_TOKEN && $token['type'] != $this->_loose[$i]) { $ret = FALSE; break; } $i++; } $state->reset(); return $ret; } function checkAgainstGrammar(&$state) { if(!$this->_fuzzyMatch($state)) { parse_error("Expression did not match loose grammar check."); } } } class TokenAssignment extends TokenSet { var $_strict = array( FA_VARIABLE, FA_ASSIGN, array( FA_STRING, FA_VARIABLE, FA_FUNCTION_INSTANCE, FA_CLASS_INSTANCE, FA_ARRAY, ), FA_SEMICOLON, ); var $_loose = array( FA_TOKEN, FA_ASSIGN, FA_TOKEN, FA_SEMICOLON, ); } class TokenFunctionDefinition extends TokenSet { var $_strict = array( FA_FUNCTION_DEFINITION, FA_PARENTHESIS_OPEN, FA_TOKEN_SET, FA_PARANTHESIS_CLOSE, FA_BRACE_OPEN, FA_TOKEN_SET, FA_BRACE_CLOSE, ); var $_loose = array( FA_TOKEN, FA_PARENTHESIS_OPEN, FA_TOKEN, FA_PARANTHESIS_CLOSE, FA_BRACE_OPEN, FA_TOKEN, FA_BRACE_CLOSE, ); var $_token_set = array( array( FA_VARIABLE, FA_ASSIGN, array( FA_STRING, FA_VARIABLE, FA_FUNCTION_INSTANCE, FA_CLASS_INSTANCE, FA_ARRAY, FA_NUMBER, ), ), array( FA_VARIABLE, ), array( FA_FUNCTION_INSTANCE, ), array( FA_CLASS_INSTANCE, ), array( FA_STRING, ), array( FA_NUMBER, ), ); var $_token_separator = FA_COMMA; } class TokenClassDefinition extends TokenSet { var $_strict = array( FA_CLASS_DEFINITION, FA_BRACE_OPEN, FA_SCOPE_SET, FA_BRACE_CLOSE, ); var $_loose = array( FA_TOKEN, FA_BRACE_OPEN, FA_TOKEN, FA_BRACE_CLOSE, ); } class TokenArray extends TokenSet { var $_strict = array( FA_VARIABLE, FA_ASSIGN, FA_BRACKET_OPEN, FA_TOKEN_SET, FA_BRACKET_CLOSE, FA_SEMICOLON, ); var $_loose = array( FA_TOKEN, FA_ASSIGN, FA_BRACKET_OPEN, FA_TOKEN, FA_BRACKET_CLOSE, FA_SEMICOLON, ); var $_token_set = array( array( array( FA_VARIABLE, FA_STRING, FA_NUMBER, ), FA_ASSIGN_ARRAY_VALUE, array( FA_STRING, FA_VARIABLE, FA_FUNCTION_INSTANCE, FA_CLASS_INSTANCE, FA_ARRAY, FA_NUMBER, ), ), array( FA_VARIABLE, ), array( FA_FUNCTION_INSTANCE, ), array( FA_CLASS_INSTANCE, ), array( FA_STRING, ), array( FA_NUMBER, ), ); var $_token_separator = FA_COMMA; } ?>