17 changed files with 439 additions and 510 deletions
-
2qa/drc_proto/drc_clearance_test_functions.cpp
-
6qa/drc_proto/drc_drilled_hole_tester.cpp
-
115qa/drc_proto/drc_engine.cpp
-
15qa/drc_proto/drc_engine.h
-
2qa/drc_proto/drc_provider.h
-
17qa/drc_proto/drc_rule.cpp
-
122qa/drc_proto/drc_rule.h
-
237qa/drc_proto/drc_rule_parser.cpp
-
30qa/drc_proto/drc_rule_parser.h
-
195qa/drc_proto/drc_rules_lexer.h
-
8qa/drc_proto/drc_test_provider.cpp
-
7qa/drc_proto/drc_test_provider.h
-
77qa/drc_proto/drc_test_provider_copper_clearance.cpp
-
33qa/drc_proto/drc_test_provider_edge_clearance.cpp
-
51qa/drc_proto/drc_test_provider_hole_clearance.cpp
-
22qa/drc_proto/drc_test_provider_hole_size.cpp
-
10qa/drc_proto/drc_test_provider_track_width.cpp
@ -1,195 +0,0 @@ |
|||
|
|||
/* Do not modify this file it was automatically generated by the |
|||
* TokenList2DsnLexer CMake script. |
|||
*/ |
|||
|
|||
#ifndef DRC_RULES_LEXER_H_ |
|||
#define DRC_RULES_LEXER_H_ |
|||
|
|||
#include <dsnlexer.h> |
|||
|
|||
/** |
|||
* C++ does not put enum _values_ in separate namespaces unless the enum itself |
|||
* is in a separate namespace. All the token enums must be in separate namespaces |
|||
* otherwise the C++ compiler will eventually complain if it sees more than one |
|||
* DSNLEXER in the same compilation unit, say by mutliple header file inclusion. |
|||
* Plus this also enables re-use of the same enum name T. A typedef can always be used |
|||
* to clarify which enum T is in play should that ever be a problem. This is |
|||
* unlikely since Parse() functions will usually only be exposed to one header |
|||
* file like this one. But if there is a problem, then use: |
|||
* typedef DRCRULE_T::T T; |
|||
* within that problem area. |
|||
*/ |
|||
namespace DRCRULE_T |
|||
{ |
|||
/// enum T contains all this lexer's tokens. |
|||
enum T |
|||
{ |
|||
// these first few are negative special ones for syntax, and are |
|||
// inherited from DSNLEXER. |
|||
T_NONE = DSN_NONE, |
|||
T_COMMENT = DSN_COMMENT, |
|||
T_STRING_QUOTE = DSN_STRING_QUOTE, |
|||
T_QUOTE_DEF = DSN_QUOTE_DEF, |
|||
T_DASH = DSN_DASH, |
|||
T_SYMBOL = DSN_SYMBOL, |
|||
T_NUMBER = DSN_NUMBER, |
|||
T_RIGHT = DSN_RIGHT, // right bracket: ')' |
|||
T_LEFT = DSN_LEFT, // left bracket: '(' |
|||
T_STRING = DSN_STRING, // a quoted string, stripped of the quotes |
|||
T_EOF = DSN_EOF, // special case for end of file |
|||
|
|||
T_allow = 0, |
|||
T_condition, |
|||
T_enable, |
|||
T_error, |
|||
T_expression, |
|||
T_ignore, |
|||
T_info, |
|||
T_max, |
|||
T_min, |
|||
T_name, |
|||
T_opt, |
|||
T_priority, |
|||
T_rule, |
|||
T_severity, |
|||
T_type, |
|||
T_version, |
|||
T_warning |
|||
}; |
|||
} // namespace DRCRULE_T |
|||
|
|||
|
|||
/** |
|||
* Class DRC_RULES_LEXER |
|||
* is an automatically generated class using the TokenList2DnsLexer.cmake |
|||
* technology, based on keywords provided by file: |
|||
* /home/twl/Kicad-dev/kicad-git-dev/common/drc_rules.keywords |
|||
*/ |
|||
class DRC_RULES_LEXER : public DSNLEXER |
|||
{ |
|||
/// Auto generated lexer keywords table and length: |
|||
static const KEYWORD keywords[]; |
|||
static const unsigned keyword_count; |
|||
|
|||
public: |
|||
/** |
|||
* Constructor ( const std::string&, const wxString& ) |
|||
* @param aSExpression is (utf8) text possibly from the clipboard that you want to parse. |
|||
* @param aSource is a description of the origin of @a aSExpression, such as a filename. |
|||
* If left empty, then _("clipboard") is used. |
|||
*/ |
|||
DRC_RULES_LEXER( const std::string& aSExpression, const wxString& aSource = wxEmptyString ) : |
|||
DSNLEXER( keywords, keyword_count, aSExpression, aSource ) |
|||
{ |
|||
} |
|||
|
|||
/** |
|||
* Constructor ( FILE* ) |
|||
* takes @a aFile already opened for reading and @a aFilename as parameters. |
|||
* The opened file is assumed to be positioned at the beginning of the file |
|||
* for purposes of accurate line number reporting in error messages. The |
|||
* FILE is closed by this instance when its destructor is called. |
|||
* @param aFile is a FILE already opened for reading. |
|||
* @param aFilename is the name of the opened file, needed for error reporting. |
|||
*/ |
|||
DRC_RULES_LEXER( FILE* aFile, const wxString& aFilename ) : |
|||
DSNLEXER( keywords, keyword_count, aFile, aFilename ) |
|||
{ |
|||
} |
|||
|
|||
/** |
|||
* Constructor ( LINE_READER* ) |
|||
* initializes a lexer and prepares to read from @a aLineReader which |
|||
* is assumed ready, and may be in use by other DSNLEXERs also. No ownership |
|||
* is taken of @a aLineReader. This enables it to be used by other lexers also. |
|||
* The transition between grammars in such a case, must happen on a text |
|||
* line boundary, not within the same line of text. |
|||
* |
|||
* @param aLineReader is any subclassed instance of LINE_READER, such as |
|||
* STRING_LINE_READER or FILE_LINE_READER. No ownership is taken of aLineReader. |
|||
*/ |
|||
DRC_RULES_LEXER( LINE_READER* aLineReader ) : |
|||
DSNLEXER( keywords, keyword_count, aLineReader ) |
|||
{ |
|||
} |
|||
|
|||
/** |
|||
* Function TokenName |
|||
* returns the name of the token in ASCII form. |
|||
*/ |
|||
static const char* TokenName( DRCRULE_T::T aTok ); |
|||
|
|||
/** |
|||
* Function NextTok |
|||
* returns the next token found in the input file or T_EOF when reaching |
|||
* the end of file. Users should wrap this function to return an enum |
|||
* to aid in grammar debugging while running under a debugger, but leave |
|||
* this lower level function returning an int (so the enum does not collide |
|||
* with another usage). |
|||
* @return DRCRULE_T::T - the type of token found next. |
|||
* @throw IO_ERROR - only if the LINE_READER throws it. |
|||
*/ |
|||
DRCRULE_T::T NextTok() |
|||
{ |
|||
return (DRCRULE_T::T) DSNLEXER::NextTok(); |
|||
} |
|||
|
|||
/** |
|||
* Function NeedSYMBOL |
|||
* calls NextTok() and then verifies that the token read in |
|||
* satisfies bool IsSymbol(). |
|||
* If not, an IO_ERROR is thrown. |
|||
* @return int - the actual token read in. |
|||
* @throw IO_ERROR, if the next token does not satisfy IsSymbol() |
|||
*/ |
|||
DRCRULE_T::T NeedSYMBOL() |
|||
{ |
|||
return (DRCRULE_T::T) DSNLEXER::NeedSYMBOL(); |
|||
} |
|||
|
|||
/** |
|||
* Function NeedSYMBOLorNUMBER |
|||
* calls NextTok() and then verifies that the token read in |
|||
* satisfies bool IsSymbol() or tok==T_NUMBER. |
|||
* If not, an IO_ERROR is thrown. |
|||
* @return int - the actual token read in. |
|||
* @throw IO_ERROR, if the next token does not satisfy the above test |
|||
*/ |
|||
DRCRULE_T::T NeedSYMBOLorNUMBER() |
|||
{ |
|||
return (DRCRULE_T::T) DSNLEXER::NeedSYMBOLorNUMBER(); |
|||
} |
|||
|
|||
/** |
|||
* Function CurTok |
|||
* returns whatever NextTok() returned the last time it was called. |
|||
*/ |
|||
DRCRULE_T::T CurTok() |
|||
{ |
|||
return (DRCRULE_T::T) DSNLEXER::CurTok(); |
|||
} |
|||
|
|||
/** |
|||
* Function PrevTok |
|||
* returns whatever NextTok() returned the 2nd to last time it was called. |
|||
*/ |
|||
DRCRULE_T::T PrevTok() |
|||
{ |
|||
return (DRCRULE_T::T) DSNLEXER::PrevTok(); |
|||
} |
|||
}; |
|||
|
|||
// example usage |
|||
|
|||
/** |
|||
* Class _PARSER |
|||
* holds data and functions pertinent to parsing a S-expression file . |
|||
* |
|||
class DRC_RULES_PARSER : public DRC_RULES_LEXER |
|||
{ |
|||
|
|||
}; |
|||
*/ |
|||
|
|||
#endif // DRC_RULES_LEXER_H_ |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue