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

     1  package expressions
     2  
     3  import "github.com/lmorg/murex/utils/lists"
     4  
     5  var tokeniseCurlyBraceCommands = []string{
     6  	"if", "!if",
     7  	"foreach", "formap",
     8  	"switch",
     9  }
    10  
    11  func (tree *ParserT) tokeniseCurlyBrace() bool {
    12  	if tree.statement == nil {
    13  		return false
    14  	}
    15  	return lists.Match(tokeniseCurlyBraceCommands, string(tree.statement.command))
    16  }
    17  
    18  func (tree *ParserT) tokeniseScalar() bool {
    19  	if tree.statement == nil || len(tree.statement.paramTemp) != 0 {
    20  		return true
    21  	}
    22  
    23  	switch string(tree.statement.command) {
    24  
    25  	case "set", "global", "export",
    26  		"!set", "!global", "!export", "unset":
    27  		if len(tree.statement.parameters) == 0 {
    28  			return false
    29  		}
    30  
    31  	case "foreach":
    32  		if len(tree.statement.parameters) == 0 {
    33  			return false
    34  		}
    35  		if len(tree.statement.parameters) == 1 {
    36  			s := string(tree.statement.parameters[0])
    37  			if s == "--jmap" || s == "--step" {
    38  				return false
    39  			}
    40  		}
    41  
    42  	case "formap":
    43  		if len(tree.statement.parameters) == 0 {
    44  			return false
    45  		}
    46  		if len(tree.statement.parameters) == 1 {
    47  			s := string(tree.statement.parameters[0])
    48  			if s == "--jmap" {
    49  				return false
    50  			}
    51  		}
    52  
    53  	case "is-null":
    54  		return false
    55  	}
    56  
    57  	return true
    58  }