mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tools: add v ast file.v
(#10236)
This commit is contained in:
1
cmd/tools/vast/test/.gitignore
vendored
Normal file
1
cmd/tools/vast/test/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
demo.json
|
110
cmd/tools/vast/test/demo.v
Normal file
110
cmd/tools/vast/test/demo.v
Normal file
@ -0,0 +1,110 @@
|
||||
// usage test: v ast path_to_v/cmd/tools/vast/test/demo.v
|
||||
// will generate demo.json
|
||||
|
||||
// comment for module
|
||||
module main
|
||||
|
||||
// import module
|
||||
import os
|
||||
import math
|
||||
import time { Time, now }
|
||||
|
||||
// const decl
|
||||
const (
|
||||
a = 1
|
||||
b = 3
|
||||
c = 'c'
|
||||
)
|
||||
|
||||
// struct decl
|
||||
struct Point {
|
||||
x int
|
||||
mut:
|
||||
y int
|
||||
pub:
|
||||
z int
|
||||
pub mut:
|
||||
name string
|
||||
}
|
||||
|
||||
// method of Point
|
||||
pub fn (p Point) get_x() int {
|
||||
return p.x
|
||||
}
|
||||
|
||||
// embed struct
|
||||
struct MyPoint {
|
||||
Point
|
||||
title string
|
||||
}
|
||||
|
||||
// enum type
|
||||
enum Color {
|
||||
red
|
||||
green
|
||||
blue
|
||||
}
|
||||
|
||||
// type alias
|
||||
type Myint = int
|
||||
|
||||
// sum type
|
||||
type MySumType = bool | int | string
|
||||
|
||||
// function type
|
||||
type Myfn = fn (int) int
|
||||
|
||||
// interface type
|
||||
interface Myinterfacer {
|
||||
add(int, int) int
|
||||
sub(int, int) int
|
||||
}
|
||||
|
||||
// main funciton
|
||||
fn main() {
|
||||
add(1, 3)
|
||||
println(add(1, 2))
|
||||
println('ok') // comment println
|
||||
arr := [1, 3, 5, 7]
|
||||
for a in arr {
|
||||
println(a)
|
||||
add(1, 3)
|
||||
}
|
||||
color := Color.red
|
||||
println(color)
|
||||
println(os.args)
|
||||
m := math.max(1, 3)
|
||||
println(m)
|
||||
println(now())
|
||||
t := Time{}
|
||||
println(t)
|
||||
p := Point{
|
||||
x: 1
|
||||
y: 2
|
||||
z: 3
|
||||
}
|
||||
println(p)
|
||||
my_point := MyPoint{
|
||||
// x: 1
|
||||
// y: 3
|
||||
// z: 5
|
||||
}
|
||||
println(my_point.get_x())
|
||||
}
|
||||
|
||||
// normal function
|
||||
fn add(x int, y int) int {
|
||||
return x + y
|
||||
}
|
||||
|
||||
// generic function
|
||||
fn g_fn<T>(p T) T {
|
||||
return p
|
||||
}
|
||||
|
||||
// generic struct
|
||||
struct GenericStruct<T> {
|
||||
point Point
|
||||
mut:
|
||||
model T
|
||||
}
|
Reference in New Issue
Block a user