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
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
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
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
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
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
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
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
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