# CV(N)(C)

CV(N)(C) is an esoteric programming language based on the International Phonetic Alphabet and created by User:PythonshellDebugwindow. Its goal is to be pronounceable.

## Memory

CV(N)(C) uses an unbounded unsigned integer accumulator, a deque of unbounded unsigned integers, and a function from unbounded unsigned integers to unbounded unsigned integers.

## Syntax

CV(N)(C)'s source code is made up of IPA symbols. The language's syllable structure is CV(N)(C), where C is any non-nasal consonant, V is any vowel, and N is any nasal consonant.

For example, su, suŋ, and suŋs are valid programs, and so is suŋsu, but susŋ is not, as its structure is CVCN, which can't be broken up into valid syllables.

## Commands

### Consonants

Fricatives manage I/O; plosives manage the function; and approximants manage control flow.

IPA Command
Fricatives
/θ/ Print the accumulator as an integer
/f/ Print the accumulator modulo 256 as an ASCII character with no newline after it
/s/ Input an integer to the accumulator
/ʒ/ Input an ASCII character to the accumulator (if Unicode, then modulo it by 256)
Plosives
/p/ Pop from the front of the deque and append it to the function
/k/ Pop from the back of the deque and append it to the function
/d/ Append ${\displaystyle a}$ (a reference to the accumulator) to the function
/b/ Append a plus sign (${\displaystyle +}$) to the function
/t/ Append a minus sign (${\displaystyle -}$) to the function
/ɡ/ Append a multiplication sign (${\displaystyle \times }$) to the function
/q/ Append a division sign (${\displaystyle \div }$) to the function
/ʔ/ Append a left parenthesis (${\displaystyle (}$) to the function
/ʡ/ Append a right parenthesis (${\displaystyle )}$) to the function
/c/ Reset the function to ${\displaystyle f=}$, the function's default
Approximants
/ɹ/ Goto the accumulator-th character in the source code, zero-indexed
/j/ Goto the accumulator-th syllable in the source code, zero-indexed
/ɰ̊/ Begin a while loop: if the accumulator is equal to zero, jump to the matching /ʋ/
/ɰ/ Begin a while loop: if the accumulator is not equal to zero, jump to the matching /ʋ/
/ʋ/ End a while loop: jump back to the matching /ɰ̊/ or /ɰ/

### Vowels

Vowels modify the accumulator.

IPA Command
/i/ Increment the accumulator
/ə/ Decrement the accumulator if it is greater than zero
/æ/ Square the accumulator
/o/ Square-root and floor the accumulator (${\displaystyle a=\left\lfloor {\sqrt {a}}\right\rfloor }$)
/u/ Set the accumulator to the result of applying the function to the accumulator (${\displaystyle a=f(a)}$) if the function is valid, else do nothing

### Nasal consonants

Nasal consonants operate on the deque.

IPA Command
/m/ Push the accumulator to the front of the deque
/n/ Push the accumulator to the back of the deque
/ŋ/ Pop the front of the deque into the accumulator
/ɲ/ Pop the back of the deque into the accumulator

## Examples

### "HI"

I am too lazy to write a proper Hello, world! program.

didididædədædidididididididifif


### Hello, world!

cicidigæducədəcədəcədəcədəcəfodigiducificiʔiciʔicidifufiʡiʡifocədəgəduqəʔəcədəgəfoduʡəʡəʡəcəfodogiducidigædəbəfodubifiditifoducədəfogæfodufoboʔidiʡuʔiʔicif


### Cat program

ʒuɰ̊fuʒʋu


### Truth-machine

soθɰ̊oθʋi