A Scripting Language for Web, Linux and Windows

A Scripting Language for Web, Linux and Windows

The <?v1 ?> tag

<h1>Outside of the code</h1>
<?
v1 
    
/* All code is within the v1 tags. */ 
?>
<p>All outside text will be displayed. You can define multiple <?v1 print ("V1"); ?> elements.</p>
<p>You also can mix <?v1 for (i=0;i<10;i++) { print ("V1");  ?>and outside code<?v1 } ?> in loops.</p>

Operations

Arithmetic operations:

<?v1
a 
= 10;
b = 5.5;
c = a+b; // Addition
c = a-b; // Subtraction
c = a*b; // Multiplication
c = a/b; // Division (floating point result)
c = a%b; // Modulo
c = a**3; // Power, pow (a,3)

a++;  // Increment, a=a+1
a+=10; // Increment with offset, a=a+10
a--; // Decrement, a=a-1
a-=10; // Decrement with offset, a=a-10
++a==10;--a==10; // Increment / Decrement before comparison, a++; a==10;
a*=3; // Multiplication, a=a*3
a**=3; // Power, a=a**3
a/=3; // Division, a=a/3
?>

Comparison:

<?v1
a 
= 10;
a==10; // Comparison, if a is equal 10 then the expression will be true
a!=10; // Unequal, if a is not equal 10 then the expression will be true
a<10; // Lower, if a is lower 10 then the expression will be true
a>10; // Greater, if a is greater 10 then the expression will be true
a<=10; // Lower or equal, if a is lower or equal 10 then the expression will be true
a>=10; // Greater or equal, if a is greater or equal 10 then the expression will be true
?>

Comparison with strict datatypes:

V1 has two operators for strict comparison (same as in PHP). If you need to check if the value and the datatype are equal or unequal, use the === operator or !== operator.

See Datatypes

Logical operations:

<?v1
a 
= true;
b = false;
a && b; // Logical AND, if a and b are true or not 0 then the expression will be true
a || b; // Logical OR, if a or b is true or not 0 then the expression will be true
!a; // Negation, if a is false or 0 then the expression will be true
?>

Binary operations:

<?v1
a 
= 0x80;
b = a & 0x80; // Binary AND, b will be 0x80
b = a | 0x01; // Binary OR, b will be 0x00
b = a ^ 0x81;  // Binary XOR, b will be 0x01
b = ~a; // Binary NEGATION, b will be 0x7F
b = a >> 1; // Binary SHIFT RIGHT, a will be shifted 1 bit to right, b will be 0x40
b = a << 2; // Binary SHIFT LEFT, a will be shifted 2 bits to left, b will be 0x200
// All binary operations can be written in assignment mode like:
a&=0x80;
?>

String concatenate:

<?v1
a 
= "String 1";
b = "String 2";
c = a." ".b; // To concatenate two or more strings use the '.' operator. Dont use the '+' operator!
c.=" Another String"; 
?>

Kewords

The Language Syntax is derivied from C, PHP and Javascript. That means, every Statement is finished with a semicolon ; But you can append multiple Expressions with comma within a Statement.

<?v1
// Statement with semicolon on the end
print ("Hello World");

// Multiple Expressions in one Statement separated with comma 
a = 10, b=11, c=12, print (c);

// Statements can be summarized with { } brackets.
{ a=10; b=11; c=12; }
?>

The 'if' and 'else' keyword (decisions):

<?v1
a 
= 10;
// Simple decision
if (a==10) 
    print (
'a is 10');

// Decision with else
if (a==10) {  print ('a is 10'); } else {  print ('a is not 10'); }

// Combine multiple if and else
if (a==10)
    print (
'a is 10');  
else 
if (
a==11)
    print (
'a is 11'); 
else 
    print (
'a is not 10 and not 11'); 
?>

The '?' and ':' keyword (assignment decisions):

<?v1
a 
= 10;
// b will get the value 11 if a is 10, otherwise 12
b = a==10 ? 11 : 12;
?>

The 'for' keyword (loops):

<?v1
for (a=1;a<10;i++) print ("a is ".a); 
?>

The 'while' keyword (loops):

<?v1
a
=10;
while (
a>0) { print ("a is greater than 0"); a--; }
?>

The 'do' and 'while' keyword (loops):

<?v1
a
=10;
do {
    print (
"a is greater than 0");
} while (
a-->0);
?>

The 'break' keyword (loops):

<?v1
a
=10;
do {
  print (
"a is greater than 0");
  if (
a>5)
    break; 
// Break the current loop
} while (a-->0);
?>

The 'switch' keyword (decisions):

<?v1
a
=10;
switch (
a) {
    case 
10:
    print (
'a is 10');
    break;

    case 
11:
    print (
'a is 11');
    break;

    case 
12:;
    case 
13:
    print (
'a is 12 or 13');
    break;

    default:
    print (
'a is not 10, 11, 12, 13');
    break;
}
?>

The 'foreach' keyword (loop through Arrays):

Note! foreach will duplicate the array internally for thread safety, so it is not the performantest way to loop through verry big arrays.

<?v1
// Iterate a simple array (list)
a=array (10.2, true, "String", array ("Sub Array"));
foreach (
a as value) {
    
print_r (value);
}

// Iterate a key/value array
a=array ("KEY"=>"VALUE", "KEY2"=>"VALUE2", "KEY3"=>"VALUE3");
foreach (
a as key => value) {
    print (
'Key is '.key);
    
print_r (value);
}
?>

Functions

V1 is a functional language. No object orientated programming and no classes are possible.

The 'function' keyword (define Functions):

<?v1
function myFunction (param1, param2=11) {
    
localVar = 10;
    print (
'myFunction was called with param1=', param1, 'and param2=', param2, ', localVar=', localVar);
}
// Call function with first parameter, second paramater has default value!
myFunction (10);
?>

Parameters as References:

Parameters can be marked with & as references to variables (like in PHP). Otherwise the variable will be duplicated into the parameter.

<?v1
globalVar 
= 10;
function 
myFunction (&param) {
    
param = 11;
}
myFunction (globalVar); // globalVar is given as reference
print (globalVar); // will output 11
?>

The 'global' keyword (Scope of Variables):

Global variables are not visible for functions. Functions can make global variables visible with keyword global.

<?v1
globalVar 
= 1;

function 
myFunction () {
    
globalVar = 3; // Global variable will not be overwritten
}

function 
myFunction2 () {
    global 
globalVar; 
    
globalVar = 2; // Global variable will be overwritten
    
localVar = 3; // Local variable
}
myFunction ();
print (
globalVar); // will output 1

myFunction2 ();
print (
globalVar); // will output 2
?>

Constants

Constants can be defined with keyword const. Constants are visible in every scope and cannot be overwritten after definition.

<?v1
const PI  = 3.14159265359;
const 
DEG = PI/180.0;
const 
RAD = 180.0/PI;
const 
PI2 = 2*PI;

function 
myFunction () {
    print (
"PI=", PI);
}

myFunction (); // Will output 3.14159265359
?>

Special Constants

__FILE__ = Current V1 file
__LINE__ = Current line number
_ALIGN = System default byte align (4 on 32 Bit versions, 8 on 64 Bit versions of V1)

back to Home

V1 Version 0.96 - Documentation generated Mon, 10 Nov 2025 18:18