---input--- include /* Multiline comment */ egg(1500); // Single line comment // TODO: add a line module egg(length, start=-1000, end=-1000) { rotate_extrude() translate([0, -length/2, 0]) rotate([0, 0, 90]) polygon(egg_half_poly( length, start == -1000 ? 0 : start, end == -1000 ? length : end )); } function egg_half_poly(length, start, end) = concat( [[start, 0]], [for (x=[start : (release ? 0.5 : 1) : end]) [x, egg_eq(x - length/2, length)]], [[end, 0]] ); function egg_eq(x, length) = length / 1.25 / 2 * sqrt( (length * length - 4 * x * x) / (length * length + 8 * egg_w * x + 4 * egg_w * egg_w) ); ---tokens--- 'include' Keyword.Namespace ' ' Text '<' Punctuation 'threads.scad' Comment.PreprocFile '>' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace '/*' Comment.Multiline '\n Multiline comment\n' Comment.Multiline '*/' Comment.Multiline '\n' Text.Whitespace '\n' Text.Whitespace 'egg' Name '(' Punctuation '1500' Literal.Number ')' Punctuation ';' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace '//' Comment.Single ' Single line comment' Comment.Single '\n' Text '//' Comment.Single ' TODO: add a line' Comment.Single '\n' Text '\n' Text.Whitespace 'module' Keyword.Namespace ' ' Text.Whitespace 'egg' Name.Namespace '(' Punctuation 'length' Name ',' Punctuation ' ' Text.Whitespace 'start' Name '=' Operator '-' Operator '1000' Literal.Number ',' Punctuation ' ' Text.Whitespace 'end' Name '=' Operator '-' Operator '1000' Literal.Number ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'rotate_extrude' Name.Builtin '(' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'translate' Name.Builtin '(' Punctuation '[' Punctuation '0' Literal.Number ',' Punctuation ' ' Text.Whitespace '-' Operator 'length' Name '/' Operator '2' Literal.Number ',' Punctuation ' ' Text.Whitespace '0' Literal.Number ']' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'rotate' Name.Builtin '(' Punctuation '[' Punctuation '0' Literal.Number ',' Punctuation ' ' Text.Whitespace '0' Literal.Number ',' Punctuation ' ' Text.Whitespace '90' Literal.Number ']' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'polygon' Name.Builtin '(' Punctuation 'egg_half_poly' Name '(' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'length' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'start' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace '-' Operator '1000' Literal.Number ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace '0' Literal.Number ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'start' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'end' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace '-' Operator '1000' Literal.Number ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace 'length' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'end' Name '\n' Text.Whitespace ' ' Text.Whitespace ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace 'function' Keyword.Declaration ' ' Text.Whitespace 'egg_half_poly' Name.Function '(' Punctuation 'length' Name ',' Punctuation ' ' Text.Whitespace 'start' Name ',' Punctuation ' ' Text.Whitespace 'end' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '\n' Text.Whitespace ' ' Text.Whitespace 'concat' Name.Builtin '(' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '[' Punctuation '[' Punctuation 'start' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number ']' Punctuation ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '[' Punctuation 'for' Keyword ' ' Text.Whitespace '(' Punctuation 'x' Name '=' Operator '[' Punctuation 'start' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '(' Punctuation 'release' Name ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace '0.5' Literal.Number ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '1' Literal.Number ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'end' Name ']' Punctuation ')' Punctuation ' ' Text.Whitespace '[' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'egg_eq' Name '(' Punctuation 'x' Name ' ' Text.Whitespace '-' Operator ' ' Text.Whitespace 'length' Name '/' Operator '2' Literal.Number ',' Punctuation ' ' Text.Whitespace 'length' Name ')' Punctuation ']' Punctuation ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '[' Punctuation '[' Punctuation 'end' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number ']' Punctuation ']' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace ')' Punctuation ';' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace 'function' Keyword.Declaration ' ' Text.Whitespace 'egg_eq' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'length' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '\n' Text.Whitespace ' ' Text.Whitespace 'length' Name ' ' Text.Whitespace '/' Operator ' ' Text.Whitespace '1.25' Literal.Number ' ' Text.Whitespace '/' Operator ' ' Text.Whitespace '2' Literal.Number ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'sqrt' Name.Builtin '(' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '(' Punctuation 'length' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'length' Name ' ' Text.Whitespace '-' Operator ' ' Text.Whitespace '4' Literal.Number ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'x' Name ')' Punctuation ' ' Text.Whitespace '/' Operator '\n' Text.Whitespace ' ' Text.Whitespace '(' Punctuation 'length' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'length' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '8' Literal.Number ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'egg_w' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '4' Literal.Number ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'egg_w' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'egg_w' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace ')' Punctuation ';' Punctuation '\n' Text.Whitespace