view modules/compiler.tp @ 256:03a07e540b9f

Memoize results of match:where:yield and matchOne: macros. Fix opsym rule to use the symbol ast node.
author Michael Pavone <pavone@retrodev.com>
date Sun, 01 Jun 2014 00:14:36 -0700
parents 004946743678
children
line wrap: on
line source

#{
	main <- :args {
		if: (args length) > 1 {
			file <- os open: (args get: 1) (os O_RDONLY)

			code <- ""
			chunksize <- 1024
			readsize <- chunksize
			while: { readsize = chunksize} do: {
				seg <- os read: file chunksize
				code <- code . seg
				readsize <- seg byte_length
			}
			res <- parser top: code
			if: res {
				methods <- symbols buildMethodTable: (res yield)
				print: methods
			} else: {
				print: "Parse failed!\n"
			}
		} else: {
			print: "Usage compiler FILE\n"
		}
	}
}