---input---
def<=>(other : self) : Int
{%for field in %w(first_name middle_name last_name)%}
cmp={{field.id}}<=>other.{{field.id}}
return cmp if cmp!=0
{%end%}
0
end

---tokens---
'def'         Keyword
'<=>'         Name.Function
'('           Punctuation
'other'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'self'        Keyword
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int'         Name
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
'for'         Keyword
' '           Text.Whitespace
'field'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'%w('         Literal.String.Other
'first_name middle_name last_name' Literal.String.Other
')'           Literal.String.Other
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'cmp'         Name
'='           Operator
'{{'          Literal.String.Interpol
'field'       Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'<=>'         Operator
'other'       Name
'.'           Operator
'{{'          Literal.String.Interpol
'field'       Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n'          Text.Whitespace

'return'      Keyword
' '           Text.Whitespace
'cmp'         Name
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cmp'         Name
'!='          Operator
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
'end'         Keyword
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace
