\contentsline {chapter}{\numberline {1}Introduction}{4}{chapter.1}
\contentsline {chapter}{\numberline {2}Language Tutorial}{5}{chapter.2}
\contentsline {section}{\numberline {2.1}Introduction}{5}{section.2.1}
\contentsline {section}{\numberline {2.2}Installing}{5}{section.2.2}
\contentsline {section}{\numberline {2.3}Writing your first Synapse programs}{5}{section.2.3}
\contentsline {section}{\numberline {2.4}Activation Functions}{6}{section.2.4}
\contentsline {section}{\numberline {2.5}Kernel Functions}{6}{section.2.5}
\contentsline {section}{\numberline {2.6}Modules and Neurons}{6}{section.2.6}
\contentsline {chapter}{\numberline {3}Language Manual}{8}{chapter.3}
\contentsline {section}{\numberline {3.1}Document Conventions}{8}{section.3.1}
\contentsline {section}{\numberline {3.2}Lexical Conventions}{8}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Comments}{8}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Identifiers}{8}{subsection.3.2.2}
\contentsline {subsection}{\numberline {3.2.3}Keywords}{8}{subsection.3.2.3}
\contentsline {subsection}{\numberline {3.2.4}Constants}{9}{subsection.3.2.4}
\contentsline {subsubsection}{Integer Constants}{9}{section*.2}
\contentsline {subsubsection}{Float Constants}{9}{section*.3}
\contentsline {subsubsection}{Built-in Constants}{9}{section*.4}
\contentsline {subsection}{\numberline {3.2.5}Program Parameters}{9}{subsection.3.2.5}
\contentsline {section}{\numberline {3.3}Program}{9}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Module Definition}{9}{subsection.3.3.1}
\contentsline {subsection}{\numberline {3.3.2}Function Definitions}{10}{subsection.3.3.2}
\contentsline {subsubsection}{Activation Function Definitions}{10}{section*.5}
\contentsline {subsubsection}{Kernel Function Definition}{11}{section*.6}
\contentsline {subsection}{\numberline {3.3.3}Inter-Module Synaptic Connections}{11}{subsection.3.3.3}
\contentsline {section}{\numberline {3.4}Expressions}{11}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Primary expressions}{12}{subsection.3.4.1}
\contentsline {subsection}{\numberline {3.4.2}Convolution operator}{13}{subsection.3.4.2}
\contentsline {subsubsection}{ {\it expression} \texttt {\bf **} {\it kernel-call} }{13}{section*.7}
\contentsline {subsection}{\numberline {3.4.3}Unary operator}{13}{subsection.3.4.3}
\contentsline {subsubsection}{ \texttt {\bf -} {\it expression}}{13}{section*.8}
\contentsline {subsection}{\numberline {3.4.4}Exponential operator}{13}{subsection.3.4.4}
\contentsline {subsubsection}{{\it expression-1} \texttt {\bf \textasciicircum } {\it expression-2}}{13}{section*.9}
\contentsline {subsection}{\numberline {3.4.5}Multiplicative operators}{13}{subsection.3.4.5}
\contentsline {subsubsection}{{\it expression-1} \texttt {\bf *} {\it expression-2}}{13}{section*.10}
\contentsline {subsubsection}{{\it expression-1} \texttt {\bf /} {\it expression-2}}{13}{section*.11}
\contentsline {subsection}{\numberline {3.4.6}Additive operators}{14}{subsection.3.4.6}
\contentsline {subsubsection}{{\it expression-1} \texttt {\bf +} {\it expression-2}}{14}{section*.12}
\contentsline {subsubsection}{{\it expression-1} \texttt {\bf -} {\it expression-2}}{14}{section*.13}
\contentsline {section}{\numberline {3.5}Function Calls}{14}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Built-in functions}{14}{subsection.3.5.1}
\contentsline {subsubsection}{sin}{14}{section*.14}
\contentsline {subsubsection}{cos}{14}{section*.15}
\contentsline {subsubsection}{exp}{14}{section*.16}
\contentsline {subsection}{\numberline {3.5.2}User-defined functions}{14}{subsection.3.5.2}
\contentsline {section}{\numberline {3.6}Macros}{14}{section.3.6}
\contentsline {subsection}{\numberline {3.6.1}\texttt {\bf for} macro}{14}{subsection.3.6.1}
\contentsline {subsection}{\numberline {3.6.2}\texttt {\bf size} macro}{15}{subsection.3.6.2}
\contentsline {section}{\numberline {3.7}Scope}{15}{section.3.7}
\contentsline {section}{\numberline {3.8}Concurrency}{15}{section.3.8}
\contentsline {section}{\numberline {3.9}Future Additions}{16}{section.3.9}
\contentsline {chapter}{\numberline {4}Project Plan}{17}{chapter.4}
\contentsline {section}{\numberline {4.1}Process}{17}{section.4.1}
\contentsline {section}{\numberline {4.2}Style Guide and Naming Conventions}{17}{section.4.2}
\contentsline {section}{\numberline {4.3}Project Timeline}{18}{section.4.3}
\contentsline {section}{\numberline {4.4}Development Environment}{18}{section.4.4}
\contentsline {section}{\numberline {4.5}Project Log}{19}{section.4.5}
\contentsline {chapter}{\numberline {5}Architectural Design}{43}{chapter.5}
\contentsline {chapter}{\numberline {6}Test Plan}{45}{chapter.6}
\contentsline {chapter}{\numberline {7}Lessons Learned}{46}{chapter.7}
\contentsline {chapter}{\numberline {A}Compiler Source}{47}{appendix.A}
\contentsline {section}{\numberline {A.1}scanner.mll}{47}{section.A.1}
\contentsline {section}{\numberline {A.2}parser.mly}{48}{section.A.2}
\contentsline {section}{\numberline {A.3}ast.mli}{52}{section.A.3}
\contentsline {section}{\numberline {A.4}sast.ml}{53}{section.A.4}
\contentsline {section}{\numberline {A.5}validate.ml}{56}{section.A.5}
\contentsline {section}{\numberline {A.6}translate1.ml}{59}{section.A.6}
\contentsline {section}{\numberline {A.7}translate2.ml}{69}{section.A.7}
\contentsline {section}{\numberline {A.8}params.ml}{77}{section.A.8}
\contentsline {section}{\numberline {A.9}ppm.ml}{80}{section.A.9}
\contentsline {section}{\numberline {A.10}types.mli}{81}{section.A.10}
\contentsline {section}{\numberline {A.11}synap.ml}{82}{section.A.11}
\contentsline {chapter}{\numberline {B}Tests}{88}{appendix.B}
\contentsline {section}{\numberline {B.1}Test test-afun1}{88}{section.B.1}
\contentsline {section}{\numberline {B.2}Test test-afun2}{88}{section.B.2}
\contentsline {section}{\numberline {B.3}Test test-afun3}{88}{section.B.3}
\contentsline {section}{\numberline {B.4}Test test-afun-chain}{88}{section.B.4}
\contentsline {section}{\numberline {B.5}Test test-constant-e}{89}{section.B.5}
\contentsline {section}{\numberline {B.6}Test test-constant-pi}{89}{section.B.6}
\contentsline {section}{\numberline {B.7}Test test-copy5a}{89}{section.B.7}
\contentsline {section}{\numberline {B.8}Test test-copymat}{89}{section.B.8}
\contentsline {section}{\numberline {B.9}Test test-copymat2}{89}{section.B.9}
\contentsline {section}{\numberline {B.10}Test test-cos}{90}{section.B.10}
\contentsline {section}{\numberline {B.11}Test test-exp}{90}{section.B.11}
\contentsline {section}{\numberline {B.12}Test test-flip5a}{90}{section.B.12}
\contentsline {section}{\numberline {B.13}Test test-flip5b}{90}{section.B.13}
\contentsline {section}{\numberline {B.14}Test test-flip5c}{90}{section.B.14}
\contentsline {section}{\numberline {B.15}Test test-kernel1d}{90}{section.B.15}
\contentsline {section}{\numberline {B.16}Test test-matrixadd}{91}{section.B.16}
\contentsline {section}{\numberline {B.17}Test test-matrixadd2}{91}{section.B.17}
\contentsline {section}{\numberline {B.18}Test test-matrixadd3}{91}{section.B.18}
\contentsline {section}{\numberline {B.19}Test test-matrixexp}{91}{section.B.19}
\contentsline {section}{\numberline {B.20}Test test-matrixfloat-div1}{91}{section.B.20}
\contentsline {section}{\numberline {B.21}Test test-matrixfloat-div2}{92}{section.B.21}
\contentsline {section}{\numberline {B.22}Test test-matrixmatrix-div}{92}{section.B.22}
\contentsline {section}{\numberline {B.23}Test test-matrixnegate}{92}{section.B.23}
\contentsline {section}{\numberline {B.24}Test test-module1}{92}{section.B.24}
\contentsline {section}{\numberline {B.25}Test test-module1a}{92}{section.B.25}
\contentsline {section}{\numberline {B.26}Test test-scalaraddf}{93}{section.B.26}
\contentsline {section}{\numberline {B.27}Test test-scalaraddi}{93}{section.B.27}
\contentsline {section}{\numberline {B.28}Test test-scalararithmetic1}{93}{section.B.28}
\contentsline {section}{\numberline {B.29}Test test-scalararithmetic2}{93}{section.B.29}
\contentsline {section}{\numberline {B.30}Test test-scalarcopy}{93}{section.B.30}
\contentsline {section}{\numberline {B.31}Test test-scalarpowdiff}{94}{section.B.31}
\contentsline {section}{\numberline {B.32}Test test-sin}{94}{section.B.32}
\contentsline {section}{\numberline {B.33}Test test-temporaloffset}{94}{section.B.33}
\contentsline {section}{\numberline {B.34}Test fail-afun-mat}{94}{section.B.34}
\contentsline {section}{\numberline {B.35}Test fail-afun-order}{94}{section.B.35}
\contentsline {section}{\numberline {B.36}Test fail-in-out-param}{95}{section.B.36}
\contentsline {section}{\numberline {B.37}Test fail-int-div}{95}{section.B.37}
\contentsline {section}{\numberline {B.38}Test fail-for-1}{95}{section.B.38}
\contentsline {section}{\numberline {B.39}Test fail-for-1b}{95}{section.B.39}
\contentsline {section}{\numberline {B.40}Test fail-module1a1}{95}{section.B.40}
\contentsline {section}{\numberline {B.41}Test fail-module1a2}{96}{section.B.41}
\contentsline {section}{\numberline {B.42}Test fail-noinput}{96}{section.B.42}
\contentsline {section}{\numberline {B.43}Test fail-timing}{96}{section.B.43}
\contentsline {section}{\numberline {B.44}Test fail-reserved-word-t}{96}{section.B.44}
\contentsline {section}{\numberline {B.45}Test fail-reserved-word-end}{96}{section.B.45}
