# Package clauses package main ==> SourceFile(PackageClause(package,DefName)) # Single import declarations import "net/http" import . "some/dsl" import _ "os" import alias "some/package" ==> SourceFile( ImportDecl(import,ImportSpec(String)), ImportDecl(import,ImportSpec(".",String)), ImportDecl(import,ImportSpec(DefName,String)), ImportDecl(import,ImportSpec(DefName,String))) # Grouped import declarations import() import ("fmt") import ( "net/http" . "some/dsl" _ "os" alias "some/package" ) ==> SourceFile( ImportDecl(import,SpecList), ImportDecl(import,SpecList(ImportSpec(String))), ImportDecl(import,SpecList( ImportSpec(String), ImportSpec(".",String), ImportSpec(DefName,String), ImportSpec(DefName,String)))) # Block comments /* * This is a great package */ ==> SourceFile(BlockComment) # Comments with asterisks /* a */ const a /* b **/ const b /* c ***/ const c /* d ***/ const d ==> SourceFile( BlockComment, ConstDecl(const,ConstSpec(DefName)), BlockComment, ConstDecl(const,ConstSpec(DefName)), BlockComment, ConstDecl(const,ConstSpec(DefName)), BlockComment, ConstDecl(const,ConstSpec(DefName))) # Non-ascii variable names const ( α Α µs // micro sign (not mu) δ1 ΔΔΔ ω_omega Ω_OMEGA ) ==> SourceFile(ConstDecl(const,SpecList( ConstSpec(DefName), ConstSpec(DefName), ConstSpec(DefName),LineComment, ConstSpec(DefName), ConstSpec(DefName), ConstSpec(DefName), ConstSpec(DefName))))