github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/parse_bareword.go (about)

     1  package expressions
     2  
     3  func isBareChar(r rune) bool {
     4  	return r == '_' || r == '.' ||
     5  		(r >= 'a' && 'z' >= r) ||
     6  		(r >= 'A' && 'Z' >= r) ||
     7  		(r >= '0' && '9' >= r)
     8  }
     9  
    10  func (tree *ParserT) parseBareword() []rune {
    11  	i := tree.charPos + 1
    12  
    13  	for ; i < len(tree.expression); i++ {
    14  		switch {
    15  		case isBareChar(tree.expression[i]):
    16  			// valid bareword character
    17  
    18  		default:
    19  			// not a valid bareword character
    20  			goto endBareword
    21  		}
    22  	}
    23  
    24  endBareword:
    25  	value := tree.expression[tree.charPos:i]
    26  	tree.charPos = i
    27  	return value
    28  }