aboutsummaryrefslogtreecommitdiff
path: root/grammar/semantic_error.go
diff options
context:
space:
mode:
Diffstat (limited to 'grammar/semantic_error.go')
-rw-r--r--grammar/semantic_error.go62
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")
)