Abkürzungen / Parser-Levels

Parser-Levels

JayMo bietet verschiedene Parser-Levels, in denen programmiert werden kann. Je strenger das Level, desto mehr Möglichkeiten und Abkürzungen sind deaktiviert. Dafür wird allerdings auch der Quellcode klarer und sauberer.

Die Level sind:

  • open
  • low
  • medium / strict
  • high
  • insane

Somit ist all das, was unter "insane" verfügbar ist, auch in "open" verfügbar. Jedoch natürlich noch sehr viel mehr.

"strict" ist ein Alias für "medium".

Info:
"Open" ist der Standard und vor allem für schnelles skripten geeignet. Für umfangreichere Projekte wird "strict" empfohlen.

Definition

Die Parser-Level müssen wie alle Parser-Befehle am Anfang der Datei stehen. Ebenso beginnen sie mit einem '>', gefolgt vom jeweiligen Level.

>strict

Beispiele

Hier die Levels mit Bubblesort und ein paar Zeilen zum Auswerten veranschaulicht.

Open

Standard-Modus, geeignet für schnelles und sehr schlankes skripten.

::bubble( list )
	dirty = true
	While( dirty )
		dirty = false
		{ 1, list.len - 1 } => pos
			( list[ pos ] > list[ pos + 1 ] )
				list.swap( pos, pos + 1 )
				dirty = true


l = [3,9,7,1,4,6,1,9,8,5,5,2]
l.print
°bubble( l )
l.each
	( ( it+1 ) * 10 ).print

Strict

Für etwas größere Projekte und klareren Code.

>strict

::bubble( List list )
	dirty = true
	While( dirty )
		dirty = false
		Count( 1, list.len - 1 ) \\ :pos
			If( list[ pos ] > list[ pos + 1 ] )
				list.swap( pos, pos + 1 )
				dirty = true


l = [3,9,7,1,4,6,1,9,8,5,5,2]
l.print
this.bubble( l )
l.each
	( ( it + 1 ) * 10 ).print

VeryScript

Für noch klareren Code, ohne Abkürzungen.

>high

::bubble( List list ) Nil
	dirty = true
	While( dirty ).then
		dirty = false
		Count( 1, list.len - 1 ).each( :pos )
			If( list.get( pos ) > list.get( pos + 1 ) ).then
				list.swap( pos, pos + 1 )
				dirty = true


l = List( 3,9,7,1,4,6,1,9,8,5,5,2 )
l.print
this.bubble( l )
l.each
	( ( it+1 ) * 10 ).print	

Insane

In diesem Level werden alle Vereinfachungen deaktiviert. So sind z.B. auch keine mathematischen Zeichen (+-*/=) mehr erlaubt, weshalb die Funktionsnamen wie .add .sub .mul .div .let verwendet werden müssen.

>insane

::bubble( List list ) Nil
 	dirty.let(true)
	While( dirty ).then
		dirty.let( false )
		Count( 1, list.len.sub( 1 ) ).each(:pos)
			If( list.get( pos ).isGreater( list.get( pos.add( 1 ) ) ) ).then
				list.swap( pos, pos.add( 1 ) )
				dirty.let( true )


l.let( List( 3,9,7,1,4,6,1,9,8,5,5,2 ) )
l.print
this.bubble( l )
l.each
	Group( Group( it.add( 1 ) ).get.mul( 10 ) ).get.prin
- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €