diff options
Diffstat (limited to 'grammar/semantic_error.go')
-rw-r--r-- | grammar/semantic_error.go | 62 |
1 files changed, 25 insertions, 37 deletions
diff --git a/grammar/semantic_error.go b/grammar/semantic_error.go index 589e324..88a6b17 100644 --- a/grammar/semantic_error.go +++ b/grammar/semantic_error.go @@ -1,42 +1,30 @@ package grammar -type SemanticError struct { - message string -} - -func newSemanticError(message string) *SemanticError { - return &SemanticError{ - message: message, - } -} - -func (e *SemanticError) Error() string { - return e.message -} +import "errors" var ( - semErrNoGrammarName = newSemanticError("name is missing") - semErrSpellingInconsistency = newSemanticError("the identifiers are treated as the same. please use the same spelling") - semErrDuplicateAssoc = newSemanticError("associativity and precedence cannot be specified multiple times for a symbol") - semErrUndefinedPrec = newSemanticError("symbol must has precedence") - semErrUndefinedOrdSym = newSemanticError("undefined ordered symbol") - semErrUnusedProduction = newSemanticError("unused production") - semErrUnusedTerminal = newSemanticError("unused terminal") - semErrTermCannotBeSkipped = newSemanticError("a terminal used in productions cannot be skipped") - semErrNoProduction = newSemanticError("a grammar needs at least one production") - semErrUndefinedSym = newSemanticError("undefined symbol") - semErrDuplicateProduction = newSemanticError("duplicate production") - semErrDuplicateTerminal = newSemanticError("duplicate terminal") - semErrDuplicateFragment = newSemanticError("duplicate fragment") - semErrDuplicateName = newSemanticError("duplicate names are not allowed between terminals and non-terminals") - semErrErrSymIsReserved = newSemanticError("symbol 'error' is reserved as a terminal symbol") - semErrDuplicateLabel = newSemanticError("a label must be unique in an alternative") - semErrInvalidLabel = newSemanticError("a label must differ from terminal symbols or non-terminal symbols") - semErrDirInvalidName = newSemanticError("invalid directive name") - semErrDirInvalidParam = newSemanticError("invalid parameter") - semErrDuplicateDir = newSemanticError("a directive must not be duplicated") - semErrDuplicateElem = newSemanticError("duplicate element") - semErrAmbiguousElem = newSemanticError("ambiguous element") - semErrInvalidProdDir = newSemanticError("invalid production directive") - semErrInvalidAltDir = newSemanticError("invalid alternative directive") + semErrNoGrammarName = errors.New("name is missing") + semErrSpellingInconsistency = errors.New("the identifiers are treated as the same. please use the same spelling") + semErrDuplicateAssoc = errors.New("associativity and precedence cannot be specified multiple times for a symbol") + semErrUndefinedPrec = errors.New("symbol must has precedence") + semErrUndefinedOrdSym = errors.New("undefined ordered symbol") + semErrUnusedProduction = errors.New("unused production") + semErrUnusedTerminal = errors.New("unused terminal") + semErrTermCannotBeSkipped = errors.New("a terminal used in productions cannot be skipped") + semErrNoProduction = errors.New("a grammar needs at least one production") + semErrUndefinedSym = errors.New("undefined symbol") + semErrDuplicateProduction = errors.New("duplicate production") + semErrDuplicateTerminal = errors.New("duplicate terminal") + semErrDuplicateFragment = errors.New("duplicate fragment") + semErrDuplicateName = errors.New("duplicate names are not allowed between terminals and non-terminals") + semErrErrSymIsReserved = errors.New("symbol 'error' is reserved as a terminal symbol") + semErrDuplicateLabel = errors.New("a label must be unique in an alternative") + semErrInvalidLabel = errors.New("a label must differ from terminal symbols or non-terminal symbols") + semErrDirInvalidName = errors.New("invalid directive name") + semErrDirInvalidParam = errors.New("invalid parameter") + semErrDuplicateDir = errors.New("a directive must not be duplicated") + semErrDuplicateElem = errors.New("duplicate element") + semErrAmbiguousElem = errors.New("ambiguous element") + semErrInvalidProdDir = errors.New("invalid production directive") + semErrInvalidAltDir = errors.New("invalid alternative directive") ) |