Skip to content

Instantly share code, notes, and snippets.

View flaviut's full-sized avatar

Flaviu Tamas flaviut

View GitHub Profile
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language
name="Nimrod"
version="1.0"
kateversion="2.4"
section="Sources"
extensions="*.nim"
mimetype="text/x-nimrod">
import winlean, os, asyncdispatch, tables, sets, strutils
type
AlignedBuffer = tuple[base, start: pointer]
FileEvent* = enum
feFileCreated
feFileRemoved
feFileModified
feNameChangedNew
diff --git a/compiler/parser.nim b/compiler/parser.nim
index 2f9deb6..01727c2 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -147,8 +147,10 @@ proc expectIdent(p: TParser) =
proc eat(p: var TParser, tokType: TTokType) =
## Move the parser to the next token if the current token is of type
## `tokType`, otherwise error.
- if p.tok.tokType == tokType: getTok(p)
- else: lexMessage(p.lex, errTokenExpected, TokTypeToStr[tokType])
diff --git a/compiler/parser.nim b/compiler/parser.nim
index 2f9deb6..01727c2 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -147,8 +147,10 @@ proc expectIdent(p: TParser) =
proc eat(p: var TParser, tokType: TTokType) =
## Move the parser to the next token if the current token is of type
## `tokType`, otherwise error.
- if p.tok.tokType == tokType: getTok(p)
- else: lexMessage(p.lex, errTokenExpected, TokTypeToStr[tokType])
use std::io::stdio::println;
fn fib(n: i64) -> Option<i64> {
if n <= 1 {
return Some(n);
} else {
return Some(fib(n-1).unwrap() + fib(n-2).unwrap());
}
}
const
representativeChars = ['m', 'N', '5', '"', '\'', ' ']
startingSeq = (var result = newSeq[string](representativeChars.len);
for i, v in representativeChars:(
result[i] = $v;
);
result)
vs
import unsigned, strutils
## A random number generator with 1024 bits of state.
## Very high performance
type
TRandState* {.final, pure, acyclic.} = object
data*: array[16, int64]
pos*: range[0..15]
proc next(state: var TRandState): int64 =
import macros
macro teststrval(e: expr): string =
echo e.strVal
result = e
discard teststrval("asd")
type
Foo = object
a: int
b: string
proc fnew[T](obj: T): ref T =
new(result)
{.emit: "memcpy((void*) `result`, (void*)(&`obj`), (NI) sizeof(`obj`));\n".}
let a = fnew Foo(a : 1, b : "asd")
type
Foo = object
a: int
b: string
proc fnew[T](obj: T): ref T =
new(result)
{.emit: "memcpy((void*) `result`, (void*)(&`obj`), (NI) sizeof(`obj`));\n".}
let a = fnew Foo(a : 1, b : "asd")