mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	* grammars: Update several grammars with compat issues * [WIP] Add new grammar conversion tools * Wrap in a Docker script * Proper Dockerfile support * Add Javadoc grammar * Remove NPM package.json * Remove superfluous test This is now always checked by the grammars compiler * Update JSyntax grammar to new submodule * Approve Javadoc license * grammars: Remove checked-in dependencies * grammars: Add regex checks to the compiler * grammars: Point Oz to its actual submodule * grammars: Refactor compiler to group errors by repo * grammars: Cleanups to error reporting
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package compiler
 | |
| 
 | |
| import "fmt"
 | |
| import "strings"
 | |
| 
 | |
| type ConversionError struct {
 | |
| 	Path string
 | |
| 	Err  error
 | |
| }
 | |
| 
 | |
| func (err *ConversionError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Grammar conversion failed. File `%s` failed to parse: %s",
 | |
| 		err.Path, err.Err)
 | |
| }
 | |
| 
 | |
| type DuplicateScopeError struct {
 | |
| 	Original  *Repository
 | |
| 	Duplicate string
 | |
| }
 | |
| 
 | |
| func (err *DuplicateScopeError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Duplicate scope in repository: scope `%s` was already defined in %s",
 | |
| 		err.Duplicate, err.Original)
 | |
| }
 | |
| 
 | |
| type MissingScopeError struct {
 | |
| 	Scope string
 | |
| }
 | |
| 
 | |
| func (err *MissingScopeError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Missing scope in repository: `%s` is listed in grammars.yml but cannot be found",
 | |
| 		err.Scope)
 | |
| }
 | |
| 
 | |
| type UnexpectedScopeError struct {
 | |
| 	File  *LoadedFile
 | |
| 	Scope string
 | |
| }
 | |
| 
 | |
| func (err *UnexpectedScopeError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Unexpected scope in repository: `%s` declared in %s was not listed in grammars.yml",
 | |
| 		err.Scope, err.File)
 | |
| }
 | |
| 
 | |
| type MissingIncludeError struct {
 | |
| 	File    *LoadedFile
 | |
| 	Include string
 | |
| }
 | |
| 
 | |
| func (err *MissingIncludeError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Missing include in grammar: %s attempts to include `%s` but the scope cannot be found",
 | |
| 		err.File, err.Include)
 | |
| }
 | |
| 
 | |
| type UnknownKeysError struct {
 | |
| 	File *LoadedFile
 | |
| 	Keys []string
 | |
| }
 | |
| 
 | |
| func (err *UnknownKeysError) Error() string {
 | |
| 	var keys []string
 | |
| 	for _, k := range err.Keys {
 | |
| 		keys = append(keys, fmt.Sprintf("`%s`", k))
 | |
| 	}
 | |
| 
 | |
| 	return fmt.Sprintf(
 | |
| 		"Unknown keys in grammar: %s contains invalid keys (%s)",
 | |
| 		err.File, strings.Join(keys, ", "))
 | |
| }
 | |
| 
 | |
| type InvalidRegexError struct {
 | |
| 	File *LoadedFile
 | |
| 	Err  error
 | |
| }
 | |
| 
 | |
| func (err *InvalidRegexError) Error() string {
 | |
| 	return fmt.Sprintf(
 | |
| 		"Invalid regex in grammar: %s contains a malformed regex (%s)",
 | |
| 		err.File, err.Err)
 | |
| }
 |