1
0
mirror of https://github.com/golang/go synced 2024-11-26 21:11:57 -07:00
Commit Graph

425 Commits

Author SHA1 Message Date
Robert Griesemer
cb67a8324b - fine-tuning of white space
- by default consider extra newlines in src for better formatting
- additional flags for control (-newlines, -maxnewlines, -optsemicolons)
- don't print ()'s around single anonymous result types

Status: Comparing the output of pretty with the input for larger files
shows mostly whitespace/formatting differences, which is what is desired.

TODO:
- Handling of overlong lines
- some esoteric cases which look funny

R=r
OCL=20293
CL=20293
2008-12-02 16:49:44 -08:00
Ian Lance Taylor
748287d49e The flag and fmt libraries are now available from gccgo by
default.  Fix PRETTY_OBJS to include compilation.o rather than
compilation.go.

R=gri
DELTA=10  (0 added, 8 deleted, 2 changed)
OCL=20248
CL=20257
2008-12-02 12:52:47 -08:00
Robert Griesemer
37bdd3c3f5 - enabled comment printing by default
- changed tab width to 8 chars by default to make test run properly
- excluded 4 files that are not idempotently printed
- fixed a couple of incorrect file position recordings in parser
- fine-tuned layout engine
- white-space formatting reasonable, but not perfect
- no handling of overlong lines
R=r

To use with smaller tabs:           pretty -tabwidth=4 file.go
To use with blanks instead of tabs: pretty -usetabs=0 file.go

OCL=20184
CL=20184
2008-12-01 17:20:59 -08:00
Robert Griesemer
8bbd873c34 - better comment formatting, starting to look good
- comment printing still disabled by default because idempotency test fails
- whitespace control better but not perfect yet
- snapshot before making some heuristics changes

R=r
OCL=20151
CL=20151
2008-12-01 14:03:20 -08:00
Robert Griesemer
d79f687ed8 - collect addition source position information in parser
for end of declarations, blocks, parameter lists, etc.
- use extra src positions to more accurately print comments
- fine-tuned low-level printing routine for comments
- added better debugging support

Status:
- comments now appear at the right place (inbetween the right tokens)
- newline control needs improvement (not very hard)
- comment printing disabled for now because pretty is not idempotent
with it; to enable: -comments

R=r
OCL=20079
CL=20079
2008-11-26 17:07:45 -08:00
Robert Griesemer
732b53a1fe - snapshot of state before trying yet another, hopefully better working
way to integrate comments into the generated output
- various simplificatins and cleanups throughout

R=r
OCL=20062
CL=20062
2008-11-26 13:23:26 -08:00
Robert Griesemer
b1297aa04f - move error handling out of scanner
- use more of the existing library code

R=r
OCL=19957
CL=19959
2008-11-24 18:24:21 -08:00
Robert Griesemer
130e6f42f1 - implemented arbitrary padding char for tabwriter
- implemented right-to-left alignment (numerical results)
- better comments and error handling
- added more tests
- updated dependent files

R=r
DELTA=232  (175 added, 11 deleted, 46 changed)
OCL=19761
CL=19780
2008-11-21 09:35:49 -08:00
Robert Griesemer
01b44bbfc8 - move tabwriter into library
- added preliminary tests (more to do)
- renamed type from TabWriter -> Writer
- adjusted my code where necessary

R=r
DELTA=825  (474 added, 346 deleted, 5 changed)
OCL=19744
CL=19753
2008-11-20 17:39:41 -08:00
Robert Griesemer
0998eaf4a1 - correct error handling throughout
- documentation, cleanups
- more options

R=r
OCL=19736
CL=19736
2008-11-20 16:26:43 -08:00
Robert Griesemer
fcdcf33a71 - array-ify code, remove local implementation
R=r
OCL=19648
CL=19651
2008-11-19 16:49:50 -08:00
Robert Griesemer
34533f06eb - support for alignment via tabs instead of blanks
- exclude a test due to syntax errors

R=r
OCL=19563
CL=19565
2008-11-18 19:25:43 -08:00
Robert Griesemer
127c65b400 - untab app (snapshot - not quite complete)
R=r
OCL=19558
CL=19558
2008-11-18 18:44:17 -08:00
Robert Griesemer
654bc2badc - factored out tabwriter a separate writer filter
(to be moved into std lib eventually)
- rewrote tabwriter to use byte buffers instead of strings
  (byte buffers to be moved into stdlib eventually)
- support for recent syntax changes
- no space printed after function name and before function parameters
- comments still disabled due to a known bug

R=r
OCL=19430
CL=19430
2008-11-17 19:58:52 -08:00
Russ Cox
75647d2024 First pieces of malloc.
R=r
DELTA=756  (754 added, 0 deleted, 2 changed)
OCL=19266
CL=19378
2008-11-17 12:32:35 -08:00
Robert Griesemer
22e0e1b049 - better comment classification
- related cleanups

R=r
OCL=19227
CL=19227
2008-11-13 19:06:57 -08:00
Robert Griesemer
3c2f0ae132 * pretty printing snapshot: towards printing comments nicely
- implemented elastic tabstops algorithm, now correct and documented
- first cut at printing comments (use -comments flag, disabled for now)
- struct field types are now aligned (using elastic tab stops)
- needs more fine-tuning

* fixed a bug in test script
* added quick smoke test to makefile and invoke it in run.bash
  instead of the full test

R=r
OCL=19220
CL=19220
2008-11-13 17:50:46 -08:00
Robert Griesemer
2a58e7d7a0 more work on elastic tabs:
- new code enabled, but no comments printed yet (so the effect
  of the elastic tabs is not seen yet)

TBR=r
DELTA=200  (93 added, 69 deleted, 38 changed)
OCL=18951
CL=18951
2008-11-10 17:56:46 -08:00
Robert Griesemer
a3b4a3c29d - steps towards "flexible tab stops" simulation in pretty
printing output
- not yet enabled

R=r
OCL=18842
CL=18842
2008-11-07 18:30:58 -08:00
Robert Griesemer
b3c983f3a0 - fixed typo in parser.go
- re-enabled bug118.go for pretty

R=r
OCL=18604
CL=18604
2008-11-05 16:05:36 -08:00
Robert Griesemer
11a3f759fd - temporarily excluding bug118.go, causing pretty trouble
R=r
OCL=18602
CL=18602
2008-11-05 15:55:51 -08:00
Robert Griesemer
17596948e3 get rid of bignum leftovers
R=r
OCL=18475
CL=18475
2008-11-04 14:08:47 -08:00
Robert Griesemer
e2eccf3bd0 install bignum as library
R=r
DELTA=3501  (1752 added, 1749 deleted, 0 changed)
OCL=18460
CL=18471
2008-11-04 13:55:18 -08:00
Robert Griesemer
e2fe2f3f23 - better support for string conversions
- removed trailing tabs

R=r
OCL=18458
CL=18458
2008-11-04 11:37:19 -08:00
Robert Griesemer
7cd11c1c09 - completed integer support (some logical functions missing)
- completed rational support
- better documentation
- more tests
- cleanups

R=r
OCL=18438
CL=18438
2008-11-04 09:33:15 -08:00
Robert Griesemer
78b0013a07 - changed general div/mod implementation to a faster algorithm
(operates on 30bit values at a time instead of 20bit values)
- refactored and cleaned up lots of code
- more tests
- close to check-in as complete library

R=r
OCL=18326
CL=18326
2008-11-03 09:21:10 -08:00
Robert Griesemer
db27d309d1 - gcd, exponentiation, population count
- more rational numbers stuff
- more tests

R=r
OCL=18295
CL=18295
2008-10-31 16:58:56 -07:00
Robert Griesemer
42ae5270d8 - handle field tags in pretty printer
R=r
OCL=18264
CL=18264
2008-10-31 14:27:34 -07:00
Robert Griesemer
00dc6e9678 - fixed another test (arithmetic vs. logic shift bug)
R=r
OCL=18235
CL=18237
2008-10-31 10:52:59 -07:00
Robert Griesemer
afad827255 - div and mod (arbitrary precision)
- more tests
- some global renames

R=r
OCL=18219
CL=18219
2008-10-30 23:37:34 -07:00
Robert Griesemer
7112dc1db7 - implemented Shr
- removed shift work-arounds (6g code appears to work now)
- made similar routines more regular in structure
- more tests

R=r
OCL=18102
CL=18102
2008-10-29 22:05:42 -07:00
Robert Griesemer
276ffd297d - added shl operation, extra tests
- fixed code so it works with any base between 9 and 64
- work-around for 6g shift problems in various places

R=r
OCL=18080
CL=18080
2008-10-29 16:48:53 -07:00
Robert Griesemer
0ed4576c6a - update test.sh (caused an error since src/pkg dir is empty now)
R=r
OCL=17987
CL=17987
2008-10-28 20:20:55 -07:00
Robert Griesemer
379b5a3921 - steps towards implementation of div and mod
- string conversion in different bases
- tracked down a 6g bug, use work-around for now

R=r
OCL=17981
CL=17981
2008-10-28 18:42:26 -07:00
Robert Griesemer
1daad03545 - bug fixes, cleanups
- integer string conversion

R=r
OCL=17923
CL=17923
2008-10-27 17:57:31 -07:00
Robert Griesemer
2e777b44b8 - created staging area for getting bignum package up-to-speed again,
now using up-to-date language features
- moved old code away from pkg (defunct anyway because of language changes)

R=r
OCL=17916
CL=17916
2008-10-27 15:44:32 -07:00
Robert Griesemer
eba73552d2 - added simple facility to print Makefile dependency rules given a Go source file
(e.g.: pretty -d pretty.go will print the Makefile dep. rules of the involved
  Go files that are not part of the installed library)
- minor fix in pretty printer (tested against ken's test files)

R=r
OCL=17872
CL=17872
2008-10-26 21:32:30 -07:00
Ken Thompson
b379d54dea another step toward interface subtypes
put explicit ./ on some runtime tests

R=r
OCL=17839
CL=17839
2008-10-24 20:14:28 -07:00
Robert Griesemer
63ed2b710b - missing file
R=r
OCL=17813
CL=17813
2008-10-24 14:08:01 -07:00
Robert Griesemer
cec64a2dd5 - some factoring of scan/parse phase so we can attach other functionality
easily (for instance import dependency extraction)
- support for new "..." syntax
- minor cleanup

R=r
OCL=17811
CL=17811
2008-10-24 14:04:54 -07:00
Robert Griesemer
816c1cefff - expanded parsing heuristics to deal with new(T, ...)
- fixed an issue with select
- added all bugs and fixedbugs tests that are syntactically correct to the test suite
- minor cosmetic changes

R=r
OCL=17759
CL=17759
2008-10-23 17:56:54 -07:00
Rob Pike
5d30161ca7 move reflection code into final place.
this is just a branch.
next cl will update and add to build

R=rsc
DELTA=4528  (2264 added, 2264 deleted, 0 changed)
OCL=17670
CL=17672
2008-10-22 17:12:07 -07:00
Rob Pike
34b8873722 Reflection values.
R=rsc
DELTA=206  (79 added, 25 deleted, 102 changed)
OCL=17652
CL=17669
2008-10-22 16:48:17 -07:00
Rob Pike
0061e56196 Add names to types to avoid recursive explosion and to get
the right answer when a type name redefines an existing type.

R=rsc
DELTA=133  (53 added, 8 deleted, 72 changed)
OCL=17637
CL=17639
2008-10-22 13:02:43 -07:00
Robert Griesemer
79985fa569 - exclude newfn.go from tests - cannot be parsed syntactically alone
in general

R=rsc
DELTA=2  (1 added, 0 deleted, 1 changed)
OCL=17624
CL=17624
2008-10-22 11:27:18 -07:00
Rob Pike
fac3dfe638 More reflection code.
Beginnings of values.
typestrings are grabbed from the environment.

R=rsc
APPROVED=rsc
DELTA=1046  (952 added, 3 deleted, 91 changed)
OCL=17593
CL=17621
2008-10-22 11:02:56 -07:00
Robert Griesemer
71d6cda6b2 - remove inconsistent directory from tests
R=rsc
DELTA=1  (0 added, 1 deleted, 0 changed)
OCL=17514
CL=17514
2008-10-20 17:37:48 -07:00
Robert Griesemer
baac04b518 enable tests that verify that pretty-printed code can be compiled with 6g again
R=r
OCL=17510
CL=17510
2008-10-20 17:13:02 -07:00
Robert Griesemer
9d20c85ae9 - fixed missing parens in some cases of unary expressions
- added validation test verifying that pretty output compiles with 6g again (disabled at the moment)
- replaced another recursive function with an interative solution

R=r
OCL=17505
CL=17505
2008-10-20 16:44:03 -07:00
Robert Griesemer
5d0e5a7867 - use stringtorune library function for faster rune scanning
- converted 2 right-recursive parsing functions into iterative versions
- renamed node.go -> ast.go (clearer)

R=r
OCL=17496
CL=17498
2008-10-20 15:03:40 -07:00
Robert Griesemer
a11d5aecb8 - removed double-declaration of len()
R=r
OCL=17463
CL=17463
2008-10-20 12:51:18 -07:00
Robert Griesemer
6440c59e22 - removed need for lhs field in stat node
- as a result deleted some more code

R=r
OCL=17449
CL=17449
2008-10-20 10:01:34 -07:00
Robert Griesemer
52e9080d56 - simplified parsing of composite literals and slices by
treating ":" as lowest-level binary operator
- more precise error message for composites
- added flag -columns (false) - when set, prints precise error column
- a few more tests

R=r
OCL=17428
CL=17428
2008-10-18 20:20:30 -07:00
Robert Griesemer
e45eb60657 Added mechanism for very precise self-testing:
- in selftest mode (-t) interpret comments of the form /* ERROR */ and /* SYNC */
  and validate reported errors with the error markings in a file
- added initial selftest.go file

Also:
- fixed an issue with empty blocks
- generally report better error messages
- added many more tests to the test script (essentially all .go programs which
  have no syntax errors)

R=r
OCL=17426
CL=17426
2008-10-18 16:42:25 -07:00
Rob Pike
265e73ee14 beginnings of reflection values.
R=rsc
DELTA=421  (357 added, 17 deleted, 47 changed)
OCL=17388
CL=17401
2008-10-17 18:06:29 -07:00
Robert Griesemer
071e963e0e - fixed bug that wasn't caught by 6g (but by gccgo)
R=r
DELTA=1  (0 added, 0 deleted, 1 changed)
OCL=17380
CL=17380
2008-10-17 16:27:49 -07:00
Robert Griesemer
f39b518bcb - fixed a couple of corner cases (empty statements, empty composites)
- more robust printing in presence of errors
- fixed incorrect printing of function literals

R=r
OCL=17378
CL=17378
2008-10-17 16:19:31 -07:00
Rob Pike
cac904b609 add simple synchronization mechanism.
R=rsc
DELTA=25  (19 added, 1 deleted, 5 changed)
OCL=17346
CL=17346
2008-10-17 10:58:34 -07:00
Robert Griesemer
61d9a3c3b0 - stronger syntax checks
- fixed a bug with non-eof terminated //-style comments
- collecting comments
- first experiments with reproducing comments
  (works but not very pretty, disabled for now)
- idempotent for all correct .go files we have checked in

R=r
OCL=17333
CL=17333
2008-10-16 23:30:42 -07:00
Robert Griesemer
c4f9f369a6 - added test script
- fixed a couple of printing bugs
status: parses, reproduces, and idempotently reproduces all correct .go files

R=r
OCL=17332
CL=17332
2008-10-16 19:24:33 -07:00
Rob Pike
060f157dc8 type string parser; now handles all types
R=rsc
DELTA=253  (153 added, 81 deleted, 19 changed)
OCL=17331
CL=17331
2008-10-16 18:09:38 -07:00
Rob Pike
32b84d5a94 parsing of type strings. still missing: func, struct, interface, chan
R=rsc
DELTA=366  (337 added, 7 deleted, 22 changed)
OCL=17321
CL=17324
2008-10-16 16:38:33 -07:00
Robert Griesemer
bc641d1e9c - more robust TokenString implementation
R=r
OCL=17319
CL=17319
2008-10-16 15:28:36 -07:00
Robert Griesemer
3c9b817257 snapshot:
- typeguards, var decls, several printing bug fixed
- now fully idempotent on many files (which are accepted by 6g afterwards)
- still some detail issues

R=r
OCL=17310
CL=17310
2008-10-16 14:25:23 -07:00
Robert Griesemer
b705ac6cf5 - composites, receivers, various add. checks
R=r
OCL=17295
CL=17295
2008-10-16 12:16:50 -07:00
Rob Pike
082f116b2d Change file name from "print" to "tostring" and update the rest.
R=rsc
DELTA=225  (109 added, 107 deleted, 9 changed)
OCL=17294
CL=17294
2008-10-16 11:19:48 -07:00
Rob Pike
e5c114eff8 convert print to ToString.
file name change in next round.

R=rsc
DELTA=71  (18 added, 19 deleted, 34 changed)
OCL=17291
CL=17293
2008-10-16 11:12:02 -07:00
Robert Griesemer
a09b7fdd6c snapshot:
- fallthrough stat, label decls
- improved printing layout

R=r
OCL=17283
CL=17283
2008-10-16 10:16:59 -07:00
Robert Griesemer
237eea4ea5 - updated makefile for gccgo
R=r
OCL=17243
CL=17245
2008-10-15 17:13:00 -07:00
Rob Pike
693a31b88e reflection type structure. no parsing etc. yet.
main is a simple tester outside the Makefile.

R=rsc
DELTA=455  (455 added, 0 deleted, 0 changed)
OCL=17235
CL=17242
2008-10-15 17:11:51 -07:00
Robert Griesemer
6b49713df5 snapshot of pretty printer:
- almost there, receivers, labels, composites, comments are not yet printed
- runs through 18KLOC of Go code and prints it again

R=r
OCL=17237
CL=17237
2008-10-15 17:06:28 -07:00
Robert Griesemer
82fbbdfc7d snapshot
- fixed expression and statement printing
- missing: declarations, comments

R=r
OCL=17207
CL=17207
2008-10-15 11:48:18 -07:00
Rob Pike
69baaa9751 move regexp to lib
next cl will update names and add to build

R=rsc
DELTA=1876  (938 added, 938 deleted, 0 changed)
OCL=17149
CL=17166
2008-10-14 19:22:17 -07:00
Robert Griesemer
7c3a2c47b0 - snapshot of pretty printer work
- accepts all Go code (use -s flag)
- complete rewrite of AST, AST building, and printing
  (as a result much more compact)
- printing severely screwed up at the moment, but should be
  fully working in 1 more day

R=r
DELTA=2118  (514 added, 980 deleted, 624 changed)
OCL=17161
CL=17161
2008-10-14 18:14:01 -07:00
Rob Pike
0b05e91f8b add some tests
fix some bugs in () ordering and rune processing

R=rsc
DELTA=72  (27 added, 5 deleted, 40 changed)
OCL=17147
CL=17147
2008-10-14 17:45:49 -07:00
Rob Pike
75df21ceff implement matching
clean up interface equality hack

still needs more tests; checking in for gccgo testing

R=rsc
DELTA=304  (261 added, 14 deleted, 29 changed)
OCL=17128
CL=17135
2008-10-14 16:32:43 -07:00
Rob Pike
e8828dcbe1 add character classes.
allocate into an array for easier scanning and printing.

R=rsc
DELTA=282  (193 added, 44 deleted, 45 changed)
OCL=16955
CL=16955
2008-10-11 16:48:05 -07:00
Rob Pike
0f0648d33c convert from integer indexes to interface variables.
update printing.

R=rsc
DELTA=194  (60 added, 41 deleted, 93 changed)
OCL=16942
CL=16945
2008-10-10 18:42:19 -07:00
Robert Griesemer
89319cfbf9 - implemented heuristic for composite literals starting with a type name:
if in a if, for, or switch header, must be parenthesized
- implemented string concatenation
- simplified a lot of code
- added many more tests: can now parse all *.go files I got my hands on
- printing output currently broken in some cases, use with -s (silent) option

R=r
OCL=16932
CL=16934
2008-10-10 16:03:32 -07:00
Rob Pike
41c462c0a1 cat unmatched )
delete unused This() in preparation for removing linking via array indexes

R=rsc
DELTA=26  (2 added, 23 deleted, 1 changed)
OCL=16895
CL=16909
2008-10-10 12:41:43 -07:00
Rob Pike
8f5b277cac beginnings of regular expression library.
will move elsewhere when more complete.
parses, does not execute.
no character classes yet.

R=rsc
DELTA=522  (522 added, 0 deleted, 0 changed)
OCL=16863
CL=16874
2008-10-09 19:40:53 -07:00
Robert Griesemer
583dac04e3 - more cleanups (simpler code for optional semi's, bug fixes)
R=r
OCL=16869
CL=16869
2008-10-09 18:03:16 -07:00
Robert Griesemer
638233a7d6 - don't allow empty decl lists (e.g. const ())
R=r
OCL=16698
CL=16698
2008-10-07 18:30:08 -07:00
Robert Griesemer
44dffd92fc - accept new semicolon syntax (at the moment,
the parser accepts a bit more then it should)

R=r
OCL=16694
CL=16694
2008-10-07 17:57:19 -07:00
Russ Cox
e6cd1e445b remove uses of *T as an implicit forward declaration of T
R=gri,r
OCL=16648
CL=16652
2008-10-07 12:59:54 -07:00
Russ Cox
983f06bdb6 update code to follow new semicolon rules:
*  1. all statements and declarations are terminated by semicolons
 *  2. semicolons can be omitted at top level.
 *  3. semicolons can be omitted before and after the closing ) or }
 *	on a list of statements or declarations.

/home/rsc/bin/addsemi and then diff+tweak.

R=r,gri
OCL=16620
CL=16643
2008-10-07 12:31:31 -07:00
Robert Griesemer
4fb6064c11 - fixed Makefile, added more tests
- fixed parsing of parameter lists (sigh)

R=r
DELTA=48  (22 added, 7 deleted, 19 changed)
OCL=16319
CL=16321
2008-10-01 14:31:44 -07:00
Robert Griesemer
a6400dd448 more fine-tuning of ;'s
R=r
OCL=16274
CL=16274
2008-09-30 19:31:27 -07:00
Robert Griesemer
6349d38ebc - fixed semicolon handling in pretty printer
- some scanner cleanup
- new pretty-printed code can be compiled again (for some files)

R=r
OCL=16272
CL=16272
2008-09-30 18:50:29 -07:00
Robert Griesemer
bf855f5a94 - allow for embeded types in fields, and parameter lists w/o parameter names
- temporary work-around for 6g bug

R=r
OCL=16052
CL=16052
2008-09-27 17:42:18 -07:00
Robert Griesemer
3548350d3e Snapshot.
Added support for function literals, composite literals.
Bug fixes.

R=r
OCL=15911
CL=15911
2008-09-25 17:20:39 -07:00
Robert Griesemer
8415280699 - more missing constructs added
- removed excessive ";"'s
- no ()'s around expressions where not needed
- parser.go now reproduced and parseable again

R=r
OCL=15881
CL=15881
2008-09-25 15:14:26 -07:00
Robert Griesemer
c51195386e snapshot: more pretty printer stuff
R=r
OCL=15863
CL=15863
2008-09-25 11:50:34 -07:00
Robert Griesemer
2a19d7dc42 - added names to result signatures to make it compile with gccgo
- adjusted the makefile to explicitly compile flag.go and fmt.go for gccgo

R=r
OCL=15822
CL=15822
2008-09-24 22:01:52 -07:00
Robert Griesemer
c5a29a6dd4 - more ast buidling and printing
- almost complete language reproduced

R=r
OCL=15801
CL=15801
2008-09-24 15:50:28 -07:00
Robert Griesemer
83267dce11 - added initial formatting: indentation
- more AST nodes built and printed

R=r
OCL=15735
CL=15735
2008-09-23 18:34:17 -07:00
Robert Griesemer
09bed25621 - snapshot of pretty printer status
- parts of AST built and printed
- no formatting yet

R=r
OCL=15727
CL=15727
2008-09-23 16:40:12 -07:00
Robert Griesemer
b390608636 - added gccgo makefile
R=r
OCL=15693
CL=15695
2008-09-23 11:17:44 -07:00
Robert Griesemer
c13c03c261 - first cut at building and printing AST
R=r
OCL=15675
CL=15675
2008-09-22 18:26:12 -07:00
Robert Griesemer
d910e90edd - heuristics for parsing composite literals in some cases
- fixed result parsing of function types

R=r
OCL=15585
CL=15585
2008-09-19 18:06:53 -07:00
Robert Griesemer
bf04eefddf - simplified parser by better factoring
R=r
OCL=15539
CL=15542
2008-09-19 12:12:28 -07:00
Robert Griesemer
26adb31c30 - fix for out-of-bounds error found by rsc
- removed tests that may have wrong Go code from Makefile

R=r
OCL=15532
CL=15532
2008-09-19 10:56:35 -07:00
Robert Griesemer
6e08991eba - fixed another parser bug, now correctly parse more tests
R=r
OCL=15518
CL=15518
2008-09-18 23:30:32 -07:00
Robert Griesemer
2b70c6add3 - fixed old test cases with wrong syntax
- added more test cases to Makefile
- fixed another parser issue (possibly a 6g bug - to be tracked down)

R=r
OCL=15516
CL=15516
2008-09-18 23:09:07 -07:00
Robert Griesemer
a1ee6804dd - fixed bug which prevented parser.go from compiling
(typo in ptr decl lead to an unresolved forward declaration)
- fixed parser bugs
- fixed Makefile
- now successfully parses most code

Issues:
- composite literals (cannot be identified easily from syntax alone)
- new(T, ...) (cannot be identified easily from syntax alone since
  new is not a keyword and thus could be a different function then
  the allocation function at which point "new((x + y))" is legal,
  but the inner "(x" looks like the beginning of a function type)

R=r
OCL=15515
CL=15515
2008-09-18 22:53:54 -07:00
Robert Griesemer
81d7c51837 First cut at a Go pretty printer:
- code scavenged from Go-in-Go front-end (will merge back)
- using "symbol-table" free parsing to build AST
- no printing yet

R=r
OCL=15504
CL=15504
2008-09-18 16:58:37 -07:00
Robert Griesemer
119324d785 - updated printing of chan types
R=r
OCL=15448
CL=15448
2008-09-17 14:26:01 -07:00
Robert Griesemer
a456463891 - changed my scanner/parser to accept new channel syntax
R=r
OCL=15439
CL=15439
2008-09-17 13:05:39 -07:00
Robert Griesemer
e1a9b6ee77 - updated code to work again with latest 6g version
R=r
OCL=15235
CL=15235
2008-09-12 12:09:43 -07:00
Robert Griesemer
0ba1db7475 - fixed missing return issues
R=r
OCL=15168
CL=15168
2008-09-11 15:38:22 -07:00
Robert Griesemer
478090851b - adjust my code and tests to new function syntax
R=r
OCL=14939
CL=14941
2008-09-08 13:26:52 -07:00
Robert Griesemer
30aa83ca6e - adjusted my submitted code to work with latest compiler changes
R=r
OCL=14734
CL=14734
2008-09-02 17:26:00 -07:00
Robert Griesemer
683ded80c9 - changed go-in-go parser to require ()'s for panic and print
- adjusted much of the existing go code
- missing: tests

R=r
DELTA=229  (1 added, 17 deleted, 211 changed)
OCL=14103
CL=14103
2008-08-11 21:20:42 -07:00
Robert Griesemer
58ba20b5a2 - allow reserved words as field and method names
R=r
OCL=14102
CL=14102
2008-08-11 20:40:37 -07:00
Robert Griesemer
40c93a5238 - experiments with forward-declaring types of non-imported packages
- adjusted switch syntax (no repeated case: case: anymore)
- enabled some constant expressions that work now

R=r
OCL=14098
CL=14098
2008-08-11 18:44:41 -07:00
Robert Griesemer
c7fb27f6e4 - more steps towards automatic recursive compilation of dependencies
- make forward declarations of types match 6g
- better factoring

R=r
OCL=14059
CL=14059
2008-08-11 09:45:40 -07:00
Robert Griesemer
bc13a1a374 first primitive cut at resolving missing imports automatically:
if an import file is missing, the corresponding source
is compiled automatically, if found

R=r
OCL=13990
CL=13990
2008-08-07 19:32:22 -07:00
Robert Griesemer
882ac63885 - implement scanner token stream via channel
- change test_scanner to scan using both methods
- add -pscan flag to Go front-end to choose between conventional
  synchronous or parallel asynchronous scanning

R=r
OCL=13937
CL=13937
2008-08-06 18:57:37 -07:00
Robert Griesemer
333b70bee0 snapshot of today's changes - more semantic tests
R=r
OCL=13932
CL=13932
2008-08-06 17:26:46 -07:00
Robert Griesemer
687f387c0b - added more semantic checks - more to come
- distinguish float/int literals syntactically
- fixed a tracing bug

R=r
OCL=13906
CL=13906
2008-08-05 18:52:37 -07:00
Robert Griesemer
28547615ce - fixed another export bug
- more self-verification code

R=r
OCL=13894
CL=13894
2008-08-05 15:20:58 -07:00
Robert Griesemer
7a799be49a - switch to new export syntax
- deprecate old syntax in this front-end (use -6g for compatibility)

R=r
OCL=13831
CL=13833
2008-08-04 15:37:47 -07:00
Robert Griesemer
997a94294f - import/export cleanup: added comments, removed dead code, re-org structure
R=r
OCL=13816
CL=13816
2008-08-04 13:27:05 -07:00
Robert Griesemer
71d50b8bf9 - more import/export stuff
- use new export syntax

R=r
OCL=13807
CL=13807
2008-08-04 10:19:36 -07:00
Robert Griesemer
c6eb85aecf - simplified handling of primary types (types w/ names which must
be canonicalized upon import)
- missed some exports

R=r
OCL=13733
CL=13733
2008-08-01 14:50:18 -07:00
Robert Griesemer
0abbb8c76b more import/export stuff:
- no need to import/export predeclared types
- fix for receiver types
- cleanups
- added tests to Makefile

R=r
OCL=13728
CL=13730
2008-08-01 13:33:31 -07:00
Robert Griesemer
54c8948f7f - added import/export test cases
R=r
OCL=13723
CL=13723
2008-08-01 12:14:15 -07:00
Robert Griesemer
57fcdcca21 fixed bug in FixExt routine
R=r
OCL=13695
CL=13695
2008-07-31 15:35:25 -07:00
Robert Griesemer
9761a6d069 - backward link from objs to containing scope
(first step towards cleaner package handling)
- check that map, function, and channel vars are pointers

R=r
OCL=13690
CL=13690
2008-07-31 13:35:30 -07:00
Robert Griesemer
0c374e9f89 - fixed a bug w/ exports (wrong package info)
- keep track of type alias (type T1 T0) so we can print the proper type name

R=r
OCL=13688
CL=13688
2008-07-31 10:47:10 -07:00
Robert Griesemer
9fb9e82fa3 - added missing file
R=r
OCL=13681
CL=13681
2008-07-30 21:51:25 -07:00
Robert Griesemer
6dd92ea6cb - fixed import bug (import "...")
- better debugging support
- removed dead code

R=r
OCL=13680
CL=13680
2008-07-30 21:26:15 -07:00
Robert Griesemer
1f46513917 various fixes:
- missing return in import code
- proper propagation of flags to various components
- better error message when source position is missing
- cleanups

R=r
OCL=13676
CL=13676
2008-07-30 17:36:03 -07:00
Robert Griesemer
6acdf3edff - addded interface pretty printer
R=r
OCL=13646
CL=13646
2008-07-30 13:01:28 -07:00
Robert Griesemer
4b0b7d8dfe - import and export code, bug fixes
- almost back to where I was in C++, but now all in Go

R=r
OCL=13627
CL=13627
2008-07-29 19:02:49 -07:00
Robert Griesemer
fce9118610 - handling of pointer forward decls
- some comments added to bug cases
- added notes

R=r
OCL=13543
CL=13543
2008-07-29 12:03:06 -07:00
Robert Griesemer
5fc7919147 Experiments with "export":
Allow "export" keyword in front of a declaration. Semantics:
export *top-level* identifiers declared (but not the fields
of a struct type for instance).

R=r
OCL=13464
CL=13464
2008-07-25 11:27:13 -07:00
Robert Griesemer
cf4c37cac3 - more work on SimpleStat production
R=r
OCL=13461
CL=13461
2008-07-25 09:35:03 -07:00
Robert Griesemer
f03deb339a - fixed several parser issues
R=r
OCL=13441
CL=13441
2008-07-24 17:00:58 -07:00
Robert Griesemer
fda1d16935 - parsing support for composite literals
R=r
OCL=13394
CL=13394
2008-07-23 16:59:06 -07:00
Robert Griesemer
b0ada5ddf7 - more work on semantic checks - not yet enabled by default
R=r
OCL=13391
CL=13391
2008-07-23 16:04:11 -07:00
Robert Griesemer
5a90ede8a4 - scanner returns now triple (tok, tok_pos, tok_val)
- initial try-out of AST data structures
- removed test_parser (not working anymore - parser needs more infrastructure)

SVN=128089
2008-07-18 17:18:29 -07:00
Robert Griesemer
e912c18c7c - missing changes from prev. commit
SVN=128064
2008-07-18 14:23:04 -07:00
Robert Griesemer
dead164cc0 - made initial export work
- added code for importing (not tested)
- various fixes

SVN=128061
2008-07-18 14:04:21 -07:00
Robert Griesemer
c3e9c7d106 - more front-end stuff: hooking up packages, preparing for exports
SVN=127931
2008-07-17 18:02:10 -07:00
Robert Griesemer
85303f2715 - moved struct Compilation into globals.go, adjusted deps
- bail out after > 10 errors
- fixed send/recv statements

SVN=127890
2008-07-17 15:11:46 -07:00
Robert Griesemer
d88c759e87 - moved package code into globals.go, adjusted deps
SVN=127887
2008-07-17 14:53:13 -07:00
Robert Griesemer
0e67654f94 - changed channel operators
- more work on packages

SVN=127671
2008-07-16 17:00:48 -07:00
Robert Griesemer
f550cd67e0 - more infrastructure
SVN=127430
2008-07-15 19:59:00 -07:00
Robert Griesemer
a6f87794ff - added more code (package, export, compilation)
- first cut at semantic checks (disabled)

SVN=127348
2008-07-15 15:37:14 -07:00
Robert Griesemer
0cee302802 - func reorg to reduce forward decls and improve structure
SVN=127229
2008-07-15 10:05:17 -07:00
Robert Griesemer
d9d5f3b3bc - fixed issue with parsing function literals in statement lists
SVN=127218
2008-07-15 09:22:20 -07:00
Robert Griesemer
230230c880 - no column info in error messages for Rob
- fixed parsing of function literals
- added first round of scope handling

SVN=127124
2008-07-14 18:06:41 -07:00
Robert Griesemer
fbab6ae9b5 - added universe, universe initialization
- fixed types, added missing exports, etc.

SVN=127104
2008-07-14 16:57:42 -07:00
Robert Griesemer
5a81d1f29f - more go code
SVN=126934
2008-07-11 20:15:12 -07:00
Robert Griesemer
ae905980e7 - fixed bug in parser.go
- added more tests

SVN=126784
2008-07-10 20:50:38 -07:00
Robert Griesemer
bb9d53e570 - added buildtime
SVN=126776
2008-07-10 18:46:30 -07:00
Robert Griesemer
afbf717eeb - created new dir (gosrc) for go-based front-end
- adjusted makefiles

SVN=126763
2008-07-10 18:05:00 -07:00
Robert Griesemer
72772282cd - more frontend pieces in Go
SVN=126744
2008-07-10 17:21:23 -07:00
Robert Griesemer
8be580e20d - improved error handling
SVN=126718
2008-07-10 14:42:33 -07:00
Robert Griesemer
9ec762791e - filed a bug against 6g (bug065.go)
- improved scanner.go error handling

SVN=126706
2008-07-10 13:45:02 -07:00
Robert Griesemer
e4a1fb7e94 - minor bug fix
SVN=126585
2008-07-09 17:08:20 -07:00
Robert Griesemer
6837c5927f - initial better error reporting
SVN=126578
2008-07-09 16:23:48 -07:00
Robert Griesemer
415397e3b7 - replaced recursive parsing of binary expressions with
precedence-based expression parser

SVN=126556
2008-07-09 14:48:26 -07:00
Robert Griesemer
cab94922e7 - completed parser - accepts full language (modulo bugs)
SVN=126551
2008-07-09 14:01:17 -07:00
Robert Griesemer
1e9adf8228 - more fixes to parser
SVN=126511
2008-07-09 10:45:04 -07:00
Robert Griesemer
33069d39b6 - fixed scanner and parser issues to be able to parse math lib
SVN=126501
2008-07-09 10:16:33 -07:00
Robert Griesemer
8e4ee0045f - more work on Go parser
- added tests

SVN=126439
2008-07-08 18:37:31 -07:00
Robert Griesemer
c40be3b1e7 - go parser parses itself
SVN=126408
2008-07-08 16:39:04 -07:00
Robert Griesemer
835cd46941 - first cut a Go parser in Go
SVN=126242
2008-07-07 17:27:14 -07:00
Robert Griesemer
65269ccd3d - more work on Go scanner
SVN=126004
2008-07-03 18:07:03 -07:00
Robert Griesemer
ba25fe80a2 - minor update
SVN=125989
2008-07-03 16:51:22 -07:00
Robert Griesemer
b43ad96ed6 - filed a bug w/ constant evaluation
SVN=125966
2008-07-03 15:16:51 -07:00
Robert Griesemer
ed9743dc3a - more Go scanner work
SVN=125831
2008-07-02 23:19:31 -07:00
Robert Griesemer
85728a2da7 - implemented first cut at Go scanner in Go
SVN=125785
2008-07-02 17:02:55 -07:00