Tuesday, May 4, 2010

Test for the Go syntax highlighter

I got some feedback from the Go Nuts mailing list, particularly from Russ Cox who pointed out that predefined identifiers like true, nil, int, and float are not reserved keywords.  So I decided to have two kinds of highlighted keywords:
  1. those that start a type or start a declaration, including for packages:
    struct func interface map chan package import type const var
  2. those that control the flow of the code:
    goto break continue if else switch default case for range go select return fallthrough defer

Then I use the code from $GOROOT/test/rename.go and rename1.go to see the effect of this color scheme:
// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import "fmt"

func main() {
   n :=
      bool +
         byte +
         float +
         float32 +
         float64 +
         int +
         int8 +
         int16 +
         int32 +
         int64 +
         uint +
         uint8 +
         uint16 +
         uint32 +
         uint64 +
         uintptr +
         true +
         false +
         iota +
         nil +
         cap +
         len +
         make +
         new +
         panic +
         print +
         println
   if n != 27*28/2 {
      fmt.Println("BUG: wrong n", n, 27*28/2)
   }

   var n byte       // ERROR "not a type|expected type"
   var y = float(0) // ERROR "cannot call|expected function"
   const (
      a = 1 + iota // ERROR "string|incompatible types"
   )
}

const (
   bool    = 1
   byte    = 2
   float   = 3
   float32 = 4
   float64 = 5
   int     = 6
   int8    = 7
   int16   = 8
   int32   = 9
   int64   = 10
   uint    = 11
   uint8   = 12
   uint16  = 13
   uint32  = 14
   uint64  = 15
   uintptr = 16
   true    = 17
   false   = 18
   iota    = 19
   nil     = 20
   cap     = 21
   len     = 22
   make    = 23
   new     = 24
   panic   = 25
   print   = 26
   println = 27
)

In the end, if it doesn't suit your aesthetic tastes, you could always download the script and tweak it.

1 comment:

  1. Good information about the test for go syntax highlighter blog. A showcase of different applications which are quite ready to convince you to hire Developer from our esteemed company.

    Mobile Application Development
    DevOps Solutions
    MVP Development
    Hire Reat Native Developer
    Hire Android Developer
    Hire Golang Developer

    ReplyDelete