All pastes #369031 Raw Edit

Something

public ruby v1 · immutable
#369031 ·published 2007-02-23 15:01 UTC
rendered paste body
class Calcp  prechigh    nonassoc UMINUS    nonassoc '@'    nonassoc '!'    left '^'    left '*' '/' '%'    left '+' '-'    left '>' '<' GEQ LEQ EQL NEQL    left '|' '&'    right '='  preclow rule  target: progn         | /* none */ { result = 0 }        ;	# note result = val[0] by default  exp: exp '+' exp 				{ result = "+#{val[0]}#{val[2]}" }     | exp '-' exp 				{ result = "-#{val[0]}#{val[2]}" }     | exp '*' exp 				{ result = "*#{val[0]}#{val[2]}" }     | exp '/' exp 				{ result = "/#{val[0]}#{val[2]}" }     | exp '%' exp 				{ result = "%#{val[0]}#{val[2]}" }     | exp '^' exp 				{ result = "^#{val[0]}#{val[2]}" }     | exp '=' exp 				{ result = ":#{val[0]}#{val[2]}" }     | exp '>' exp 				{ result = ">#{val[0]}#{val[2]}" }     | exp '<' exp 				{ result = "<#{val[0]}#{val[2]}" }     | '!' exp	   				{ result = "-1#{val[1]}" }     | exp GEQ exp 				{ result = "|>#{val[0]}#{val[2]}=#{val[0]}#{val[2]}" }     | exp LEQ exp 				{ result = "|<#{val[0]}#{val[2]}=#{val[0]}#{val[2]}" }     | exp EQL exp 				{ result = "=#{val[0]}#{val[2]}" }     | exp NEQL exp 			{ result = "-1=#{val[0]}#{val[2]}" }     | exp '&' exp 				{ result = "&#{val[0]}#{val[2]}" }     | exp '|' exp 				{ result = "|#{val[0]}#{val[2]}" }     | IF exp ':' exp 			{ result = "?#{val[1]}#{val[3]}0" }     | IF exp ':' exp ELSE exp  { result = "?#{val[1]}#{val[3]}#{val[5]}" }     | WHILE exp ':' exp 		{ result = "@#{val[1]}#{val[3]}" }     | '(' exp ')' 				{ result = val[1] }     | '-' NUMBER  = UMINUS 	{ result = "-0#{val[1]}" }     | NUMBER 	   				{ result = val[0].to_SADOL }     | STR						{ result = val[0].to_SADOL }	 | PRINT exp				{ result = "!#{val[1]}" }	 | INCLUDE STR				{ result = File.new(val[1]).readlines.to_s }	 | IN '(' what ')'			{ result = ";#{val[2]}" }	 | IN 						{ result = ';3' } 	 | CHR						{ result = '\'' } 	 | FLOOR					{ result = '\\' }	 | EVAL				    	{ result = '`' }     | ID '(' list ')'			{ result = "#{val[0]}#{val[2].to_s}"}     | ID GRD '(' list ')'		{ result = "#{val[0]}#{val[3].length.to_SADOL}#{val[3].to_s}"}     | FUN ID ':' exp ':' exp   { result = "~#{val[1]}#{val[3]}#{val[5]}"}      | FUN ID GRD exp      		{ result = "~#{val[1]}-01#{val[3]}"}      | '[' list ']'				{ result = "$#{val[1].length.to_SADOL}#{val[1].to_s}";}     | '{' progn '}'			{ result = "(#{val[1].length.to_SADOL}#{val[1].to_s}";}     | exp '[' exp ']'			{ result = "##{val[0]}#{val[2]}" }     | '@' exp					{ result = "##{val[1]}-01"}     | LITERAL					     | ID						     ; progn: exp ';' progn			{ result = [val[0],val[2]].flatten }       | exp						{ result = [val[0]] }      ;       list: exp ','	list			{ result = [val[0],val[2]].flatten }       | exp						{ result = [val[0]] }      ;        what : CH {result = "0"} | INT {result = "1"} | DBL {result = "2"} | STRI {result = "3"} ;      end