annotate src/tac.go @ 7:f4ba4cfb09fd

entai_app: abbreviration paid date.
author pyon@macmini
date Fri, 28 Oct 2016 20:41:34 +0900
parents de451fa0c9cd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
1 package main
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
2
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
3 import (
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
4 "bufio"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
5 "flag"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
6 "fmt"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
7 "os"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
8 )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
9
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
10 func main() {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
11 flag.Parse()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
12
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
13 files := flag.Args()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
14
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
15 var lines []string
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
16
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
17 // Input
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
18 if len( files ) == 0 {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
19 lines = ReverseLines( os.Stdin, nil )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
20 } else {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
21 for _, arg := range files {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
22 f, err := os.Open( arg )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
23 if err != nil {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
24 fmt.Fprintf( os.Stderr, "tac : %v\n", err )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
25 continue
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
26 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
27 l := ReverseLines( f, nil )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
28 f.Close()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
29 lines = append( lines, l... )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
30 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
31 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
32
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
33 // Output
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
34 for _, line := range lines {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
35 fmt.Println( line )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
36 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
37 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
38
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
39 func ReverseLines( f *os.File, l []string ) []string {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
40 input := bufio.NewScanner( f )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
41 for input.Scan() {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
42 l = append( l, input.Text() )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
43 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
44 for i, j := 0, len(l) - 1; i < j; i, j = i + 1, j - 1 {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
45 l[i], l[j] = l[j], l[i]
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
46 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
47 return l
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
48 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
49